/ database / seeders / ScopeSeeder.php
ScopeSeeder.php
 1  <?php
 2  
 3  namespace Database\Seeders;
 4  
 5  use App\Models\Norm;
 6  use App\Models\NormGroup;
 7  use App\Models\NormScope;
 8  use App\Models\ScopeComponent;
 9  use Illuminate\Database\Console\Seeds\WithoutModelEvents;
10  use Illuminate\Database\Seeder;
11  use Illuminate\Foundation\Testing\WithFaker;
12  
13  class ScopeSeeder extends Seeder
14  {
15      use WithFaker;
16      /**
17       * Run the database seeds.
18       *
19       * @return void
20       */
21      public function run()
22      {
23          $this->seedCCScopes();
24          $this->seedLinceScopes();
25      }
26  
27      private function seedScopeNames(Norm $norm, array $scopeNames)
28      {
29          $mapping = [];
30          foreach ($scopeNames as $name) {
31              array_push($mapping, ['name' => $name, 'description' => '']);
32          }
33          $norm->scopes()->createMany($mapping);
34      }
35  
36      public function seedCCScopes()
37      {
38          $versions = ['v3.1R5', '2022 R1'];
39          $norms = NormGroup::whereName("Common Criteria")->first()
40              ->norms()
41              ->whereIn('version', $versions)
42              ->get();
43          $scopeNames = ['EAL1', 'EAL2', 'EAL3', 'EAL4', 'EAL5', 'EAL6', 'EAL7', 'PP Compliant', 'CAP-A', 'CAP-B', 'CAP-C', 'Otros'];
44  
45          foreach ($norms as $norm) {
46              $this->seedScopeNames($norm, $scopeNames);
47          }
48      }
49  
50      public function seedLinceScopes()
51      {
52          NormGroup::whereName("Lince")->first()
53              ->norms()
54              ->get()
55              ->each(function ($norm) {
56                  $this->seedScopeNames($norm, ['LINCE']);
57              });
58      }
59  }