<?php
header('Content-Type: text/html; charset=UTF-8');
ini_set('display_errors', 0);
error_reporting(E_ALL);

// Incluimos el controlador de candidatos que define $usuario, $listaCandidatosZona
require_once 'app/controllers/candidatosController.php';

// Incluimos el modelo de datos para leer configuración
require_once 'app/models/datos.php';
$datosModel = new \app\models\datos();
$config     = $datosModel->obtenerDatos();

// Definimos los límites mínimo y máximo (si no existen en la BD, usamos 1 y 3 por defecto)
$minCandidates = isset($config->minCandidates) ? (int)$config->minCandidates : 1;
$maxCandidates = isset($config->maxCandidates) ? (int)$config->maxCandidates : 3;

// Definimos las variables que se muestran en la vista. Si no existen en la tabla, usamos valores vacíos o por defecto.
$titulo  = isset($config->titulo)  ? $config->titulo  : '';
$saludo  = isset($config->saludo)  ? $config->saludo  : '';
$parrafo = isset($config->parrafo) ? $config->parrafo : '';
$nota    = isset($config->nota)    ? $config->nota    : '';
$modal   = isset($config->modal)   ? $config->modal   : 'Ver plancha';
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <?php require 'head.php'; ?>
    <link href="assets/css/effects.min.css" rel="stylesheet">
    <link href="assets/css/voto.css" rel="stylesheet">
</head>
<body data-spy="scroll" data-target=".bs-docs-sidebar">

<form method="post" action="app/controllers/votoController.php" id="form1">
    <header role="banner" class="top-header navbar navbar-inverse navbar-fixed-top bs-docs-nav">
        <nav class="navbar navbar-expand-lg navbar-transparent position-fixed top-0 z-index-3 shadow-none py-2 start-0 end-0"
             style="z-index: 2; background-color: #17c1e8b8; border-color: #17c1e8; backdrop-filter: saturate(200%) blur(30px); border-radius: 40px; margin: 9px;"
             id="navbarPresentationShadow">
            <div class="container pt-1">
                <a class="navbar-brand font-weight-bolder ms-sm-3 text-white" rel="tooltip">
                    <!-- $usuario->name es definido en candidatosController.php -->
                    <?php echo $usuario->name; ?>
                </a>
                <!-- Campo oculto para compatibilidad -->
                <input type="hidden" name="opcionVoto" id="opcionVoto" value="">
                <a onclick="valida()" class="btn btn-sm mb-0 ms-auto boton-votar"
                   style="color: #ffebeb; background-color: #f67707; border-color: #f67707;">VOTAR</a>
                <a class="btn btn-sm mb-0 ms-auto boton-votar"
                   style="color: #ffebeb; background-color: #04548c; border-color: #04548c;"
                   href="app/controllers/logoutController.php?from=delegado">SALIR SIN VOTAR</a>
            </div>
        </nav>
    </header>

    <div id="content" class="header bs-header" style="margin-top: 100px; padding: 20px;">
        <div style="300px; float:right">
            <!-- $titulo y $usuario->zona se usan sin warning porque ya los definimos -->
            <h2><?php echo $titulo; ?></h2>
            <h4>ZONA ELECTORAL: <?php echo $usuario->zona; ?></h4>
        </div>
        <div class="container">
            <h2><img src="assets/images/logo.png" class="logo" alt="logo"></h2>
        </div>
    </div>

    <div class="container" style="padding: 30px;">
        <div class="col-md-12">
            <section id="circle">
                <div class="page-header">
                    <p style="font-size: 24px;"><?php echo $saludo; ?></p>
                    <p style="font-size: 21px;"><?php echo $parrafo; ?><br></p>
                    <hr/>
                    <h1>
                        <div class="text-center">
                            <strong><?php echo $nota; ?></strong>
                        </div>
                    </h1>
                    <div class="row candidatos_row">
                        <?php
// Sprint 10B: precargar todas las planchas en 1 query (elimina N+1)
$candidatosModel = new \app\models\candidatos();
$todasPlanchas = [];
if (!empty($listaCandidatosZona)) {
    $ids = array_column((array)$listaCandidatosZona, 'id');
    $todasPlanchas = $candidatosModel->planchasBatch($ids);
}
?>
<?php foreach ($listaCandidatosZona as $candidato): ?>
                            <div class="col-lg-3 col-sm-6 col-xs-12 text-center candidato-row" id="<?php echo $candidato->numero; ?>div">
                                <div class="hover ehover13">
                                    <label for="candidato_<?php echo $candidato->numero; ?>" style="display:block;width:100%;text-align:center;">
                                        <?php if ($candidato->descripcion === 'SI'): ?>
                                            <img style="width: 200px; height: 200px; display:block; margin:0 auto;"
                                                 class="img-circle img-responsive img-center rounded-circle"
                                                 src="assets/candidatos/<?php echo $candidato->cedula; ?>.jpg" alt="">
                                        <?php else: ?>
                                            <img style="width: 200px; height: 200px; display:block; margin:0 auto;"
                                                 class="img-circle img-responsive img-center"
                                                 src="assets/candidatos/1.jpg"
                                                 alt="">
                                        <?php endif; ?>

                                        <?php
                                        // Sprint 10B: usar array precargado — sin query adicional
                                        $planchas = $todasPlanchas[$candidato->id] ?? [];
                                        ?>
                                        <div class="overlay">
                                            <h2>SELECCIONAR</h2>
                                            <a data-bs-toggle="modal"
                                               data-bs-target="#plancha_<?php echo $candidato->numero; ?>"
                                               style="color: white;">
                                                <?php echo $modal; ?>
                                            </a>
                                        </div>
                                    </label>
                                    <br>
                                    <!-- Checkbox para selección múltiple -->
                                    <input type="checkbox" style="height: 30px; width: 100%;" class="voto_item"
                                           value="<?php echo $candidato->numero; ?>" name="voto[]"
                                           id="candidato_<?php echo $candidato->numero; ?>"
                                           onclick="marcaOpcion('<?php echo $candidato->posicion; ?>');"
                                           onchange="updateSelection(event);">
                                    <input type="hidden" value="<?php echo $candidato->zona; ?>" name="zonas_votos"
                                           id="<?php echo $candidato->zona; ?>">
                                    <h3 style="font-size: 16px;">
                                        <?php echo $candidato->posicion; ?><br>
                                    </h3>
                                    <h3 style="font-size: 18px;">
                                        <?php echo $candidato->nombre; ?><br>
                                    </h3>
                                </div>
                            </div>

                            <!-- Modal con detalle de la plancha -->
                            <div class="modal fade" id="plancha_<?php echo $candidato->numero; ?>" tabindex="-1"
                                 aria-labelledby="exampleModalLabel" aria-hidden="true">
                                <div class="modal-dialog">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <h5 class="modal-title" id="exampleModalLabel">
                                                <?php echo $candidato->posicion; ?>
                                            </h5>
                                            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                                        </div>
                                        <div class="modal-body">
                                            <table class="table">
                                                <thead>
                                                <tr>
                                                    <th scope="col"></th>
                                                    <th scope="col">Lista</th>
                                                    <th scope="col">Descripción</th>
                                                </tr>
                                                </thead>
                                                <tbody>
                                                <?php if (!empty($planchas)): ?>
                                                    <?php foreach ($planchas as $plancha): ?>
                                                        <tr>
                                                            <th scope="row"><?php echo $plancha->numero; ?></th>
                                                            <td><?php echo $plancha->nombre; ?></td>
                                                            <td><?php echo $plancha->suplente; ?></td>
                                                        </tr>
                                                    <?php endforeach; ?>
                                                <?php else: ?>
                                                    <tr>
                                                        <td colspan="3">Sin información de planchas</td>
                                                    </tr>
                                                <?php endif; ?>
                                                </tbody>
                                            </table>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                                                Cerrar
                                            </button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        <?php endforeach; ?>

                        <!-- Campo oculto y botón de votación -->
                        <input type="hidden" name="opcionVoto" id="opcionVoto" value="">
                        <a onclick="valida()" class="btn btn-sm mb-0 ms-auto boton-votar"
                           style="color: #ffebeb; background-color: #f67707; border-color: #f67707;">
                           VOTAR
                        </a>
                    </div>
                </div>
            </section>
        </div>
    </div>
</form>

<div class="clearfix"></div>
<footer class="bs-footer">
    <div class="container text-center">
        <p>
            Copyright
            2012 - 2025 <a href="https://fyclsingenieria.com/" style="text-decoration: none;">FYCLS S.A.S</a>
        </p>
    </div>
</footer>

<script src="assets/js/voto.js"></script>
<script>
function valida() {
    var seleccionados = document.querySelectorAll('input[name="voto[]"]:checked');
    var min = <?php echo $minCandidates; ?>;
    var max = <?php echo $maxCandidates; ?>;

    if (seleccionados.length < min) {
        alert("Por favor seleccione al menos " + min + " candidato(s).");
        return;
    }
    if (seleccionados.length > max) {
        alert("Por favor seleccione como máximo " + max + " candidato(s).");
        return;
    }
    document.getElementById('form1').submit();
}

function updateSelection(event) {
    var checkbox = event.target;
    if (checkbox.checked) {
        var seleccionados = document.querySelectorAll('input[name="voto[]"]:checked');
        var max = <?php echo $maxCandidates; ?>;
        if (seleccionados.length > max) {
            checkbox.checked = false;
            alert("Máximo permitido: " + max + " elección(es) para esta votación.");
        }
    }
}
</script>
</body>
</html>
