faker->randomElement(VoucherType::values()); return [ 'name' => $this->faker->words(2, true), 'code' => Str::upper(Str::random(8)), 'type' => $type, 'discount_amount' => $type === VoucherType::PERCENTAGE->value ? $this->faker->numberBetween(5, 50) : $this->faker->numberBetween(10000, 100000), 'min_purchase' => $this->faker->optional()->numberBetween(50000, 200000), 'max_discount' => $type === VoucherType::PERCENTAGE->value ? $this->faker->numberBetween(10000, 50000) : null, 'quota' => $this->faker->optional()->numberBetween(50, 500), 'limit_per_user' => $this->faker->optional()->numberBetween(1, 5), 'start_date' => $this->faker->dateTimeBetween('-1 week', '+1 week')->format('Y-m-d'), 'end_date' => $this->faker->optional()->dateTimeBetween('+1 day', '+2 months')?->format('Y-m-d'), ]; } public function active(): Factory { return $this->state(function (array $attributes) { return [ 'is_active' => IsActive::ACTIVE, ]; }); } }