*/ final class PersonFactory extends Factory { /** @return array */ public function definition(): array { return [ 'event_id' => Event::factory(), 'crowd_type_id' => CrowdType::factory(), 'first_name' => fake('nl_NL')->firstName(), 'last_name' => fake('nl_NL')->lastName(), 'date_of_birth' => fake()->dateTimeBetween('-40 years', '-18 years')->format('Y-m-d'), 'email' => fake()->unique()->safeEmail(), 'phone' => fake('nl_NL')->phoneNumber(), 'status' => 'pending', 'is_blacklisted' => false, 'custom_fields' => null, ]; } /** * Override create to handle user_id which is not mass-assignable. * * @param array $attributes */ public function create($attributes = [], ?\Illuminate\Database\Eloquent\Model $parent = null): Person|\Illuminate\Database\Eloquent\Collection { $userId = $attributes['user_id'] ?? null; unset($attributes['user_id']); $result = parent::create($attributes, $parent); if ($userId !== null) { $models = $result instanceof Person ? collect([$result]) : $result; $models->each(function (Person $person) use ($userId): void { $person->user_id = $userId; $person->save(); }); } return $result; } public function approved(): static { return $this->state(fn () => ['status' => 'approved']); } public function rejected(): static { return $this->state(fn () => ['status' => 'rejected']); } public function selfRegistered(): static { return $this->state(fn () => ['registration_source' => 'self']); } public function organizerCreated(): static { return $this->state(fn () => ['registration_source' => 'organizer']); } }