*/ class AttendanceFactory extends Factory { public function definition(): array { $checkInAt = fake()->dateTimeBetween('-30 days', 'now'); $checkOutAt = (clone $checkInAt)->modify('+'.fake()->numberBetween(4, 9).' hours'); return [ 'employee_id' => Employee::factory(), 'attendance_date' => $checkInAt->format('Y-m-d'), 'check_in_at' => $checkInAt, 'check_out_at' => $checkOutAt, 'check_in_latitude' => fake()->latitude(-7, -6), 'check_in_longitude' => fake()->longitude(106, 107), 'check_out_latitude' => fake()->latitude(-7, -6), 'check_out_longitude' => fake()->longitude(106, 107), 'work_duration_minutes' => fake()->numberBetween(240, 540), ]; } public function checkedInOnly(): static { return $this->state(fn (array $attributes) => [ 'check_out_at' => null, 'check_out_latitude' => null, 'check_out_longitude' => null, 'work_duration_minutes' => null, ]); } }