*/ final class ShiftFactory extends Factory { /** @return array */ public function definition(): array { return [ 'festival_section_id' => FestivalSection::factory(), 'time_slot_id' => TimeSlot::factory(), 'title' => fake()->randomElement([ 'Tapper', 'Tussenbuffet', 'Barhoofd', 'Stage Manager', 'Stagehand', 'Coördinator', 'Runner', ]), 'slots_total' => fake()->numberBetween(1, 10), 'slots_open_for_claiming' => 0, 'status' => 'draft', 'is_lead_role' => false, 'allow_overlap' => false, ]; } public function open(): static { return $this->state(fn () => ['status' => 'open']); } public function withClaiming(int $slots): static { return $this->state(fn () => ['slots_open_for_claiming' => $slots]); } public function allowOverlap(): static { return $this->state(fn () => ['allow_overlap' => true]); } }