122 lines
3.7 KiB
PHP
122 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Enums\UserEnum;
|
|
use App\Models\Document;
|
|
use App\Models\DocumentAssignment;
|
|
use App\Models\MediaAssignment;
|
|
use App\Models\Medium;
|
|
use App\Models\Pet;
|
|
use App\Models\Report;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class SampleDataSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$admin = User::where('email', 'admin@gmail.com')->first();
|
|
if (!$admin) {
|
|
$admin = User::factory()->create([
|
|
'email' => 'admin@radical.dev',
|
|
'username' => 'admin_dev',
|
|
'level' => UserEnum::Admin->value,
|
|
'fullname' => 'مدیر سیستم',
|
|
]);
|
|
}
|
|
|
|
$supervisor = User::factory()->create([
|
|
'email' => 'supervisor@radical.dev',
|
|
'username' => 'supervisor',
|
|
'level' => UserEnum::Supervisor->value,
|
|
'fullname' => 'سرپرست بخش',
|
|
]);
|
|
|
|
$doctor = User::factory()->create([
|
|
'email' => 'doctor@radical.dev',
|
|
'username' => 'doctor',
|
|
'level' => UserEnum::Doctor->value,
|
|
'fullname' => 'دکتر رادیولوژی',
|
|
]);
|
|
|
|
$owner = User::factory()->create([
|
|
'email' => 'owner@radical.dev',
|
|
'username' => 'owner',
|
|
'level' => UserEnum::Supervisor->value,
|
|
'fullname' => 'صاحب حیوان',
|
|
]);
|
|
|
|
$dog = Pet::factory()->dog()->male()->create([
|
|
'name' => 'رکس',
|
|
'owner_id' => $owner->id,
|
|
]);
|
|
|
|
$cat = Pet::factory()->cat()->female()->create([
|
|
'name' => 'میمی',
|
|
'owner_id' => $owner->id,
|
|
]);
|
|
|
|
$urgentDocument = Document::factory()->urgent()->create([
|
|
'pet_id' => $dog->id,
|
|
'requester_id' => $owner->id,
|
|
]);
|
|
|
|
$completedDocument = Document::factory()->completed()->create([
|
|
'pet_id' => $cat->id,
|
|
'requester_id' => $owner->id,
|
|
'finalized_by' => $supervisor->id,
|
|
]);
|
|
|
|
DocumentAssignment::factory()->radiologist()->create([
|
|
'document_id' => $urgentDocument->id,
|
|
'user_id' => $doctor->id,
|
|
]);
|
|
|
|
DocumentAssignment::factory()->supervisor()->create([
|
|
'document_id' => $urgentDocument->id,
|
|
'user_id' => $supervisor->id,
|
|
]);
|
|
|
|
$imageFile = Medium::factory()->image()->public()->create([
|
|
'filename' => 'xray_dog.jpg',
|
|
]);
|
|
|
|
$documentFile = Medium::factory()->document()->create([
|
|
'filename' => 'medical_history.pdf',
|
|
]);
|
|
|
|
MediaAssignment::factory()->forDocument()->primary()->create([
|
|
'media_id' => $imageFile->id,
|
|
'mediable_id' => $urgentDocument->id,
|
|
'mediable_type' => Document::class,
|
|
]);
|
|
|
|
MediaAssignment::factory()->forDocument()->history()->create([
|
|
'media_id' => $documentFile->id,
|
|
'mediable_id' => $urgentDocument->id,
|
|
'mediable_type' => Document::class,
|
|
]);
|
|
|
|
Report::factory()->draft()->create([
|
|
'document_id' => $urgentDocument->id,
|
|
'doctor_id' => $doctor->id,
|
|
]);
|
|
|
|
$approvedReport = Report::factory()->approved()->create([
|
|
'document_id' => $completedDocument->id,
|
|
'doctor_id' => $doctor->id,
|
|
]);
|
|
|
|
$reportImage = Medium::factory()->image()->create([
|
|
'filename' => 'report_attachment.jpg',
|
|
]);
|
|
|
|
MediaAssignment::factory()->forReport()->attachments()->create([
|
|
'media_id' => $reportImage->id,
|
|
'mediable_id' => $approvedReport->id,
|
|
'mediable_type' => Report::class,
|
|
]);
|
|
}
|
|
}
|