<?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,
                'features' => [
                    'fuel_types' => ['max' => 1],
                    'email' => ['enabled' => true, 'frequency' => 'weekly_digest'],
                    'push' => ['enabled' => false, 'frequency' => 'none'],
                    'whatsapp' => ['enabled' => false, 'daily_limit' => 0, 'scheduled_updates' => 0],
                    'sms' => ['enabled' => false, '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'),
                'features' => [
                    'fuel_types' => ['max' => 1],
                    'email' => ['enabled' => true, 'frequency' => 'daily'],
                    'push' => ['enabled' => true, 'frequency' => 'daily'],
                    'whatsapp' => ['enabled' => true, 'daily_limit' => 5, 'scheduled_updates' => 2],
                    'sms' => ['enabled' => false, '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'),
                'features' => [
                    'fuel_types' => ['max' => 1],
                    'email' => ['enabled' => true, 'frequency' => 'triggered'],
                    'push' => ['enabled' => true, 'frequency' => 'triggered'],
                    'whatsapp' => ['enabled' => true, 'daily_limit' => 5, 'scheduled_updates' => 2],
                    'sms' => ['enabled' => true, 'daily_limit' => 1],
                    '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'),
                'features' => [
                    'fuel_types' => ['max' => null],
                    'email' => ['enabled' => true, 'frequency' => 'triggered'],
                    'push' => ['enabled' => true, 'frequency' => 'triggered'],
                    'whatsapp' => ['enabled' => true, 'daily_limit' => 5, 'scheduled_updates' => 2],
                    'sms' => ['enabled' => true, 'daily_limit' => 3],
                    'ai_predictions' => true,
                    'price_threshold' => true,
                    'score_alerts' => true,
                ],
            ],
        ];

        foreach ($plans as $name => $data) {
            Plan::updateOrCreate(
                ['name' => $name],
                [
                    'stripe_price_id_monthly' => $data['stripe_price_id_monthly'],
                    'stripe_price_id_annual' => $data['stripe_price_id_annual'],
                    'features' => $data['features'],
                    'active' => true,
                ]
            );
        }
    }
}
