complete Complete User Request Submission section RAD-1
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Enums\DocumentStatusEnum;
|
||||
use App\Enums\DocumentPriorityEnum;
|
||||
use App\Models\Pet;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Document>
|
||||
*/
|
||||
class DocumentFactory extends Factory
|
||||
{
|
||||
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'code' => fake()->unique()->numberBetween(100000, 999999),
|
||||
'modality' => fake()->randomElement(['CT', 'MRI', 'X-Ray', 'Ultrasound', 'PET']),
|
||||
'status' => fake()->randomElement(DocumentStatusEnum::cases()),
|
||||
'priority' => fake()->randomElement(DocumentPriorityEnum::cases()),
|
||||
'note' => fake()->optional()->sentence(),
|
||||
'submitted_at' => fake()->optional()->dateTimeBetween('-30 days', 'now'),
|
||||
'scan_date' => fake()->optional()->dateTimeBetween('-30 days', 'now'),
|
||||
'processing_deadline' => fake()->optional()->dateTimeBetween('now', '+30 days'),
|
||||
'finalized_at' => fake()->optional()->dateTimeBetween('-30 days', 'now'),
|
||||
'finalized_by' => fake()->optional()->randomElement(User::pluck('id')->toArray()),
|
||||
'rejection_reason' => fake()->optional()->sentence(),
|
||||
'pet_id' => Pet::factory(),
|
||||
'requester_id' => User::factory(),
|
||||
];
|
||||
}
|
||||
|
||||
public function registered(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'status' => DocumentStatusEnum::Registered,
|
||||
'submitted_at' => now(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function inProgress(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'status' => DocumentStatusEnum::InProgress,
|
||||
'submitted_at' => fake()->dateTimeBetween('-7 days', 'now'),
|
||||
'scan_date' => fake()->dateTimeBetween('-7 days', 'now'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function completed(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'status' => DocumentStatusEnum::Completed,
|
||||
'submitted_at' => fake()->dateTimeBetween('-30 days', '-7 days'),
|
||||
'scan_date' => fake()->dateTimeBetween('-30 days', '-7 days'),
|
||||
'finalized_at' => fake()->dateTimeBetween('-7 days', 'now'),
|
||||
'finalized_by' => User::factory(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function rejected(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'status' => DocumentStatusEnum::Rejected,
|
||||
'submitted_at' => fake()->dateTimeBetween('-30 days', '-7 days'),
|
||||
'rejection_reason' => fake()->sentence(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function high(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'priority' => DocumentPriorityEnum::High,
|
||||
]);
|
||||
}
|
||||
|
||||
public function medium(): static
|
||||
{
|
||||
return $this->state(fn (array $attributes) => [
|
||||
'priority' => DocumentPriorityEnum::Medium,
|
||||
'processing_deadline' => fake()->dateTimeBetween('now', '+3 days'),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user