*/ final class ShiftAssignmentFactory extends Factory { /** @return array */ public function definition(): array { return [ 'shift_id' => Shift::factory(), 'person_id' => Person::factory(), 'time_slot_id' => TimeSlot::factory(), 'status' => ShiftAssignmentStatus::PENDING_APPROVAL, ]; } public function configure(): static { return $this->afterCreating(function (ShiftAssignment $assignment): void { $assignment->auto_approved = false; $assignment->assigned_at = now(); $assignment->save(); }); } public function approved(): static { return $this->afterCreating(function (ShiftAssignment $assignment): void { $assignment->status = ShiftAssignmentStatus::APPROVED; $assignment->approved_at = now(); $assignment->save(); }); } public function autoApproved(): static { return $this->afterCreating(function (ShiftAssignment $assignment): void { $assignment->status = ShiftAssignmentStatus::APPROVED; $assignment->auto_approved = true; $assignment->approved_at = now(); $assignment->save(); }); } }