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

declare(strict_types=1);

/**
 * Una certificación de ejemplo compuesta por varios cursos.
 *
 * El objetivo es poder ver en pantalla lo que el modelo promete: cursos que se pueden hacer
 * sueltos y que además suman para algo mayor. Con una certificación de un solo curso no se
 * distingue de un certificado de curso, que es justo lo que hay que poder mostrar.
 *
 * bin/sembrar-certificacion-ejemplo
 */

use App\Core\Kernel;
use App\Modules\Catalogo\Models\Curso;
use App\Modules\Certificacion\Models\Certificado;
use App\Modules\Certificacion\Models\CertificadoCurso;

require dirname(__DIR__) . '/vendor/autoload.php';

$base = dirname(__DIR__);
Dotenv\Dotenv::createImmutable($base)->safeLoad();
(new Kernel($base))->boot();

$cursos = Curso::query()->whereIn('slug', [
    'excel-basico',
    'introduccion-a-python',
    'transformacion-digital-pymes',
])->get()->keyBy('slug');

if ($cursos->count() < 3) {
    fwrite(STDERR, "Faltan cursos base. Corre antes bin/sembrar-demo.\n");
    exit(1);
}

$certificado = Certificado::query()->updateOrCreate(
    ['slug' => 'analitica-para-la-gestion'],
    [
        'titulo'      => 'Certificado en Analítica para la Gestión',
        'descripcion' => 'Acredita la capacidad de levantar datos de una operación, analizarlos '
                       . 'y sostener una decisión con ellos.',
        'horas'       => $cursos->sum('duracion_horas'),
        'nivel'       => 'Intermedio',
        'modalidad'   => 'En línea',
        'tipo'        => 'ruta',
        'activo'      => true,
    ],
);

// Se rehace la composición en cada siembra para que no se acumulen requisitos repetidos.
CertificadoCurso::query()->where('certificado_id', $certificado->id)->delete();

$orden = 0;
foreach (['excel-basico', 'introduccion-a-python', 'transformacion-digital-pymes'] as $slug) {
    CertificadoCurso::query()->create([
        'certificado_id' => $certificado->id,
        'curso_id'       => $cursos[$slug]->id,
        'canasta'        => ++$orden,
    ]);
}

printf(
    "Certificación «%s» lista: %d cursos, %d horas.\n",
    $certificado->titulo,
    $orden,
    $certificado->horas,
);
printf("  https://lms-base.test/certificaciones/%s\n", $certificado->slug);
