<?php
$authApp = 'usuarios';
require __DIR__ . '/../../config/auth.php';
require __DIR__ . '/../../config/db2.php';
require_once __DIR__ . '/../../lib/helpers.php';

$id        = isset($_GET['id']) ? (int)$_GET['id'] : null;
$esEdicion = $id !== null;

if ($esEdicion  && !perm('usuarios', 'editar'))  { http_response_code(403); exit('Sin permiso'); }
if (!$esEdicion && !perm('usuarios', 'agregar')) { http_response_code(403); exit('Sin permiso'); }

$reg = [];
$err = '';

if ($esEdicion) {
    $stmt = $pdo->prepare("SELECT id, name, display_name, email, level FROM mrbs_users WHERE id = ? LIMIT 1");
    $stmt->execute([$id]);
    $reg = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$reg) { header('Location: listarUsuarios.php'); exit; }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name         = trim($_POST['name']         ?? '');
    $display_name = trim($_POST['display_name'] ?? '');
    $email        = trim($_POST['email']        ?? '');
    $level        = max(0, min(10, (int)($_POST['level'] ?? 1)));
    $password     = $_POST['password'] ?? '';
    $confirm      = $_POST['confirm']  ?? '';

    if (!$esEdicion && $name === '') {
        $err = 'El nombre de usuario es obligatorio.';
    } elseif (!$esEdicion && strlen($password) < 8) {
        $err = 'La contraseña debe tener al menos 8 caracteres.';
    } elseif ($password !== '' && strlen($password) < 8) {
        $err = 'La contraseña debe tener al menos 8 caracteres.';
    } elseif ($password !== '' && $password !== $confirm) {
        $err = 'Las contraseñas no coinciden.';
    }

    if (!$err && !$esEdicion) {
        $chk = $pdo->prepare("SELECT COUNT(*) FROM mrbs_users WHERE name = ?");
        $chk->execute([$name]);
        if ((int)$chk->fetchColumn() > 0) {
            $err = "El usuario «$name» ya existe.";
        }
    }

    if (!$err) {
        try {
            if ($esEdicion) {
                if ($password !== '') {
                    $pdo->prepare(
                        "UPDATE mrbs_users SET display_name=?, email=?, level=?, password_hash=? WHERE id=?"
                    )->execute([$display_name, $email, $level, password_hash($password, PASSWORD_DEFAULT), $id]);
                } else {
                    $pdo->prepare(
                        "UPDATE mrbs_users SET display_name=?, email=?, level=? WHERE id=?"
                    )->execute([$display_name, $email, $level, $id]);
                }
            } else {
                $pdo->prepare(
                    "INSERT INTO mrbs_users (name, display_name, email, level, password_hash, timestamp)
                     VALUES (?, ?, ?, ?, ?, UNIX_TIMESTAMP())"
                )->execute([$name, $display_name, $email, $level, password_hash($password, PASSWORD_DEFAULT)]);
            }
            header('Location: listarUsuarios.php?ok=1');
            exit;
        } catch (Throwable $e) {
            $err = 'Error al guardar: ' . $e->getMessage();
        }
    }

    // Repoblar en caso de error
    $reg = compact('name', 'display_name', 'email', 'level');
}

$titulo      = $esEdicion ? 'Editar usuario' : 'Nuevo usuario';
$paginaActual = 'configuracion';
require __DIR__ . '/../../config/menu.php';
?>
<div class="ph">
  <div>
    <h1><?=htmlspecialchars($titulo)?></h1>
    <div class="bc">
      <a href="<?=BASE_URL?>/index.php">Inicio</a> ›
      <a href="<?=BASE_URL?>/public/configuracion/listarSalas.php">Configuración</a> ›
      <a href="listarUsuarios.php">Usuarios</a> ›
      <?=htmlspecialchars($titulo)?>
    </div>
  </div>
</div>

<?php if ($err): ?><div class="msg msg-err"><?=htmlspecialchars($err)?></div><?php endif; ?>

<div class="card">
  <form method="post" action="" autocomplete="off">

    <fieldset style="border:1px solid #e2e8f0;border-radius:6px;padding:16px;margin-bottom:16px">
      <legend style="font-weight:700;font-size:13px;color:#334155;padding:0 6px">Datos del usuario</legend>
      <div class="fg">
        <div class="ff">
          <label>Usuario <span style="color:#dc2626">*</span></label>
          <?php if ($esEdicion): ?>
          <input type="text" value="<?=htmlspecialchars($reg['name'] ?? '')?>" readonly
                 style="background:#f8fafc;cursor:not-allowed">
          <input type="hidden" name="name" value="<?=htmlspecialchars($reg['name'] ?? '')?>">
          <?php else: ?>
          <input type="text" name="name" value="<?=htmlspecialchars($reg['name'] ?? '')?>"
                 required maxlength="30" autocomplete="off"
                 placeholder="nombre de login (sin espacios)">
          <?php endif; ?>
        </div>
        <div class="ff">
          <label>Nombre completo</label>
          <input type="text" name="display_name" value="<?=htmlspecialchars($reg['display_name'] ?? '')?>"
                 maxlength="100" placeholder="Apellido, Nombre">
        </div>
        <div class="ff">
          <label>Email</label>
          <input type="email" name="email" value="<?=htmlspecialchars($reg['email'] ?? '')?>"
                 maxlength="100" placeholder="usuario@dominio.com">
        </div>
        <div class="ff" style="max-width:180px">
          <label>Nivel de acceso</label>
          <select name="level">
            <?php
            $niveles = [
                0  => '0 — Sin acceso',
                1  => '1 — Usuario básico',
                2  => '2 — Editor',
                9  => '9 — Administrador',
                10 => '10 — Super-admin',
            ];
            for ($l = 0; $l <= 10; $l++):
                $lbl = $niveles[$l] ?? $l;
                $sel = ((int)($reg['level'] ?? 1)) === $l ? 'selected' : '';
            ?>
            <option value="<?=$l?>" <?=$sel?>><?=htmlspecialchars((string)$lbl)?></option>
            <?php endfor; ?>
          </select>
          <small style="color:#64748b;font-size:11px">
            Los niveles requeridos por sección se configuran en Permisos de Aplicación.
          </small>
        </div>
      </div>
    </fieldset>

    <fieldset style="border:1px solid #e2e8f0;border-radius:6px;padding:16px;margin-bottom:16px">
      <legend style="font-weight:700;font-size:13px;color:#334155;padding:0 6px">
        Contraseña <?=$esEdicion ? '<span style="font-weight:400;color:#64748b">(dejar en blanco para no cambiar)</span>' : '<span style="color:#dc2626">*</span>'?>
      </legend>
      <div class="fg">
        <div class="ff">
          <label>Nueva contraseña</label>
          <input type="password" name="password" autocomplete="new-password"
                 <?=!$esEdicion ? 'required minlength="8"' : 'minlength="8"'?>
                 placeholder="Mínimo 8 caracteres">
        </div>
        <div class="ff">
          <label>Confirmar contraseña</label>
          <input type="password" name="confirm" autocomplete="new-password"
                 placeholder="Repetir contraseña">
        </div>
      </div>
    </fieldset>

    <div style="display:flex;gap:8px">
      <button type="submit" class="btn btn-p">Guardar</button>
      <a href="listarUsuarios.php" class="btn btn-g">Cancelar</a>
    </div>
  </form>
</div>
