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

$id_usuario = $_SESSION['id_usuario'];

/* ---------- Propietario y su departamento ---------- */
$prop = departamento_de_usuario($conn, $id_usuario);
if (!$prop) die('Propietario no encontrado');

$id_propietario = (int)$prop['id_propietario'];

/* Un departamento puede tener varios propietarios (matrimonios): todos
   ven los mismos arriendos. */
$idsDepto   = ids_propietarios_departamento($conn, $prop['numero_departamento']);
$inPropietarios = sql_in_propietarios($idsDepto);
$esCompartido   = count($idsDepto) > 1;

/* ---------- Arrendatarios ---------- */
$result = $conn->query("
    SELECT a.*,
        GREATEST(DATEDIFF(a.fecha_salida, a.fecha_inicio), 1) AS dias_totales,
        (SELECT COUNT(*) FROM acompanantes ac WHERE ac.id_arrendatario = a.id_arrendatario) AS num_acomp,
        CASE
            WHEN CURDATE() BETWEEN a.fecha_inicio AND a.fecha_salida THEN 'En Arriendo'
            WHEN CURDATE() < a.fecha_inicio THEN 'Pendiente'
            ELSE 'Finalizado'
        END AS estado,
        CASE
            WHEN CURDATE() BETWEEN a.fecha_inicio AND a.fecha_salida THEN 1
            WHEN CURDATE() < a.fecha_inicio THEN 2
            ELSE 3
        END AS prioridad
    FROM arrendatarios a
    WHERE a.id_propietario IN ($inPropietarios)
    ORDER BY prioridad, a.fecha_inicio");

$rows = [];
$total = $vigentes = $pendientes = $finalizados = 0;
while ($r = $result->fetch_assoc()) {
    $rows[] = $r;
    $total++;
    if ($r['estado'] === 'En Arriendo') $vigentes++;
    if ($r['estado'] === 'Pendiente')   $pendientes++;
    if ($r['estado'] === 'Finalizado')  $finalizados++;
}

/* ---------- Ocupación últimos 12 meses (noches arrendadas por mes) ---------- */
$ocupacion = array_fill(0, 12, 0);
$etiquetasMes = [];
$mesesNombre = ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'];
$rangos = [];
for ($i = 11; $i >= 0; $i--) {
    $ini = new DateTime("first day of -$i month");
    $fin = (clone $ini)->modify('last day of this month');
    $rangos[] = [$ini, $fin];
    $etiquetasMes[] = $mesesNombre[(int)$ini->format('n') - 1] . ' ' . $ini->format('y');
}
foreach ($rows as $r) {
    $aIni = new DateTime($r['fecha_inicio']);
    $aFin = new DateTime($r['fecha_salida']);
    foreach ($rangos as $idx => [$mIni, $mFin]) {
        $desde = max($aIni, $mIni);
        $hasta = min($aFin, $mFin);
        if ($desde <= $hasta) {
            $ocupacion[$idx] += $desde->diff($hasta)->days + ($hasta == $aFin ? 0 : 1);
        }
    }
}

page_header('Dashboard Propietario', 'dashboard');
?>

<?php if (isset($_GET['registro']) && $_GET['registro'] === 'ok'): ?>
<script>document.addEventListener('DOMContentLoaded', () => avisar('success', 'Arrendatario registrado y ficha enviada por correo'));</script>
<?php endif; ?>
<?php if (isset($_GET['eliminado']) && $_GET['eliminado'] === 'ok'): ?>
<script>document.addEventListener('DOMContentLoaded', () => avisar('success', 'Arrendatario eliminado'));</script>
<?php endif; ?>

<div class="d-flex flex-wrap align-items-center gap-2 mb-4">
  <div>
    <div class="fs-5 fw-bold">Hola, <?= e($_SESSION['nombre']) ?> 👋</div>
    <div class="text-secondary" style="font-size:14px">
      Departamento <strong><?= e($prop['numero_departamento']) ?></strong> ·
      Estacionamiento <strong><?= e($prop['estacionamiento']) ?></strong>
      <?php if ($esCompartido): ?>
        · <span class="badge text-bg-light border">
            <i class="bi bi-people"></i> Departamento compartido con otro propietario
          </span>
      <?php endif; ?>
    </div>
  </div>
  <a href="registrar_arrendatario.php" class="btn btn-primary ms-auto">
    <i class="bi bi-person-plus me-1"></i> Nuevo Arrendatario
  </a>
</div>

<!-- ====== TARJETAS FILTRO ====== -->
<div class="row g-3 mb-4">
  <?php
  $cards = [
      ['Todos',       $total,       'bg-info-grad',      'bi-collection', ''],
      ['En Arriendo', $vigentes,    'bg-success-grad',   'bi-house-check', 'En Arriendo'],
      ['Pendientes',  $pendientes,  'bg-warning-grad',   'bi-hourglass-split', 'Pendiente'],
      ['Finalizados', $finalizados, 'bg-secondary-grad', 'bi-check2-circle', 'Finalizado'],
  ];
  foreach ($cards as $c): ?>
  <div class="col-6 col-lg-3">
    <div class="stat-card filtro" data-estado="<?= $c[4] ?>">
      <div class="stat-icon <?= $c[2] ?>"><i class="bi <?= $c[3] ?>"></i></div>
      <div class="stat-info"><h3><?= $c[1] ?></h3><span><?= $c[0] ?></span></div>
    </div>
  </div>
  <?php endforeach; ?>
</div>

<!-- ====== TABLA ====== -->
<div class="card mb-4">
  <div class="card-header d-flex align-items-center">
    <i class="bi bi-people me-2 text-primary"></i> Arrendatarios
  </div>
  <div class="card-body">
    <div class="table-responsive">
      <table id="tablaArrendatarios" class="table table-hover align-middle w-100">
        <thead>
          <tr>
            <th>Estado</th>
            <th>Código</th>
            <th>Nombre</th>
            <th>RUT</th>
            <th>Fechas</th>
            <th>Días</th>
            <th>Acomp.</th>
            <th>QR</th>
            <th class="text-end">Acciones</th>
          </tr>
        </thead>
        <tbody>
        <?php foreach ($rows as $a): ?>
          <tr>
            <td><?= badge_estado($a['estado']) ?></td>
            <td class="text-center">
              <?php $img = 'uploads_arrendatarios/' . $a['imagen'];
              if (!empty($a['imagen']) && file_exists($img)): ?>
                <a href="<?= e($img) ?>" target="_blank" title="Código de acceso">
                  <img src="<?= e($img) ?>" class="thumb-arrendatario" alt="código">
                </a>
              <?php else: ?><span class="text-secondary">—</span><?php endif; ?>
            </td>
            <td>
              <div class="fw-semibold"><?= e($a['nombre']) ?></div>
              <div class="text-secondary" style="font-size:12px">
                <?= e($a['celular']) ?>
                <?php if ($wa = link_whatsapp($a['celular'])): ?>
                  <a href="<?= e($wa) ?>" target="_blank" class="text-success ms-1" title="WhatsApp"><i class="bi bi-whatsapp"></i></a>
                <?php endif; ?>
              </div>
            </td>
            <td><?= e($a['rut']) ?></td>
            <td style="font-size:13px">
              <i class="bi bi-box-arrow-in-right text-success"></i> <?= fecha_cl($a['fecha_inicio']) ?> <?= hora_cl($a['hora_ingreso']) ?><br>
              <i class="bi bi-box-arrow-right text-danger"></i> <?= fecha_cl($a['fecha_salida']) ?> <?= hora_cl($a['hora_salida']) ?>
            </td>
            <td class="text-center"><?= (int)$a['dias_totales'] ?></td>
            <td class="text-center"><?= (int)$a['num_acomp'] ?></td>
            <td class="text-center">
              <?php if (!empty($a['url_externa'])): ?>
                <a href="<?= e($a['url_externa']) ?>" target="_blank" class="btn btn-sm btn-outline-secondary" title="QR / Enlace externo">
                  <i class="bi bi-qr-code"></i>
                </a>
              <?php else: ?><span class="text-secondary">—</span><?php endif; ?>
            </td>
            <td class="text-end">
              <div class="btn-group btn-group-sm">
                <a href="generar_ficha.php?id=<?= (int)$a['id_arrendatario'] ?>" target="_blank"
                   class="btn btn-outline-primary" title="Ver ficha PDF">
                  <i class="bi bi-file-earmark-pdf"></i>
                </a>
                <a href="editar_arrendatario.php?id=<?= (int)$a['id_arrendatario'] ?>"
                   class="btn btn-outline-warning" title="Editar">
                  <i class="bi bi-pencil"></i>
                </a>
                <button class="btn btn-outline-info" title="Enviar ficha por correo"
                        onclick="enviarCorreoManual(<?= (int)$a['id_arrendatario'] ?>, '<?= e($a['email']) ?>')">
                  <i class="bi bi-envelope"></i>
                </button>
                <button class="btn btn-outline-danger" title="Eliminar"
                        onclick="eliminarArrendatario(<?= (int)$a['id_arrendatario'] ?>, '<?= e(addslashes($a['nombre'])) ?>')">
                  <i class="bi bi-trash"></i>
                </button>
              </div>
            </td>
          </tr>
        <?php endforeach; ?>
        </tbody>
      </table>
    </div>
  </div>
</div>

<!-- ====== GRÁFICO OCUPACIÓN ====== -->
<div class="card">
  <div class="card-header"><i class="bi bi-bar-chart me-2 text-primary"></i> Noches arrendadas por mes (últimos 12 meses)</div>
  <div class="card-body">
    <canvas id="graficoOcupacion" height="90"></canvas>
  </div>
</div>

<!-- form oculto para eliminar vía POST -->
<form id="formEliminar" method="POST" action="eliminar_arrendatario.php" class="d-none">
  <?= csrf_field() ?>
  <input type="hidden" name="id" id="eliminarId">
</form>

<?php
$js = <<<JS
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
<script>
$(function () {
  const tabla = $('#tablaArrendatarios').DataTable({
    responsive: true,
    ordering: false,
    pageLength: 10,
    language: DT_ES
  });

  $('.filtro').on('click', function () {
    $('.filtro').removeClass('activa');
    $(this).addClass('activa');
    tabla.column(0).search($(this).data('estado')).draw();
  });
});

function eliminarArrendatario(id, nombre) {
  Swal.fire({
    title: '¿Eliminar arrendatario?',
    text: 'Se eliminará a ' + nombre + ' junto a sus acompañantes y registros.',
    icon: 'warning',
    showCancelButton: true,
    confirmButtonColor: '#e11d48',
    cancelButtonColor: '#64748b',
    confirmButtonText: 'Sí, eliminar',
    cancelButtonText: 'Cancelar'
  }).then(r => {
    if (r.isConfirmed) {
      document.getElementById('eliminarId').value = id;
      document.getElementById('formEliminar').submit();
    }
  });
}

function enviarCorreoManual(id, emailSugerido) {
  Swal.fire({
    title: 'Enviar ficha por correo',
    html: 'Se enviará el correo con la <b>ficha PDF adjunta</b>, el código de acceso y el enlace QR.',
    input: 'email',
    inputLabel: 'Email destinatario',
    inputValue: emailSugerido || '',
    inputPlaceholder: 'correo@ejemplo.cl',
    showCancelButton: true,
    confirmButtonText: '<i class="bi bi-send"></i> Enviar',
    cancelButtonText: 'Cancelar',
    showLoaderOnConfirm: true,
    preConfirm: (email) => {
      return fetch('enviar_correo_manual.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ id_arrendatario: id, email: email })
      })
      .then(res => res.json())
      .catch(() => ({ ok: false, error: 'Error de conexión' }));
    },
    allowOutsideClick: () => !Swal.isLoading()
  }).then(result => {
    if (result.isConfirmed) {
      const data = result.value;
      if (data && data.ok) {
        Swal.fire('Enviado', 'Correo enviado correctamente con la ficha adjunta.', 'success');
      } else {
        Swal.fire('Error', (data && data.error) || 'No se pudo enviar', 'error');
      }
    }
  });
}

/* Gráfico de ocupación */
new Chart(document.getElementById('graficoOcupacion'), {
  type: 'bar',
  data: {
    labels: ETIQUETAS_MES,
    datasets: [{
      label: 'Noches arrendadas',
      data: DATOS_OCUPACION,
      borderRadius: 8,
      backgroundColor: 'rgba(79,70,229,.75)'
    }]
  },
  options: {
    plugins: { legend: { display: false } },
    scales: { y: { beginAtZero: true, ticks: { precision: 0 } } }
  }
});
</script>
JS;

$js = str_replace(
    ['ETIQUETAS_MES', 'DATOS_OCUPACION'],
    [json_encode($etiquetasMes), json_encode($ocupacion)],
    $js
);
page_footer($js);
