<?php
session_save_path("/home/evolucionamos/public_html/mejora/sessions");
session_start();
date_default_timezone_set('America/Bogota');
if (empty($_SESSION['adm']) || ($_SESSION['role'] != 1 && $_SESSION['role'] != 3)) {
    header("Location: index.php"); exit;
}
require_once '../app/models/votacion.php';

$model = new \app\models\votacion();
$vid   = isset($_GET['vid']) ? (int)$_GET['vid'] : 0;

if (!$vid) { header("Location: resultados.php"); exit; }

$votacion = $model->obtener($vid);
if (!$votacion) { header("Location: resultados.php"); exit; }

// =====================================================================
// TODOS LOS DATOS EN 4 QUERIES (elimina el N+1 completamente)
// =====================================================================
$resultadosAll      = $model->resultadosVotacion($vid);       // 1 query: candidatos + votos JOIN
$totalVotosPorZona  = $model->totalVotosPorZona($vid);        // 1 query: totales por zona
$censos             = $model->censoPorZonas();                 // 1 query: censo por zona
$participantes      = $model->participantesVotacion($vid);    // 1 query: participación
$zonas              = $model->zonasVotacion($vid);            // 1 query: lista zonas
$totalGlobal        = array_sum($totalVotosPorZona);
$censoGlobal        = $censos['_total'] ?? 0;
$participacionGlobal = ($censoGlobal > 0) ? round(($totalGlobal / $censoGlobal) * 100, 2) : 0;

// Agrupar resultados por zona
$resultadosPorZona = [];
foreach ($resultadosAll as $r) {
    $z = $r->zona ?: 'Sin Zona';
    $resultadosPorZona[$z][] = $r;
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Reporte_<?php echo htmlspecialchars($votacion->titulo); ?>_<?php echo date('Ymd'); ?></title>
    <style>
        @page { size:letter; margin:2cm; }
        @media print {
            .no-print { display:none; }
            .page-break { page-break-after:always; }
            body { background:#fff !important; padding:0 !important; }
            .container-wrapper { width:100% !important; margin:0 !important; padding:0 !important; box-shadow:none !important; }
        }
        body { font-family:"Verdana",Geneva,sans-serif; color:#333; line-height:1.5; background:#f4f4f4; margin:0; padding:20px; }
        .container-wrapper { background:#fff; max-width:850px; margin:0 auto; padding:50px; box-shadow:0 0 15px rgba(0,0,0,.1); }
        .header-ent { border-bottom:3px solid #04548c; padding-bottom:10px; margin-bottom:30px; display:flex; justify-content:space-between; align-items:center; }
        .logo-c { max-height:70px; }
        .report-title { text-align:right; text-transform:uppercase; }
        .report-title h1 { margin:0; font-size:20px; color:#04548c; }
        .report-title p { margin:0; font-size:10px; color:#777; }
        .global-summary { background:#f9f9f9; padding:30px; border:1px solid #eee; text-align:center; margin-bottom:40px; }
        .global-summary h1 { font-size:14px; text-transform:uppercase; color:#555; letter-spacing:1px; margin:0 0 5px; }
        .total-number { font-size:55px; font-weight:bold; color:#04548c; margin:10px 0; }
        table { width:100%; border-collapse:collapse; margin-top:20px; }
        th { background:#04548c; color:#fff; padding:12px 10px; text-align:left; font-size:11px; text-transform:uppercase; }
        td { padding:12px 10px; border-bottom:1px solid #eee; font-size:12px; }
        .text-right { text-align:right; }
        .text-center { text-align:center; }
        .progress-box { background:#eee; width:100%; height:8px; border-radius:4px; overflow:hidden; margin-top:5px; }
        .progress-fill { background:#17c1e8; height:100%; }
        .footer-ent { margin-top:30px; border-top:1px solid #eee; padding-top:15px; text-align:center; font-size:10px; color:#999; }
        .zona-title { background:#2b5a9e; color:#fff; padding:10px 15px; font-size:13px; font-weight:bold; text-transform:uppercase; margin-top:30px; }
    </style>
</head>
<body onload="window.print();">

    <div class="no-print" style="background:#333;color:#fff;padding:10px;text-align:center;margin-bottom:20px;font-size:12px;">
        VISTA PREVIA — REPORTE: <?php echo htmlspecialchars($votacion->titulo); ?>
        <a href="resultados.php" style="color:#17c1e8;margin-left:20px;text-decoration:none;">← VOLVER</a>
    </div>

    <div class="container-wrapper">

        <!-- PORTADA / RESUMEN GLOBAL -->
        <div class="page-break">
            <div class="header-ent">
                <img src="../assets/images/logo.png" class="logo-c">
                <div class="report-title">
                    <h1>REPORTE FINAL DE VOTACIÓN</h1>
                    <p><?php echo htmlspecialchars($votacion->titulo); ?></p>
                    <p>Emisión: <?php echo date('d/m/Y H:i'); ?></p>
                </div>
            </div>

            <div class="global-summary">
                <h1>Consolidado General</h1>
                <div class="total-number"><?php echo number_format($totalGlobal, 0, ',', '.'); ?></div>
                <p style="font-size:16px;font-weight:bold;color:#888;">
                    PARTICIPACIÓN: <?php echo $participacionGlobal; ?>% DEL CENSO ELECTORAL
                </p>
                <?php if ($participantes && $participantes->total > 0): ?>
                    <p style="font-size:13px;color:#666;">
                        <?php echo $participantes->votaron; ?> delegados votaron de <?php echo $participantes->total; ?> registrados
                    </p>
                <?php endif; ?>
            </div>

            <h3 style="font-size:14px;color:#04548c;text-transform:uppercase;">Información General</h3>
            <table>
                <thead>
                    <tr>
                        <th>Entidad</th>
                        <th class="text-right">Censo</th>
                        <th class="text-right">Votos</th>
                        <th class="text-right">Participación</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($zonas as $z):
                        $vZ = isset($totalVotosPorZona[$z->zona]) ? $totalVotosPorZona[$z->zona] : 0;
                        $cZ = isset($censos[$z->zona]) ? $censos[$z->zona] : 0;
                        $pZ = ($cZ > 0) ? round(($vZ/$cZ)*100, 2) : 0;
                    ?>
                        <tr>
                            <td><b><?php echo strtoupper(htmlspecialchars($z->zona)); ?></b></td>
                            <td class="text-right"><?php echo number_format($cZ,0,',','.'); ?></td>
                            <td class="text-right"><?php echo number_format($vZ,0,',','.'); ?></td>
                            <td class="text-right"><b><?php echo $pZ; ?>%</b></td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>

            <div class="footer-ent">
                <p>FYCLS S.A.S - Sistema Brújula Virtual - Documento Confidencial</p>
            </div>
        </div>

        <!-- PÁGINA POR ZONA: UN LOOP sin queries adicionales -->
        <?php foreach ($zonas as $z):
            if (!isset($resultadosPorZona[$z->zona])) continue;
            $rankingZona = $resultadosPorZona[$z->zona];
            $totalZ      = isset($totalVotosPorZona[$z->zona]) ? $totalVotosPorZona[$z->zona] : 0;
        ?>
        <div class="page-break" style="margin-top:50px;">
            <div class="header-ent">
                <img src="../assets/images/logo.png" class="logo-c">
                <div class="report-title">
                    <h1><?php echo htmlspecialchars(mb_strtoupper($votacion->pregunta ?: $votacion->titulo)); ?></h1>
                    <p>ENTIDAD: <?php echo strtoupper(htmlspecialchars($z->zona)); ?></p>
                </div>
            </div>

            <div style="margin-bottom:20px;border-left:5px solid #04548c;padding-left:15px;">
                <span style="font-size:11px;color:#888;text-transform:uppercase;">Total Votos:</span><br>
                <span style="font-size:22px;font-weight:bold;color:#04548c;"><?php echo number_format($totalZ,0,',','.'); ?></span>
            </div>

            <table>
                <thead>
                    <tr>
                        <th class="text-center" style="width:10%;">Puesto</th>
                        <th style="width:50%;">Opción / Posición</th>
                        <th class="text-right" style="width:15%;">Votos</th>
                        <th class="text-right" style="width:25%;">Participación</th>
                    </tr>
                </thead>
                <tbody>
                    <?php $puesto = 1; foreach ($rankingZona as $c):
                        $pct = ($totalZ > 0) ? round(($c->total_votos/$totalZ)*100, 2) : 0;
                    ?>
                        <tr>
                            <td class="text-center"><b><?php echo $puesto; ?>°</b></td>
                            <td>
                                <b><?php echo htmlspecialchars($c->nombre); ?></b><br>
                                <?php if ($c->posicion): ?>
                                    <small style="color:#777;"><?php echo htmlspecialchars($c->posicion); ?></small>
                                <?php endif; ?>
                            </td>
                            <td class="text-right"><b><?php echo number_format($c->total_votos,0,',','.'); ?></b></td>
                            <td class="text-right">
                                <div style="font-size:10px;font-weight:bold;color:#555;"><?php echo $pct; ?>%</div>
                                <div class="progress-box"><div class="progress-fill" style="width:<?php echo $pct; ?>%;"></div></div>
                            </td>
                        </tr>
                    <?php $puesto++; endforeach; ?>
                </tbody>
            </table>

            <div class="footer-ent">
                <p>FYCLS S.A.S — Entidad: <?php echo strtoupper(htmlspecialchars($z->zona)); ?></p>
            </div>
        </div>
        <?php endforeach; ?>

    </div>
</body>
</html>
