#!/usr/bin/env php
<?php

declare(strict_types=1);

/** Curso de demostración con las cinco reglas de completitud. bin/sembrar-demo */

use App\Core\Kernel;
use App\Modules\Catalogo\Models\Actividad;
use App\Modules\Catalogo\Models\Curso;
use App\Modules\Catalogo\Models\Unidad;
use App\Modules\Objetos\Models\Objeto;

require dirname(__DIR__) . '/vendor/autoload.php';
$base = dirname(__DIR__);
Dotenv\Dotenv::createImmutable($base)->safeLoad();
(new Kernel($base))->boot();

$objeto = Objeto::query()->updateOrCreate(
    ['slug' => 'clasificacion-demo', 'version' => 1],
    [
        'titulo'         => 'Actividad de clasificación',
        'archivo'        => 'actividad-clasificacion.html',
        'protocolo'      => 1,
        'emite_progreso' => true,
        'emite_nota'     => false,
    ],
);

$curso = Curso::query()->updateOrCreate(
    ['slug' => 'excel-basico'],
    [
        'titulo'         => 'Excel Básico',
        'resumen'        => 'Domina las funciones esenciales de una planilla de cálculo.',
        'descripcion'    => "Un recorrido práctico por las herramientas que se usan todos los días.\nSin requisitos previos.",
        'estado'         => 'publicado',
        'nivel'          => 'inicial',
        'duracion_horas' => 12,
        'publicado_en'   => date('Y-m-d H:i:s'),
    ],
);

$borrador = Curso::query()->updateOrCreate(
    ['slug' => 'power-bi'],
    ['titulo' => 'Power BI: Dashboards', 'estado' => 'borrador', 'nivel' => 'intermedio'],
);

$u1 = Unidad::query()->updateOrCreate(
    ['curso_id' => $curso->id, 'numero' => 1],
    ['titulo' => 'Primeros pasos', 'descripcion' => 'La interfaz y los conceptos base.'],
);
$u2 = Unidad::query()->updateOrCreate(
    ['curso_id' => $curso->id, 'numero' => 2],
    ['titulo' => 'Fórmulas', 'descripcion' => 'Cálculos y referencias.'],
);

$actividades = [
    [$u1, 1, 'video',   'Bienvenida al curso',      'al_abrir',        0,   0,   null],
    [$u1, 2, 'video',   'La interfaz de Excel',     'ver_video',       80,  600, null],
    [$u1, 3, 'lectura', 'Glosario de términos',     'manual',          30,  0,   null],
    [$u2, 1, 'objeto',  'Clasifica las funciones',  'progreso_objeto', 100, 0,   $objeto->id],
    [$u2, 2, 'video',   'Referencias absolutas',    'ver_video',       80,  480, null],
];

foreach ($actividades as [$unidad, $orden, $tipo, $titulo, $regla, $umbral, $duracion, $objetoId]) {
    Actividad::query()->updateOrCreate(
        ['curso_id' => $curso->id, 'unidad_id' => $unidad->id, 'orden' => $orden],
        [
            'tipo'              => $tipo,
            'titulo'            => $titulo,
            'regla_completitud' => $regla,
            'umbral'            => $umbral,
            'duracion_segundos' => $duracion,
            'objeto_id'         => $objetoId,
            'recurso_url'       => $tipo === 'video' ? 'https://player.vimeo.com/video/76979871' : null,
            'cuerpo'            => $tipo === 'lectura' ? "Celda, rango, fórmula, referencia.\nCada término con un ejemplo." : null,
            'obligatoria'       => true,
        ],
    );
}

printf("Curso publicado: %s (%d actividades)\n", $curso->titulo, count($actividades));
printf("Curso en borrador: %s\n", $borrador->titulo);
