*/ final class AdvanceSectionFactory extends Factory { /** @return array */ public function definition(): array { return [ 'engagement_id' => ArtistEngagement::factory(), 'name' => fake()->randomElement(['Gastenlijst', 'Contacts', 'Productie', 'Catering']), 'type' => fake()->randomElement(AdvanceSectionType::cases()), 'is_open' => false, 'sort_order' => 0, 'submission_status' => AdvanceSectionSubmissionStatus::Open, ]; } public function open(): static { return $this->state(fn () => [ 'is_open' => true, 'open_from' => now()->subDays(7), 'open_to' => now()->addDays(14), 'submission_status' => AdvanceSectionSubmissionStatus::Open, ]); } public function approved(): static { return $this->state(fn () => [ 'submission_status' => AdvanceSectionSubmissionStatus::Approved, 'last_submitted_at' => now()->subDay(), ]); } }