<?php

namespace Database\Seeders;

// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Enums\DegreeInclinationEnum;
use App\Enums\OrientationsEnum;
use App\Models\ConsommationOption;
use App\Models\InclinationDescription;
use App\Models\OrientationDescription;
use App\Models\SolutionGroup;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        // \App\Models\User::factory(10)->create();

        $this->call([
            PostalCodeSeeder::class,
        ]);

         \App\Models\User::factory()->create([
             'name' => 'Admin',
             'email' => 'admin@admin.com',
         ]);

        /*
         * Consommation Options
         */

         ConsommationOption::create([
            'img' => 'consommation-1.png',
             'name' => 'petit',
             'consommation_khw' => 100,
         ]);

        ConsommationOption::create([
            'img' => 'consommation-2.png',
            'name' => 'moyen',
            'consommation_khw' => 500,
        ]);

        ConsommationOption::create([
            'img' => 'consommation-3.png',
            'name' => 'grand',
            'consommation_khw' => 1000,
        ]);

        /*
         * Inclinations
         */

        InclinationDescription::create([
            'inclination' => DegreeInclinationEnum::FAIBLE->value,
            'title' => '5° à 15° (bonne)',
            'description' => 'Inclinaison faible',
        ]);

        InclinationDescription::create([
            'inclination' => DegreeInclinationEnum::MOYEN->value,
            'title' => '16° à 25° (bonne)',
            'description' => 'Inclinaison moyenne',
        ]);

        InclinationDescription::create([
            'inclination' => DegreeInclinationEnum::STANDARD->value,
            'title' => '26° à 35° (bonne)',
            'description' => 'Inclinaison standard',
        ]);

        InclinationDescription::create([
            'inclination' => DegreeInclinationEnum::FORT->value,
            'title' => '36° à 45° (bonne)',
            'description' => 'Inclinaison forte',
        ]);

        InclinationDescription::create([
            'inclination' => DegreeInclinationEnum::PLAT->value,
            'title' => '0° (bonne)',
            'description' => 'Inclinaison plate',
        ]);

        /*
         * Orientations
         */

        OrientationDescription::create([
            'orientation' => OrientationsEnum::NORD->value,
            'title' => 'Nord (bonne)',
            'description' => 'Orientation Nord',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::NORDEST->value,
            'title' => 'Nord-Est (bonne)',
            'description' => 'Orientation Nord-Est',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::EST->value,
            'title' => 'Est (bonne)',
            'description' => 'Orientation Est',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::SUDEST->value,
            'title' => 'Sud-Est (bonne)',
            'description' => 'Orientation Sud-Est',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::SUD->value,
            'title' => 'Sud (bonne)',
            'description' => 'Orientation Sud',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::SUDOUEST->value,
            'title' => 'Sud-Ouest (bonne)',
            'description' => 'Orientation Sud-Ouest',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::OUEST->value,
            'title' => 'Ouest (bonne)',
            'description' => 'Orientation Ouest',
        ]);

        OrientationDescription::create([
            'orientation' => OrientationsEnum::NORDOUEST->value,
            'title' => 'Nord-Ouest (bonne)',
            'description' => 'Orientation Nord-Ouest',
        ]);

        /*
         * Postal Codes
         */

//        PostalCode::create([
//            'code' => '30000',
//            'name' => 'Fes',
//            'description' => 'Fes',
//        ]);
//
//        PostalCode::create([
//            'code' => '40000',
//            'name' => 'Marrakech',
//            'description' => 'Marrakech',
//        ]);

        /*
         * Solution groups
         */

        $solutionGroup = SolutionGroup::create([
            'name' => 'Group solution 1',
            'postal_codes' => [],
//            'consommations' => [],
            'orientations' => [],
            'types_courant' => [],
            'inclinations' => [],
        ]);

        $solutionGroup->solutions()->create([
            'name' => 'Solution 1',
            'nb_panneaux' => 10,
            'short_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'full_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'potentiel_economie' => 1700,
            'recommended' => false,
        ]);

        $solutionGroup->solutions()->create([
            'name' => 'Solution 2',
            'nb_panneaux' => 20,
            'short_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'full_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'potentiel_economie' => 3700,
            'recommended' => true,
        ]);

        $solutionGroup->solutions()->create([
            'name' => 'Solution 3',
            'nb_panneaux' => 15,
            'short_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'full_description' => 'Avec mon kit, je vais couvrir environ 80% de la consommation en heure pleine.',
            'potentiel_economie' => 2700,
            'recommended' => false,
        ]);
    }
}
