/ database / seeders / DossierSeeder.php
DossierSeeder.php
 1  <?php
 2  
 3  namespace Database\Seeders;
 4  
 5  use App\Enums\RoleEnum;
 6  use App\Http\Services\DossierService;
 7  use App\Models\Certificate;
 8  use App\Models\CertificateInfo;
 9  use App\Models\ContactInfo;
10  use App\Models\Dossier;
11  use App\Models\Entity;
12  use App\Models\EntityUser;
13  use App\Models\Folder;
14  use App\Models\Norm;
15  use App\Models\Resolution;
16  use App\Models\Taxonomy;
17  use App\Models\User;
18  use Illuminate\Database\Seeder;
19  use Illuminate\Support\Facades\DB;
20  use Illuminate\Support\Str;
21  
22  class DossierSeeder extends Seeder
23  {
24      /**
25       * Seed the application's database.
26       *
27       * @return void
28       */
29      public function run()
30      {
31          $userId = User::first()->id;
32  
33          $entity = Entity::create([
34              'entity_type_id' => 3,
35              'code' => 345,
36              'name' => 'Samsung',
37              'nif' => Str::random(25),
38              'legal_name' => 'Samsung Inc.',
39          ]);
40  
41          ContactInfo::factory()->for($entity, 'contactable')->create();
42  
43  
44          $norm = Norm::where('version', 'v3.1R5')->first();
45          $taxonomy = Taxonomy::inRandomOrder()->first();
46          $dossierOne = Dossier::create([
47              'code_year' => 2021,
48              'code_seq' => DossierService::getNextCodeByYear(2021),
49              'dossier_type_id' => $taxonomy->dossier_type_id,
50              'dossier_status_id' => 2,
51              'toe_id' => 1,
52              'laboratory_id' => 1,
53              'norm_id' => $norm->id,
54              'norm_scope_id' => $norm->scopes->first()->id,
55              'principal_certifier_id' => User::where('name', 'worker')->first()->id,
56          ]);
57          $dossierOne->toe->st()->associate(1);
58          $certificate = Certificate::factory()->for($dossierOne, 'dossier')->create();
59          CertificateInfo::factory()->for($dossierOne, 'dossier')->for($certificate)->create();
60  
61          Resolution::factory()->create([
62              'dossier_id' => $dossierOne->id
63          ]);
64  
65          Dossier::all()->each(function ($dossier) {
66              DossierService::createFolders($dossier->id, User::first()->id);
67          });
68  
69          DossierService::addTaxonomy($dossierOne, $taxonomy);
70  
71          if (app()->environment('local', 'testing')) {
72              $dossier = Dossier::first();
73              $normRandom = Norm::first();
74  
75              $dossier->norm_id = $normRandom->id;
76              $dossier->save();
77          }
78      }
79  }