<?php

namespace Database\Seeders;

use App\Enums\PlanTier;
use App\Models\Plan;
use Illuminate\Database\Seeder;

class PlanSeeder extends Seeder
{
    public function run(): void
    {
        $plans = [
            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,
            ],
            PlanTier::Basic->value => [
                'stripe_price_id_monthly' => config('services.stripe.prices.basic.monthly'),
                'stripe_price_id_annual' => config('services.stripe.prices.basic.annual'),
                '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,
            ],
            PlanTier::Plus->value => [
                'stripe_price_id_monthly' => config('services.stripe.prices.plus.monthly'),
                'stripe_price_id_annual' => config('services.stripe.prices.plus.annual'),
                '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,
            ],
            PlanTier::Pro->value => [
                'stripe_price_id_monthly' => config('services.stripe.prices.pro.monthly'),
                'stripe_price_id_annual' => config('services.stripe.prices.pro.annual'),
                '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,
            ],
        ];

        foreach ($plans as $name => $attributes) {
            Plan::updateOrCreate(['name' => $name], [...$attributes, 'active' => true]);
        }
    }
}
