*/ class ReportFactory extends Factory { public function definition(): array { return [ 'document_id' => Document::factory(), 'doctor_id' => User::factory(), 'medium_id' => fake()->optional()->randomElement(Medium::pluck('id')->toArray()), 'status' => fake()->randomElement(ReportStatusEnum::cases()), 'body' => fake()->optional()->paragraphs(3, true), ]; } public function draft(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::Draft, 'body' => fake()->optional()->paragraph(), 'submitted_at' => now(), ]); } public function inProgress(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::InProgress, 'body' => fake()->paragraphs(2, true), 'submitted_at' => fake()->dateTimeBetween('-30 days', 'now'), ]); } public function completed(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::Completed, 'body' => fake()->paragraphs(4, true), 'submitted_at' => fake()->dateTimeBetween('-30 days', 'now'), ]); } public function reviewed(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::Reviewed, 'body' => fake()->paragraphs(4, true), 'submitted_at' => fake()->dateTimeBetween('-30 days', 'now'), ]); } public function approved(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::Approved, 'body' => fake()->paragraphs(4, true), 'submitted_at' => fake()->dateTimeBetween('-30 days', 'now'), ]); } public function rejected(): static { return $this->state(fn (array $attributes) => [ 'status' => ReportStatusEnum::Rejected, 'body' => fake()->paragraphs(2, true), 'submitted_at' => fake()->dateTimeBetween('-30 days', 'now'), ]); } }