*/ class SubscriptionChangeFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition(): array { $changeType = fake()->randomElement([ 'plan_change', 'cancellation', 'pause', 'resume', 'migration', 'provider_change', ]); return [ 'subscription_id' => \App\Models\Subscription::factory(), 'user_id' => \App\Models\User::factory(), 'change_type' => $changeType, 'change_description' => fake()->sentence(), 'old_values' => fake()->optional(0.7)->randomElement([ ['plan_id' => fake()->numberBetween(1, 5), 'price' => fake()->randomFloat(2, 10, 100)], ['status' => 'active', 'provider' => 'stripe'], ]), 'new_values' => fake()->optional(0.7)->randomElement([ ['plan_id' => fake()->numberBetween(1, 5), 'price' => fake()->randomFloat(2, 10, 100)], ['status' => 'cancelled', 'provider' => 'lemon_squeezy'], ]), 'reason' => fake()->optional(0.6)->randomElement([ 'Customer request', 'Payment failure', 'Plan upgrade', 'Service downgrade', 'Technical migration', ]), 'effective_at' => fake()->dateTimeBetween('-1 month', 'now'), 'processed_at' => fake()->optional(0.8)->dateTimeBetween('-1 month', 'now'), 'is_processed' => fake()->boolean(80), 'metadata' => fake()->optional(0.2)->randomElements([ 'processed_by' => fake()->name(), 'system_generated' => fake()->boolean(), 'batch_id' => fake()->uuid(), ]), ]; } }