Files

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,
]);
}
}