<?php   
date_default_timezone_set('America/Caracas'); // Establece la zona horaria
require("../../modelos/Administrador/Administrador.php");
session_start();
$admin = new Administrador; //Creamos nuestro objeto

//======================================================================================================//
    //Definicion de todas las variables
 $op = isset($_GET["op"]) ? limpiarCadena($_GET["op"]) : ""; // $_GET
 $id_numero = isset($_POST["id_numero"]) ? limpiarCadena($_POST["id_numero"]) : "";
 $cartonId = isset($_POST["cartonId"]) ? limpiarCadena($_POST["cartonId"]) : "";

 $numero = isset($_POST["numero"]) ? limpiarCadena($_POST["numero"]) : "";
 $letra = isset($_POST["letra"]) ? limpiarCadena($_POST["letra"]) : "";
 $url = isset($_POST["url"]) ? limpiarCadena($_POST["url"]): "";
 $ultimo_id = isset($_POST["ultimo_id"]) ? limpiarCadena($_POST["ultimo_id"]) : "";
 
  $id_usuario_ganador = isset($_POST["id_usuario"]) ? limpiarCadena($_POST["id_usuario"]) : "";
  $id_partida = isset($_POST["id_partida"]) ? limpiarCadena($_POST["id_partida"]) : "";
//Verificar si el usuario ha iniciado sesion 
 if (!isset($_SESSION['_AL_id_bingo'])) { 
    header('Location: '.$rutaBase.'login.php?Acceso_No_Permitido');
    exit;
}
$id_usuario = $_SESSION['_AL_id_bingo'];



//======================================================================================================//

switch ($op){

  case 'listarnumeroscantados':

  $rspta=$admin->MostrarNumerosCantados();

  $data = [];
  while ($row = $rspta->fetch_assoc()) {
    $data[] = [
        "0"=>$row['numero'],
        "1"=>$row['id'],
        "2"=>$row['letra'],
    ];
}

echo json_encode($data);
break;

case 'listartodoslosnumeroscantados':

  $rspta=$admin->MostrarTodos_LosNumeros_Cantados();

  $data = [];
  while ($row = $rspta->fetch_assoc()) {
    $data[] = [
        "0"=>$row['numero'],
        "1"=>$row['id'],
        "2"=>$row['letra'],
    ];
}

echo json_encode($data);
break;

case 'marcado':
$rspta=$jugador->cambiarmarcado($id_numero);
echo $rspta;
break;

case 'generarcarton':
$rspta=$admin->generarYGuardarCartones();
echo $rspta;
break;

case 'EmpezarPartida':
$fechaActual = date('Y-m-d H:i:s');
$rspta=$admin->EmpezarPartida($fechaActual);
echo $rspta ? "Partida Iniciada" : "Error No se pudo iniciar";
break;

case 'FinalizarPartida':
$fechaActual = date('Y-m-d H:i:s');
$rspta=$admin->FinalizarPartida($fechaActual);
echo $rspta ? "Partida Finalizada" : "Error No se pudo finalizar";
break;

case 'ValidarPartida':
    $rspta = $admin->ValidarPartida();
  
    $data = [];
    while ($row = $rspta->fetch_assoc()) {
        $estado = $row['estado']; // Corregido: asignación en lugar de declaración

        // Cambiar el operador de asignación '=' a '=='
        if ($estado == 1) {
            echo "Ya existe una partida iniciada";
            break; // Salir del bucle una vez que se encuentra un estado válido
        } else {
            echo "Aun no hay partida iniciada";
            break; // Salir del bucle después de la respuesta alternativa
        }
    }
    break;

case 'enviarNumeroYLetra':

$rspta=$admin->enviarNumeroYLetra($numero,$letra);
echo $rspta;
break;

case 'enviarurl':

$rspta=$admin->enviarurl($url);
echo $rspta ? "Registro exitoso" : "Error No se pudo guardar";
break;

case 'listarjugadoronline':
    $rspta=$admin->listar();

    $data = [];
    while ($row = $rspta->fetch_assoc()) {
        $data[] = [
            "0" => $row['usuario'],
        ];
    }
    $results = [
        "sEcho" => 1,
        "iTotalRecords" => count($data),
        "iTotalDisplayRecords" => count($data),
        "aaData" => $data
    ];

    echo json_encode($results);//Retornar el resultado utilizando json
    break;
    
case 'elegir':
$rspta=$jugador->guardarelegido($cartonId,$id_usuario);
echo $rspta ? "Carton Elegido Correctamente" : "ERROR: No se pudo elegir";

break;

case 'listarcartonganador':
    $rspta = $admin->listarcartonganador();
    $cartones = [];

    
    
    while ($row = $rspta->fetch_assoc()) {
        // Agrupar por carton_id
        $cartones[$row['carton_id']][] = $row; 
    }

    $html = '<div class="row">'; // Abre la fila principal
    $hayGanadores = false; // Variable para verificar si hay cartones ganadores

    foreach ($cartones as $carton_id => $numeros) {
        $countMarcados = 0; // Contador de números marcados
$id_partida = $numeros[0]['id_partida']; // Assuming this value is the same for all numbers in the carton
    $id_usuario = $numeros[0]['id_usuario'];
        // Contar cuántos están marcados
        foreach ($numeros as $numero) {
            if ($numero['marcado'] == 1) {
                $countMarcados++;
            }
        }

        // Si hay 25 o más números marcados, construimos el HTML del cartón
        if ($countMarcados >= 25) {
            $hayGanadores = true; // Hay al menos un ganador
            $html .= '
            <div class="col-md-6 mb-6"> <!-- Añadir margen inferior para separación -->
            <div class="card card-widget">
            <div class="card-header d-flex justify-content-between align-items-center">
            <h3 class="card-title">N° de Carton: ' . htmlspecialchars($carton_id) . '</h3>
            
            <button type="button" onclick="MarcarGanador(' . htmlspecialchars(json_encode($carton_id)) . ',' . htmlspecialchars(json_encode($id_partida)) . ', ' . htmlspecialchars(json_encode($id_usuario)) . ')" class="btn btn-primary btn-sm">
    <i class="fas fa-check "></i> Gano
    </button>
            </div>
            <table id="carton" class="table table-bordered">
            <thead>
            <tr>
            <th class="b">B</th>
            <th class="i">I</th>
            <th class="n">N</th>
            <th class="g">G</th>
            <th class="o">O</th>
            </tr>
            </thead>
            <tbody>';
            
            // Inicializar un contador para números
            $count = 0;
            $username = ''; // Variable para almacenar el id_usuario

            foreach ($numeros as $numero) {
                // Guardar el id_usuario del primer número
                if ($username === '') {
                    $username = $numero['username'];
                }
                
                // Si hemos llegado a 5 números, cerrar la fila y abrir una nueva
                if ($count % 5 == 0) {
                    if ($count > 0) { // No cerrar una fila antes de añadir el primer número
                        $html .= '</tr>'; // Cerrar la fila anterior
                    }
                    $html .= '<tr>'; // Iniciar una nueva fila
                }
               
                // Verificar si el número es 0
            if ($numero['numero'] == 0) {
                $html .= '<td><button type="button" class="btn btn-default numero-grande" disabled>
                <i class="fa-solid fa-star"></i>
              </button></td>'; // Mostrar el ícono
            } else {
               
                // Agregar el botón dentro del td
                $botonColor = $numero['marcado'] == 1 ? 'btn-success' : 'btn-secondary';
                $estado = $numero['estado']; // Asegúrate de que 'estado' viene de tu array

                // Verificar si el estado es INACTIVO
                $disabled = ($estado == 'INACTIVO') ? 'disabled' : '';

                $html .= '<td>
                <button type="button" class="btn ' . $botonColor . '" id="btn-' . htmlspecialchars($numero['id']) . '" onclick="marcar(' . htmlspecialchars($numero['id']) . ')" ' . $disabled . '>
                ' . htmlspecialchars($numero['numero']) . '
                </button>
                </td>';
               } 

                $count++; // Incrementar el contador
            }

            // Cerrar la última fila si hay algún número
            if ($count > 0) {
                $html .= '</tr>'; // Asegurarse de cerrar la fila final
            }
            
            // Agregar el id_usuario debajo del carton_id
            $html .= '<tr><td colspan="5">Usuario: ' . htmlspecialchars($username) . '</td></tr>'; 

            $html .= '    </tbody>
            </table>
            </div>
                </div>'; // Cierra el div del cartón
        }
    }

    // Si no hay cartones ganadores
    if (!$hayGanadores) {
        echo json_encode(["status" => "error", "message" => "No hay cartones ganadores"]);
    } else {
        $html .= '</div>'; // Cierra la fila principal
        echo json_encode(["status" => "success", "html" => $html]);
    }
break;

case 'MarcarGanador':
$rspta=$admin->MarcarGanador($cartonId,$id_partida, $id_usuario_ganador);
echo $rspta ? "Ganador Elegido Correctamente" : "ERROR: No se pudo elegir";

break;

     case 'listarhistorialpartida':
    $rspta = $admin->listarhistorialpartida();

    $data = [];
    while ($row = $rspta->fetch_assoc()) {
        $data[] = [
            "0" => $row['id'],
            "1" => $row['fecha_inicio'],
            "2" => $row['fecha_finalizada'],
            "3" => ($row['estado'] != 0 ? '<span class="right badge badge-success" align="center">En Curso</span>' : '<span class="right badge badge-danger" align="center">Finalizada</span>'),
            "4" => $row['ganadores'] ? $row['ganadores'] : '' // Muestra todos los ganadores
        ];
    }
    $results = [
        "sEcho" => 1,
        "iTotalRecords" => count($data),
        "iTotalDisplayRecords" => count($data),
        "aaData" => $data
    ];

    echo json_encode($results); // Retornar el resultado utilizando json
    break;
}// FIN switch
?>