<?php

namespace Database\Seeders;

use App\Models\Environments\Environment;
use App\Models\Environments\Plugin;
use Illuminate\Database\Seeder;

class PluginSeeder extends Seeder
{
    public function run(): void
    {
        // Recuperamos los entornos creados por EnvironmentSeeder
        $environment1 = Environment::where('name', 'Prueba')->first();
        $environment2 = Environment::where('name', 'Prueba2')->first();

        if (! $environment1 || ! $environment2) {
            // Si por lo que sea no existen, no hacemos nada para evitar errores en seeding
            return;
        }

        // Limpieza previa opcional (solo para desarrollo)
        Plugin::whereIn('environment_id', [$environment1->id, $environment2->id])->delete();

        /*
         * Entorno 1: Prueba (local, activo)
         * ---------------------------------
         * - Plugins actualizados
         * - Plugins con updates menores
         * - Plugins con dependencias
         */

        // Plugin de actividad, actualizado
        Plugin::create([
            'environment_id'    => $environment1->id,
            'name'              => 'Foro',
            'component'         => 'mod_forum',
            'type'              => 'mod',
            'versiondisk'       => '2024110100',
            'versiondb'         => '2024110100',
            'versionrequires'   => 2023100900,
            'pluginsupported'   => null,
            'pluginincompatible'=> null,
            'release'           => '4.3 (Build: 20241101)',
            'has_dependencies'  => false,
            'dependencies'      => null,
            'has_updates'       => false,
            'availableupdates'  => null,
        ]);

        // Plugin de bloque con actualización menor disponible
        Plugin::create([
            'environment_id'    => $environment1->id,
            'name'              => 'Bloque HTML mejorado',
            'component'         => 'block_htmlplus',
            'type'              => 'block',
            'versiondisk'       => '2023100100',
            'versiondb'         => '2023100100',
            'versionrequires'   => 2022041900,
            'pluginsupported'   => null,
            'pluginincompatible'=> null,
            'release'           => '4.2 (Build: 20231001)',
            'has_dependencies'  => false,
            'dependencies'      => null,
            'has_updates'       => true,
            'availableupdates'  => [
                [
                    'version'      => '2023110100',
                    'release'      => '4.2.1 (Build: 20231101)',
                    'download'     => 'https://download.moodle.org/plugins/block_htmlplus_2023110100.zip',
                    'downloadmd5'  => 'd41d8cd98f00b204e9800998ecf8427e',
                    'maturity'     => 200,
                ],
            ],
        ]);

        // Plugin local con dependencias y varias actualizaciones
        Plugin::create([
            'environment_id'    => $environment1->id,
            'name'              => 'Herramientas internas 3ipunt',
            'component'         => 'local_tresipunttools',
            'type'              => 'local',
            'versiondisk'       => '2023091500',
            'versiondb'         => '2023091500',
            'versionrequires'   => 2022041900,
            'pluginsupported'   => 'mod_forum, mod_assign',
            'pluginincompatible'=> 'theme_bootstrapbase',
            'release'           => '1.0.0 (Build: 20230915)',
            'has_dependencies'  => true,
            'dependencies'      => [
                [
                    'component' => 'mod_forum',
                    'version'   => 2022041900,
                ],
                [
                    'component' => 'block_htmlplus',
                    'version'   => 2023090100,
                ],
            ],
            'has_updates'       => true,
            'availableupdates'  => [
                [
                    'version'      => '2023100100',
                    'release'      => '1.1.0 (Build: 20231001)',
                    'download'     => 'https://plugins.3ipunt.com/local_tresipunttools_2023100100.zip',
                    'downloadmd5'  => 'e2fc714c4727ee9395f324cd2e7f331f',
                    'maturity'     => 200,
                ],
                [
                    'version'      => '2023120100',
                    'release'      => '1.2.0 (Build: 20231201)',
                    'downloadurl'  => 'https://plugins.3ipunt.com/local_tresipunttools_2023120100.zip',
                    'maturity'     => 300,
                ],
            ],
        ]);

        /*
         * Entorno 2: Prueba2 (pre, inactivo)
         * ----------------------------------
         * - Tema desactualizado
         * - Plugin de reporte sin updates
         * - Formato de curso con updates y sin dependencias
         */

        // Tema con actualización mayor disponible
        Plugin::create([
            'environment_id'    => $environment2->id,
            'name'              => 'Tema Boost Child',
            'component'         => 'theme_boostchild',
            'type'              => 'theme',
            'versiondisk'       => '2023040100',
            'versiondb'         => '2023040100',
            'versionrequires'   => 2022041900,
            'pluginsupported'   => 'core',
            'pluginincompatible'=> null,
            'release'           => '2.0.0 (Build: 20230401)',
            'has_dependencies'  => false,
            'dependencies'      => null,
            'has_updates'       => true,
            'availableupdates'  => [
                [
                    'version'      => '2024010100',
                    'release'      => '3.0.0 (Build: 20240101)',
                    'download'     => 'https://download.moodle.org/plugins/theme_boostchild_2024010100.zip',
                    'maturity'     => 300,
                ],
            ],
        ]);

        // Plugin de reporte totalmente actualizado
        Plugin::create([
            'environment_id'    => $environment2->id,
            'name'              => 'Informe de actividad',
            'component'         => 'report_activity',
            'type'              => 'report',
            'versiondisk'       => '2023110100',
            'versiondb'         => '2023110100',
            'versionrequires'   => 2023100900,
            'pluginsupported'   => null,
            'pluginincompatible'=> null,
            'release'           => '4.3 (Build: 20231101)',
            'has_dependencies'  => false,
            'dependencies'      => null,
            'has_updates'       => false,
            'availableupdates'  => null,
        ]);

        // Formato de curso con actualización disponible pero sin detalles adicionales
        Plugin::create([
            'environment_id'    => $environment2->id,
            'name'              => 'Formato de curso en tarjetas',
            'component'         => 'format_cards',
            'type'              => 'format',
            'versiondisk'       => '2022100100',
            'versiondb'         => '2022100100',
            'versionrequires'   => 2020110900,
            'pluginsupported'   => null,
            'pluginincompatible'=> null,
            'release'           => '1.5.0 (Build: 20221001)',
            'has_dependencies'  => false,
            'dependencies'      => null,
            'has_updates'       => true,
            'availableupdates'  => [
                [
                    'version'  => '2023050100',
                    'release'  => '1.6.0 (Build: 20230501)',
                ],
            ],
        ]);
    }
}
