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

$id  = isset($_GET['id']) ? (int)$_GET['id'] : null;
$reg = [];
$err = '';

if ($id) {
    if (!perm('userApp', 'editar')) { http_response_code(403); exit('Sin permiso'); }
    $stmt = $pdo->prepare("SELECT * FROM mrbs_userApp WHERE id=?");
    $stmt->execute([$id]);
    $reg = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$reg) { header('Location: listarUserApp.php'); exit; }
} else {
    if (!perm('userApp', 'agregar')) { http_response_code(403); exit('Sin permiso'); }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $aplicacion         = trim($_POST['aplicacion'] ?? '');
    $acceder_aplicacion = max(0, min(10, (int)($_POST['acceder_aplicacion'] ?? 1)));
    $ver                = max(0, min(10, (int)($_POST['ver'] ?? 1)));
    $editar             = max(0, min(10, (int)($_POST['editar'] ?? 2)));
    $agregar            = max(0, min(10, (int)($_POST['agregar'] ?? 2)));
    $borrar             = max(0, min(10, (int)($_POST['borrar'] ?? 9)));
    $otras_acciones     = max(0, min(10, (int)($_POST['otras_acciones'] ?? 9)));

    if ($aplicacion === '') {
        $err = 'El nombre de aplicación es obligatorio.';
    } else {
        try {
            if ($id) {
                $pdo->prepare("UPDATE mrbs_userApp SET acceder_aplicacion=?,ver=?,editar=?,agregar=?,borrar=?,otras_acciones=? WHERE id=?")
                    ->execute([$acceder_aplicacion,$ver,$editar,$agregar,$borrar,$otras_acciones,$id]);
            } else {
                $pdo->prepare("INSERT INTO mrbs_userApp (aplicacion,acceder_aplicacion,ver,editar,agregar,borrar,otras_acciones) VALUES (?,?,?,?,?,?,?)")
                    ->execute([$aplicacion,$acceder_aplicacion,$ver,$editar,$agregar,$borrar,$otras_acciones]);
            }
            header('Location: listarUserApp.php?ok=1'); exit;
        } catch (Throwable $e) {
            if ($e->getCode() == 23000) {
                $err = 'Ya existe una aplicación con ese nombre.';
            } else {
                $err = 'Error al guardar: ' . $e->getMessage();
            }
        }
    }
    // Repoblar
    $reg = compact('aplicacion','acceder_aplicacion','ver','editar','agregar','borrar','otras_acciones');
}

$titulo = $id ? 'Editar permisos' : 'Nueva aplicación';
$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="listarUserApp.php">Permisos de Aplicación</a> ›
      <?=htmlspecialchars($titulo)?>
    </div>
  </div>
</div>

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

<div class="card">
  <div class="sec"><?=htmlspecialchars($titulo)?></div>
  <p style="font-size:12px;color:#64748b;margin-bottom:16px">
    Indique el <strong>nivel mínimo de usuario</strong> requerido para cada acción.<br>
    Escala: <strong>0</strong> = bloqueado para todos &nbsp;·&nbsp;
    <strong>1</strong> = usuario básico &nbsp;·&nbsp;
    <strong>2</strong> = editor &nbsp;·&nbsp;
    <strong>9</strong> = administrador &nbsp;·&nbsp;
    <strong>10</strong> = solo super-admin
  </p>
  <form method="post" action="">
    <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">Identificación</legend>
      <div class="fg" style="grid-template-columns:1fr">
        <div class="ff">
          <label>Nombre de aplicación <span style="color:#dc2626">*</span></label>
          <?php if ($id): ?>
          <input type="text" value="<?=htmlspecialchars($reg['aplicacion']??'')?>" readonly
                 style="background:#f8fafc;cursor:not-allowed">
          <input type="hidden" name="aplicacion" value="<?=htmlspecialchars($reg['aplicacion']??' ')?>">
          <?php else: ?>
          <input type="text" name="aplicacion" value="<?=htmlspecialchars($reg['aplicacion']??'')?>"
                 placeholder="ej: autos, agenda, juicios" required maxlength="100">
          <?php endif; ?>
          <small style="color:#64748b;font-size:11px">Identificador interno; debe coincidir con el <code>$authApp</code> de las páginas PHP.</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">Niveles requeridos</legend>
      <div class="fg" style="grid-template-columns:repeat(auto-fill,minmax(160px,1fr))">
        <?php
        $campos = [
            'acceder_aplicacion' => ['Acceder a la sección',  'Nivel mínimo para ver la página.'],
            'ver'                => ['Ver registros',          'Puede listar y ver el contenido.'],
            'editar'             => ['Editar',                 'Puede modificar registros existentes.'],
            'agregar'            => ['Agregar',                'Puede crear nuevos registros.'],
            'borrar'             => ['Borrar',                 'Puede eliminar registros.'],
            'otras_acciones'     => ['Otras acciones',         'Exportar, importar u otras acciones especiales.'],
        ];
        foreach ($campos as $name => [$label, $desc]):
            $val = isset($reg[$name]) ? (int)$reg[$name] : 1;
        ?>
        <div class="ff">
          <label title="<?=htmlspecialchars($desc)?>"><?=htmlspecialchars($label)?></label>
          <input type="number" name="<?=$name?>" value="<?=$val?>" min="0" max="10" step="1" required>
          <small style="color:#64748b;font-size:11px"><?=htmlspecialchars($desc)?></small>
        </div>
        <?php endforeach; ?>
      </div>
    </fieldset>

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