*/ class MemberFactory extends Factory { protected $model = Member::class; /** * Define the model's default state. * * @return array */ public function definition() { return [ 'firstname' => $this->faker->firstName, 'lastname' => $this->faker->lastName, 'birthday' => $this->faker->dateTimeBetween('-30 years'), 'joined_at' => $this->faker->dateTimeBetween('-30 years'), 'send_newspaper' => $this->faker->boolean, 'address' => $this->faker->streetAddress, 'zip' => $this->faker->postcode, 'location' => $this->faker->city, ]; } public function defaults(): self { $country = Country::count() ? Country::get()->random() : Country::factory()->create(); $group = Group::count() ? Group::get()->random() : Group::factory()->create(); $nationality = Nationality::count() ? Nationality::get()->random() : Nationality::factory()->create(); $subscription = Subscription::count() ? Subscription::get()->random() : Subscription::factory()->for(Fee::factory())->create(); return $this ->for($country) ->for($group) ->for($nationality) ->for($subscription); } public function postBillKind(): self { return $this->state([ 'bill_kind' => BillKind::POST, ]); } public function emailBillKind(): self { return $this->state([ 'bill_kind' => BillKind::EMAIL, ]); } public function inNami(int $namiId): self { return $this->state(['nami_id' => $namiId]); } /** * @param array $payments */ public function withPayments(array $payments): self { return $this->afterCreating(function (Model $model) use ($payments): void { foreach ($payments as $paymentClosure) { $factory = Payment::factory()->for($model); $factory = call_user_func($paymentClosure, $factory); $factory->create(); } }); } }