<?php
session_start();
require __DIR__ . '/../../config/auth.php';
require __DIR__ . '/../../config/db2.php';
require __DIR__ . '/../../lib/helpers.php';

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

// ── Cargar si edición ─────────────────────────────────────────────────────────
$reg = [];
if ($id) {
    $s = $pdo->prepare("SELECT * FROM juez_rol WHERE id=? AND deleted_at IS NULL");
    $s->execute([$id]);
    $reg = $s->fetch(PDO::FETCH_ASSOC);
    if (!$reg) { header('Location: listarJuezRol.php'); exit; }
}

// ── Listas para combos ────────────────────────────────────────────────────────
$jueces = $pdo->query("SELECT juez_id, nombre FROM mrbs_juez WHERE activo=1 ORDER BY nombre")->fetchAll(PDO::FETCH_ASSOC);
$roles  = $pdo->query("SELECT id, nombre FROM roles_juez WHERE deleted_at IS NULL AND activo=1 ORDER BY nombre")->fetchAll(PDO::FETCH_ASSOC);

// ── Guardar ───────────────────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $juez_id    = trim($_POST['juez_id']   ?? '');
    $rolJuez_id = (int)($_POST['rolJuez_id'] ?? 0);
    $desde      = trim($_POST['fecha_desde'] ?? '');
    $hasta      = trim($_POST['fecha_hasta'] ?? '') ?: null;
    $obs        = trim($_POST['observaciones'] ?? '') ?: null;

    if (!$juez_id || !$rolJuez_id || !$desde) {
        $err = 'Juez, rol y fecha desde son obligatorios.';
    } elseif ($hasta && $hasta < $desde) {
        $err = 'La fecha hasta no puede ser anterior a fecha desde.';
    } else {
        // ── Validar superposición de rol en mismo período ─────────────────────
        $checkSql = "
            SELECT jr.id, j.nombre AS juez_nombre, jr.fecha_desde, jr.fecha_hasta
            FROM juez_rol jr
            JOIN mrbs_juez j ON j.juez_id = jr.juez_id
            WHERE jr.deleted_at IS NULL
              AND jr.rolJuez_id = ?
              AND jr.id != ?
              AND jr.fecha_desde <= COALESCE(?, DATE_ADD(CURDATE(), INTERVAL 100 YEAR))
              AND COALESCE(jr.fecha_hasta, DATE_ADD(CURDATE(), INTERVAL 100 YEAR)) >= ?
        ";
        $chk = $pdo->prepare($checkSql);
        $chk->execute([$rolJuez_id, $id ?? 0, $hasta, $desde]);
        $conflictos = $chk->fetchAll(PDO::FETCH_ASSOC);

        if ($conflictos) {
            $det = [];
            foreach ($conflictos as $c) {
                $det[] = htmlspecialchars($c['juez_nombre']) . ' (desde ' . $c['fecha_desde'] . ($c['fecha_hasta'] ? ' hasta ' . $c['fecha_hasta'] : '') . ')';
            }
            $err = 'Superposición de rol en el período indicado: ' . implode('; ', $det);
        } else {
            try {
                if ($id) {
                    $pdo->prepare("UPDATE juez_rol SET juez_id=?,rolJuez_id=?,fecha_desde=?,fecha_hasta=?,observaciones=? WHERE id=?")
                        ->execute([$juez_id, $rolJuez_id, $desde, $hasta, $obs, $id]);
                } else {
                    $pdo->prepare("INSERT INTO juez_rol (juez_id,rolJuez_id,fecha_desde,fecha_hasta,observaciones) VALUES (?,?,?,?,?)")
                        ->execute([$juez_id, $rolJuez_id, $desde, $hasta, $obs]);
                }
                header('Location: listarJuezRol.php?ok=1');
                exit;
            } catch (PDOException $e) {
                $err = 'Error: ' . $e->getMessage();
            }
        }
    }
}

// Valores del formulario (prioridad: POST > reg)
$v = function(string $k) use ($reg): string {
    return htmlspecialchars($_POST[$k] ?? $reg[$k] ?? '');
};

$paginaActual = 'litigantes';
require __DIR__ . '/../../config/menu.php';
?>
<div class="ph">
  <div>
    <h1><?=$id ? 'Editar' : 'Nueva'?> Autoridad</h1>
    <div class="bc"><a href="listarJuezRol.php">Autoridades</a> › <?=$id ? 'Editar' : 'Nueva'?></div>
  </div>
</div>

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

<div class="card">
<form method="post">
  <fieldset style="border:1px solid #e2e8f0;border-radius:6px;padding:14px;margin-bottom:14px">
    <legend style="font-weight:700;font-size:13px;padding:0 6px">Datos de la Autoridad</legend>
    <div class="fg">

      <div class="ff sp2">
        <label>Juez *</label>
        <?php $selJuez = $_POST['juez_id'] ?? $reg['juez_id'] ?? ''; ?>
        <input type="text" id="juezSearch" placeholder="Buscar juez..." autocomplete="off"
               style="width:100%;padding:6px 8px;border:1px solid #d1d5db;border-radius:5px 5px 0 0;font-size:13px">
        <select name="juez_id" id="juezSel" required size="5"
                style="width:100%;border:1px solid #d1d5db;border-top:none;border-radius:0 0 5px 5px;font-size:13px">
          <?php foreach ($jueces as $j): ?>
          <option value="<?=htmlspecialchars($j['juez_id'])?>"
                  <?=$selJuez===$j['juez_id']?'selected':''?>>
            <?=htmlspecialchars($j['nombre'])?>
          </option>
          <?php endforeach; ?>
        </select>
      </div>

      <div class="ff sp2">
        <label>Rol *</label>
        <?php $selRol = (int)($_POST['rolJuez_id'] ?? $reg['rolJuez_id'] ?? 0); ?>
        <select name="rolJuez_id" required style="width:100%;padding:7px 9px;border:1px solid #d1d5db;border-radius:5px;font-size:13px">
          <option value="">— seleccionar —</option>
          <?php foreach ($roles as $r): ?>
          <option value="<?=$r['id']?>" <?=$selRol===(int)$r['id']?'selected':''?>><?=htmlspecialchars($r['nombre'])?></option>
          <?php endforeach; ?>
        </select>
      </div>

      <div class="ff">
        <label>Fecha Desde *</label>
        <input type="date" name="fecha_desde" value="<?=$v('fecha_desde')?>" required>
      </div>
      <div class="ff">
        <label>Fecha Hasta <em style="font-weight:400">(vacío = sin vencimiento)</em></label>
        <input type="date" name="fecha_hasta" value="<?=$v('fecha_hasta')?>">
      </div>

      <div class="ff sp3">
        <label>Observaciones</label>
        <textarea name="observaciones" rows="2"><?=$v('observaciones')?></textarea>
      </div>
    </div>
  </fieldset>

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

<script>
(function(){
  const inp = document.getElementById('juezSearch');
  const sel = document.getElementById('juezSel');
  const opts = Array.from(sel.options);
  inp.addEventListener('input', function(){
    const q = this.value.toLowerCase();
    opts.forEach(o => {
      o.style.display = o.text.toLowerCase().includes(q) ? '' : 'none';
    });
  });
})();
</script>
</div></body></html>
