/ database / seeders / NotificationSeeder.php
NotificationSeeder.php
 1  <?php
 2  
 3  namespace Database\Seeders;
 4  
 5  use App\Models\Company;
 6  use App\Models\Document;
 7  use App\Models\Expert;
 8  use App\Models\Laboratory;
 9  use App\Models\Notification;
10  use App\Models\TOE;
11  use App\Models\User;
12  use App\Models\UserType;
13  use Illuminate\Database\Seeder;
14  use Illuminate\Support\Facades\DB;
15  use Illuminate\Support\Facades\Hash;
16  use Illuminate\Support\Str;
17  
18  class NotificationSeeder extends Seeder
19  {
20      /**
21       * Run the database seeds.
22       *
23       * @return void
24       */
25      public function run()
26      {
27          $documents = Document::where('name', 'like', 'NOT%')->get();
28          $documentExt = Document::where('name', 'like', 'EXT%')->get()[0];
29  
30          foreach ($documents as $document) {
31              $revision = $document->head;
32  
33              Notification::create([
34                  'dossier_id' => 1,
35                  'revision_id' => $revision->id,
36                  'notificated_report_id' => $documentExt->id,
37              ]);
38  
39              $document->dossier->update([
40                  'toe_id' => TOE::first()->id,
41                  'applicant_id' => Company::first()->id,
42                  'laboratory_id' => Laboratory::first()->id,
43                  'description' => fake()->sentence(),
44                  'principal_certifier_id' => User::first()->id,
45              ]);
46  
47              $document->head->update([
48                  'approved_by' => User::first()->id,
49              ]);
50  
51              $expert = Expert::factory()->create();
52              $userType = UserType::inRandomOrder()->first();
53              $user = User::create([
54                  'username' => fake()->userName(),
55                  'password' => Hash::make(Str::lower(fake()->userName())),
56                  'user_type_id' => $userType->id,
57                  'personal_identification_number' => fake()->bothify('########?'),
58                  'email' => fake()->email(),
59                  'name' => fake()->name,
60                  'internal_identification_number' => fake()->numerify('####'),
61              ]);
62  
63              DB::table('user_dossier')->insert([
64                  'user_id' => $user->id,
65                  'dossier_id' => $document->dossier->id,
66                  'external' => fake()->boolean(),
67              ]);
68  
69              DB::table('expert_dossier')->insert([
70                  'expert_id' => $expert->id,
71                  'dossier_id' => $document->dossier->id,
72              ]);
73          }
74  
75          // original_name => {fecha americana}_{nombre del dossier}_{nombre del informe}_v-{version}.zip
76          // EXAMPLE = 2021-01-01_2021-01_informe_ATE_v1.0.zip
77      }
78  }