<?php

namespace Database\Factories;

use App\Enums\PlanTier;
use App\Models\Plan;
use Illuminate\Database\Eloquent\Factories\Factory;

/**
 * @extends Factory<Plan>
 */
class PlanFactory extends Factory
{
    public function definition(): array
    {
        return [
            'name' => PlanTier::Free->value,
            'stripe_price_id_monthly' => null,
            'stripe_price_id_annual' => null,
            'max_fuel_types' => 1,
            'email_enabled' => true,
            'email_frequency' => 'weekly_digest',
            'push_enabled' => false,
            'push_frequency' => 'none',
            'whatsapp_enabled' => false,
            'whatsapp_daily_limit' => 0,
            'whatsapp_scheduled_updates' => 0,
            'sms_enabled' => false,
            'sms_daily_limit' => 0,
            'ai_predictions' => false,
            'price_threshold' => false,
            'score_alerts' => false,
            'active' => true,
        ];
    }

    public function free(): static
    {
        return $this->state(fn () => [
            'name' => PlanTier::Free->value,
            'stripe_price_id_monthly' => null,
            'stripe_price_id_annual' => null,
        ]);
    }

    public function basic(): static
    {
        return $this->state(fn () => [
            'name' => PlanTier::Basic->value,
            'stripe_price_id_monthly' => 'price_basic_monthly_test',
            'stripe_price_id_annual' => 'price_basic_annual_test',
            'max_fuel_types' => 1,
            'email_enabled' => true,
            'email_frequency' => 'daily',
            'push_enabled' => true,
            'push_frequency' => 'daily',
            'whatsapp_enabled' => true,
            'whatsapp_daily_limit' => 5,
            'whatsapp_scheduled_updates' => 2,
            'sms_enabled' => false,
            'sms_daily_limit' => 0,
            'ai_predictions' => false,
            'price_threshold' => true,
            'score_alerts' => true,
        ]);
    }

    public function plus(): static
    {
        return $this->state(fn () => [
            'name' => PlanTier::Plus->value,
            'stripe_price_id_monthly' => 'price_plus_monthly_test',
            'stripe_price_id_annual' => 'price_plus_annual_test',
            'max_fuel_types' => 1,
            'email_enabled' => true,
            'email_frequency' => 'triggered',
            'push_enabled' => true,
            'push_frequency' => 'triggered',
            'whatsapp_enabled' => true,
            'whatsapp_daily_limit' => 5,
            'whatsapp_scheduled_updates' => 2,
            'sms_enabled' => true,
            'sms_daily_limit' => 3,
            'ai_predictions' => true,
            'price_threshold' => true,
            'score_alerts' => true,
        ]);
    }

    public function pro(): static
    {
        return $this->state(fn () => [
            'name' => PlanTier::Pro->value,
            'stripe_price_id_monthly' => 'price_pro_monthly_test',
            'stripe_price_id_annual' => 'price_pro_annual_test',
            'max_fuel_types' => null,
            'email_enabled' => true,
            'email_frequency' => 'triggered',
            'push_enabled' => true,
            'push_frequency' => 'triggered',
            'whatsapp_enabled' => true,
            'whatsapp_daily_limit' => 5,
            'whatsapp_scheduled_updates' => 2,
            'sms_enabled' => true,
            'sms_daily_limit' => 3,
            'ai_predictions' => true,
            'price_threshold' => true,
            'score_alerts' => true,
        ]);
    }
}
