*/ class TrialExtensionFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition(): array { $originalEnd = fake()->dateTimeBetween('now', '+14 days'); $extensionDays = fake()->numberBetween(1, 30); $newEnd = (new \DateTime($originalEnd->format('Y-m-d')))->modify("+{$extensionDays} days"); return [ 'subscription_id' => \App\Models\Subscription::factory(), 'user_id' => \App\Models\User::factory(), 'extension_days' => $extensionDays, 'reason' => fake()->optional(0.7)->randomElement([ 'Customer request', 'Technical issues', 'Service outage compensation', 'Goodwill gesture', 'Payment processing delay', ]), 'extension_type' => fake()->randomElement(['manual', 'automatic', 'compensation']), 'original_trial_ends_at' => $originalEnd, 'new_trial_ends_at' => $newEnd, 'granted_at' => fake()->dateTimeBetween('-1 week', 'now'), 'granted_by_admin_id' => \App\Models\User::factory(), 'metadata' => fake()->optional(0.2)->randomElements([ 'notes' => fake()->sentence(), 'approval_ticket' => fake()->numerify('TCK-#####'), ]), ]; } }