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 }