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

declare(strict_types=1);

/** Añade al banco del curso de muestra un ítem de cada tipo nuevo. */

use App\Core\Kernel;
use App\Modules\Evaluaciones\Models\Banco;
use App\Modules\Evaluaciones\Models\Item;
use App\Modules\Evaluaciones\Models\ItemOpcion;

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

$banco = Banco::query()->where('nombre', 'Transformación digital — banco general')->firstOrFail();

// Se rehacen para que la siembra sea repetible.
Item::query()->where('banco_id', $banco->id)->whereIn('tipo', ['emparejar', 'ordenar', 'numerico'])->delete();

// ── Emparejar ────────────────────────────────────────────────────────────
$item = Item::query()->create([
    'banco_id'          => $banco->id,
    'tipo'              => 'emparejar',
    'enunciado'         => 'Relaciona cada freno con lo que hay que hacer para evitarlo.',
    'retroalimentacion' => 'Cada freno tiene una contramedida concreta; ninguno se resuelve con presupuesto.',
    'puntaje'           => 4,
]);
foreach ([
    ['Nadie es dueño del proyecto', 'Asignar una persona con nombre y tiempo'],
    ['Se empieza por la herramienta', 'Mapear el proceso antes de comprar'],
    ['El equipo no se entera', 'Acompañar la puesta en marcha'],
    ['No hay forma de saber si funcionó', 'Medir un número antes de empezar'],
] as $orden => [$texto, $pareja]) {
    ItemOpcion::query()->create([
        'item_id' => $item->id, 'texto' => $texto, 'pareja' => $pareja, 'orden' => $orden + 1,
    ]);
}

// ── Ordenar ──────────────────────────────────────────────────────────────
$item = Item::query()->create([
    'banco_id'          => $banco->id,
    'tipo'              => 'ordenar',
    'enunciado'         => 'Ordena las fases del plan a noventa días.',
    'retroalimentacion' => 'Medir, probar en pequeño, comparar y recién ahí decidir.',
    'puntaje'           => 4,
]);
foreach ([
    'Medir cuánto tarda hoy el proceso',
    'Probar la herramienta con un solo equipo',
    'Comparar el número de antes con el de después',
    'Decidir si se extiende al resto de la empresa',
] as $orden => $texto) {
    ItemOpcion::query()->create(['item_id' => $item->id, 'texto' => $texto, 'orden' => $orden + 1]);
}

// ── Numérico ─────────────────────────────────────────────────────────────
Item::query()->create([
    'banco_id'           => $banco->id,
    'tipo'               => 'numerico',
    'enunciado'          => 'Un proceso tarda 90 minutos y tras digitalizarlo tarda 54. ¿Qué porcentaje de tiempo se ahorró?',
    'retroalimentacion'  => '(90 − 54) / 90 = 0,4, es decir un 40 %.',
    'puntaje'            => 2,
    'respuesta_numerica' => 40,
    'tolerancia'         => 1,
    'unidad'             => '%',
]);

printf("Banco «%s»: %d ítems (%d tipos distintos)\n",
    $banco->nombre,
    Item::query()->where('banco_id', $banco->id)->count(),
    Item::query()->where('banco_id', $banco->id)->distinct()->count('tipo'));
