<?php
/*
 * PROCESADOR DE ACCIONES
 * =======================
 * Recibe peticiones AJAX para incrementar o reiniciar contadores.
 * Devuelve respuestas en formato JSON.
 */

require_once 'conexion.php';

// Configurar cabecera para respuestas JSON
header('Content-Type: application/json');

// Verificar que la petición sea POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['exito' => false, 'mensaje' => 'Método no permitido']);
    exit;
}

// Obtener la acción y el ID del contador
$accion = $_POST['accion'] ?? '';
$id_contador = $_POST['id'] ?? 0;

// Validar que el ID sea un número
if (!is_numeric($id_contador) || $id_contador <= 0) {
    echo json_encode(['exito' => false, 'mensaje' => 'ID inválido']);
    exit;
}

try {
    
    // ACCIÓN 1: INCREMENTAR CONTADOR
    if ($accion === 'incrementar') {
        
        // Actualizar el contador sumando 1
        $sql = "UPDATE contadores 
                SET contador = contador + 1, 
                    ultima_pulsacion = NOW() 
                WHERE id = :id";
        
        $stmt = $conexion->prepare($sql);
        $stmt->execute([':id' => $id_contador]);
        
        // Obtener el nombre del contador para registrar la pulsación
        $sql_nombre = "SELECT nombre FROM contadores WHERE id = :id";
        $stmt_nombre = $conexion->prepare($sql_nombre);
        $stmt_nombre->execute([':id' => $id_contador]);
        $nombre_contador = $stmt_nombre->fetchColumn();
        
        // Registrar en la tabla de pulsaciones
        $sql_pulsacion = "INSERT INTO pulsaciones 
                          (nombre_persona, ip_usuario, user_agent, fecha_hora) 
                          VALUES (:nombre, :ip, :user_agent, NOW())";
        
        $stmt_pulsacion = $conexion->prepare($sql_pulsacion);
        $stmt_pulsacion->execute([
            ':nombre' => $nombre_contador,
            ':ip' => $_SERVER['REMOTE_ADDR'],
            ':user_agent' => $_SERVER['HTTP_USER_AGENT']
        ]);
        
        echo json_encode([
            'exito' => true, 
            'mensaje' => 'Contador incrementado correctamente'
        ]);
    }
    
    // ACCIÓN 2: REINICIAR CONTADOR
    elseif ($accion === 'reiniciar') {
        
        $sql = "UPDATE contadores 
                SET contador = 0, 
                    ultima_pulsacion = NULL 
                WHERE id = :id";
        
        $stmt = $conexion->prepare($sql);
        $stmt->execute([':id' => $id_contador]);
        
        echo json_encode([
            'exito' => true, 
            'mensaje' => 'Contador reiniciado correctamente'
        ]);
    }
    
    else {
        echo json_encode(['exito' => false, 'mensaje' => 'Acción no reconocida']);
    }
    
} catch (PDOException $e) {
    echo json_encode([
        'exito' => false, 
        'mensaje' => 'Error en la base de datos: ' . $e->getMessage()
    ]);
}
?>