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

declare(strict_types=1);

/** Crea una cuenta desde la consola: bin/crear-usuario <email> <clave> <nombre> [rol] */

use App\Core\Kernel;
use App\Modules\Auth\Models\Usuario;
use App\Modules\Roles\Models\Rol;

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

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

[$email, $clave, $nombre, $rol] = [$argv[1] ?? null, $argv[2] ?? null, $argv[3] ?? null, $argv[4] ?? 'alumno'];

if (!$email || !$clave || !$nombre) {
    fwrite(STDERR, "Uso: bin/crear-usuario <email> <clave> <nombre> [rol]\n");
    exit(1);
}

$usuario = Usuario::query()->updateOrCreate(
    ['email' => mb_strtolower($email)],
    [
        'nombre'              => $nombre,
        'password_hash'       => password_hash($clave, PASSWORD_DEFAULT),
        'estado'              => 'activo',
        'email_verificado_en' => date('Y-m-d H:i:s'),
    ],
);

$rolModel = Rol::query()->where('codigo', $rol)->first();
if ($rolModel === null) {
    fwrite(STDERR, "El rol «$rol» no existe.\n");
    exit(1);
}
$usuario->roles()->syncWithoutDetaching([$rolModel->id]);

printf("Cuenta lista: %s (%s) · rol %s\n", $usuario->email, $usuario->nombre, $rol);
