<?php
require_once 'includes/auth.php';
exigir_rol('conserje');
require_once 'conexion.php';
require_once 'includes/layout.php';

$busqueda = trim($_GET['busqueda'] ?? '');

$stmt = $conn->prepare("
    SELECT a.*, r.fecha_hora_llegada, r.fecha_hora_salida,
           p.numero_departamento, p.estacionamiento, u.nombre AS propietario,
           (SELECT COUNT(*) FROM acompanantes ac WHERE ac.id_arrendatario = a.id_arrendatario) AS num_acomp
    FROM arrendatarios a
    LEFT JOIN registros r ON a.id_arrendatario = r.id_arrendatario
    JOIN propietarios p   ON a.id_propietario = p.id_propietario
    JOIN usuarios u       ON p.id_usuario = u.id_usuario
    WHERE (a.nombre LIKE ? OR a.rut LIKE ? OR p.numero_departamento LIKE ?)
    ORDER BY a.fecha_inicio ASC");
$param = '%' . $busqueda . '%';
$stmt->bind_param('sss', $param, $param, $param);
$stmt->execute();
$result = $stmt->get_result();

$enCurso = [];
$proximos = [];
$eventos = [];
while ($row = $result->fetch_assoc()) {
    $estado = estado_arriendo($row['fecha_inicio'], $row['fecha_salida']);
    $row['estado'] = $estado;
    if ($estado === 'En Arriendo') {
        $enCurso[] = $row;
        $eventos[] = ['title' => '🟢 ' . $row['nombre'] . ' (D.' . $row['numero_departamento'] . ')',
                      'start' => $row['fecha_inicio'],
                      'end'   => date('Y-m-d', strtotime($row['fecha_salida'] . ' +1 day')),
                      'color' => '#198754'];
    } elseif ($estado === 'Pendiente' && strtotime($row['fecha_inicio']) <= strtotime('+14 days')) {
        $proximos[] = $row;
        $eventos[] = ['title' => '🟡 ' . $row['nombre'] . ' (D.' . $row['numero_departamento'] . ')',
                      'start' => $row['fecha_inicio'],
                      'end'   => date('Y-m-d', strtotime($row['fecha_salida'] . ' +1 day')),
                      'color' => '#ffc107'];
    }
}

if (isset($_SESSION['mensaje'])) {
    $mensajeFlash = $_SESSION['mensaje'];
    unset($_SESSION['mensaje']);
}

function fila_conserje($row) { ?>
  <tr>
    <td>
      <div class="fw-semibold"><?= e($row['nombre']) ?></div>
      <div class="text-secondary" style="font-size:12px"><?= e($row['rut']) ?></div>
    </td>
    <td>
      <?= e($row['celular']) ?>
      <?php if ($wa = link_whatsapp($row['celular'])): ?>
        <a href="<?= e($wa) ?>" target="_blank" class="text-success ms-1"><i class="bi bi-whatsapp"></i></a>
      <?php endif; ?>
    </td>
    <td class="text-center">
      <span class="badge text-bg-light border">D. <?= e($row['numero_departamento']) ?></span><br>
      <span class="text-secondary" style="font-size:11px">Est. <?= e($row['estacionamiento']) ?></span>
    </td>
    <td><?= e($row['propietario']) ?></td>
    <td style="font-size:13px">
      <i class="bi bi-box-arrow-in-right text-success"></i> <?= fecha_cl($row['fecha_inicio']) ?> <?= hora_cl($row['hora_ingreso']) ?><br>
      <i class="bi bi-box-arrow-right text-danger"></i> <?= fecha_cl($row['fecha_salida']) ?> <?= hora_cl($row['hora_salida']) ?>
    </td>
    <td class="text-center"><?= e($row['patente_vehiculo'] ?: '—') ?></td>
    <td class="text-center">
      <?php if ((int)$row['num_acomp'] > 0): ?>
        <button class="btn btn-sm btn-outline-secondary" onclick="verAcompanantes(<?= (int)$row['id_arrendatario'] ?>, '<?= e(addslashes($row['nombre'])) ?>')">
          <i class="bi bi-people"></i> <?= (int)$row['num_acomp'] ?>
        </button>
      <?php else: ?>—<?php endif; ?>
    </td>
    <td style="font-size:13px">
      <?php if ($row['fecha_hora_llegada']): ?>
        <span class="text-success"><i class="bi bi-check-circle"></i> <?= fecha_hora_cl($row['fecha_hora_llegada']) ?></span>
      <?php else: ?>
        <span class="text-warning"><i class="bi bi-hourglass-split"></i> Pendiente</span>
      <?php endif; ?>
      <br>
      <?php if ($row['fecha_hora_salida']): ?>
        <span class="text-danger"><i class="bi bi-check-circle"></i> <?= fecha_hora_cl($row['fecha_hora_salida']) ?></span>
      <?php else: ?>
        <span class="text-secondary"><i class="bi bi-dash-circle"></i> Sin salida</span>
      <?php endif; ?>
    </td>
    <td class="text-end">
      <div class="d-flex gap-1 justify-content-end">
        <a href="generar_ficha.php?id=<?= (int)$row['id_arrendatario'] ?>" target="_blank"
           class="btn btn-sm btn-outline-primary" title="Ver ficha PDF">
          <i class="bi bi-file-earmark-pdf"></i>
        </a>
        <form action="registrar_evento.php" method="POST" class="d-inline">
          <?= csrf_field() ?>
          <input type="hidden" name="id_arrendatario" value="<?= (int)$row['id_arrendatario'] ?>">
          <?php if (!$row['fecha_hora_llegada']): ?>
            <button type="submit" name="registrar_llegada" class="btn btn-sm btn-success">
              <i class="bi bi-box-arrow-in-right"></i> Llegada
            </button>
          <?php elseif (!$row['fecha_hora_salida']): ?>
            <button type="submit" name="registrar_salida" class="btn btn-sm btn-danger">
              <i class="bi bi-box-arrow-right"></i> Salida
            </button>
          <?php else: ?>
            <span class="badge text-bg-secondary align-self-center">Completado</span>
          <?php endif; ?>
        </form>
      </div>
    </td>
  </tr>
<?php }

page_header('Panel de Conserjería', 'dashboard');
?>

<?php if (isset($mensajeFlash)): ?>
<script>document.addEventListener('DOMContentLoaded', () => avisar('success', <?= json_encode($mensajeFlash) ?>));</script>
<?php endif; ?>

<div class="d-flex flex-wrap align-items-center gap-2 mb-4">
  <form method="GET" class="d-flex gap-2 flex-grow-1" style="max-width:480px">
    <input type="text" name="busqueda" class="form-control" placeholder="Buscar por nombre, RUT o departamento…"
           value="<?= e($busqueda) ?>">
    <button type="submit" class="btn btn-primary"><i class="bi bi-search"></i></button>
    <?php if ($busqueda !== ''): ?>
      <a href="conserje_dashboard.php" class="btn btn-outline-secondary">Limpiar</a>
    <?php endif; ?>
  </form>
  <div class="ms-auto d-flex align-items-center gap-2">
    <span class="text-secondary" style="font-size:13px">Actualización en <strong id="countdown">10:00</strong></span>
    <button class="btn btn-outline-primary btn-sm" onclick="location.reload()">
      <i class="bi bi-arrow-clockwise"></i> Actualizar
    </button>
  </div>
</div>

<div class="row g-3 mb-4">
  <div class="col-6 col-lg-3">
    <div class="stat-card" style="cursor:default">
      <div class="stat-icon bg-success-grad"><i class="bi bi-house-check"></i></div>
      <div class="stat-info"><h3><?= count($enCurso) ?></h3><span>En arriendo ahora</span></div>
    </div>
  </div>
  <div class="col-6 col-lg-3">
    <div class="stat-card" style="cursor:default">
      <div class="stat-icon bg-warning-grad"><i class="bi bi-hourglass-split"></i></div>
      <div class="stat-info"><h3><?= count($proximos) ?></h3><span>Llegan pronto (14 días)</span></div>
    </div>
  </div>
</div>

<!-- ====== EN CURSO ====== -->
<div class="card mb-4">
  <div class="card-header"><i class="bi bi-house-check me-2 text-success"></i> Arriendos en curso</div>
  <div class="card-body">
    <?php if (!$enCurso): ?>
      <p class="text-secondary mb-0">No hay arriendos en curso<?= $busqueda ? ' para esta búsqueda' : '' ?>.</p>
    <?php else: ?>
    <div class="table-responsive">
      <table class="table table-hover align-middle">
        <thead>
          <tr>
            <th>Arrendatario</th><th>Teléfono</th><th>Depto</th><th>Propietario</th>
            <th>Fechas</th><th>Patente</th><th>Acomp.</th><th>Llegada / Salida</th><th class="text-end">Acciones</th>
          </tr>
        </thead>
        <tbody><?php foreach ($enCurso as $row) fila_conserje($row); ?></tbody>
      </table>
    </div>
    <?php endif; ?>
  </div>
</div>

<!-- ====== PRÓXIMOS ====== -->
<div class="card mb-4">
  <div class="card-header"><i class="bi bi-hourglass-split me-2 text-warning"></i> Próximas llegadas (14 días)</div>
  <div class="card-body">
    <?php if (!$proximos): ?>
      <p class="text-secondary mb-0">No hay llegadas programadas en los próximos 14 días.</p>
    <?php else: ?>
    <div class="table-responsive">
      <table class="table table-hover align-middle">
        <thead>
          <tr>
            <th>Arrendatario</th><th>Teléfono</th><th>Depto</th><th>Propietario</th>
            <th>Fechas</th><th>Patente</th><th>Acomp.</th><th>Llegada / Salida</th><th class="text-end">Acciones</th>
          </tr>
        </thead>
        <tbody><?php foreach ($proximos as $row) fila_conserje($row); ?></tbody>
      </table>
    </div>
    <?php endif; ?>
  </div>
</div>

<!-- ====== CALENDARIO ====== -->
<div class="card">
  <div class="card-header"><i class="bi bi-calendar3 me-2 text-primary"></i> Calendario</div>
  <div class="card-body"><div id="calendar" style="min-height:600px"></div></div>
</div>

<?php
$eventosJson = json_encode($eventos);
$js = <<<JS
<script src="https://cdn.jsdelivr.net/npm/fullcalendar@6.1.11/index.global.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
  const calendar = new FullCalendar.Calendar(document.getElementById('calendar'), {
    locale: 'es',
    initialView: 'dayGridMonth',
    height: 580,
    headerToolbar: { left: 'prev,next today', center: 'title', right: 'dayGridMonth,listMonth' },
    buttonText: { today: 'Hoy', month: 'Mes', list: 'Lista' },
    events: $eventosJson
  });
  calendar.render();
});

/* Ver acompañantes */
function verAcompanantes(id, nombre) {
  fetch('buscar_acompanantes.php?id_arrendatario=' + id)
    .then(r => r.json())
    .then(data => {
      let html = '<table class="table table-sm text-start"><thead><tr><th>Nombre</th><th>RUT</th></tr></thead><tbody>';
      (data || []).forEach(a => { html += '<tr><td>' + a.nombre + '</td><td>' + a.rut + '</td></tr>'; });
      html += '</tbody></table>';
      Swal.fire({ title: 'Acompañantes de ' + nombre, html: html, confirmButtonText: 'Cerrar' });
    });
}

/* Contador de recarga (10 min) */
let timeLeft = 600;
setInterval(() => {
  const m = Math.floor(timeLeft / 60), s = timeLeft % 60;
  document.getElementById('countdown').textContent = m + ':' + String(s).padStart(2, '0');
  if (timeLeft-- <= 0) location.reload();
}, 1000);
</script>
JS;
page_footer($js);
