<?php
// ? Errores (quitar en produccion)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// ? CORS y Headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }

// ? Conexion
require_once(__DIR__ . '/../config.php');
 $mysqli->set_charset("utf8mb4");

// ? JSON
 $input = json_decode(file_get_contents('php://input'), true);
if (!$input) { 
    echo json_encode(['success'=>false,'message'=>'JSON invalido']); 
    exit; 
}

// --- VALIDACION DE PARAMETROS ---
 $slug_tienda = isset($input['slug_tienda']) ? trim($input['slug_tienda']) : '';
 $fecha_inicio = isset($input['fechaInicio']) ? trim($input['fechaInicio']) : null;
 $fecha_fin = isset($input['fechaFin']) ? trim($input['fechaFin']) : null;

if (!$slug_tienda) {
    echo json_encode(['success' => false, 'message' => 'El slug de la tienda es requerido.']);
    exit;
}

try {
    // 1. Base de la consulta SQL
    $sql = "
        SELECT 
            id,
            factura_original_id,
            numero_factura,
            cliente_nombre,
            total,
            estado_original,
            fecha_anulacion,
            cajero_anulacion,
            reversed_at
        FROM historial_facturas_anuladas
        WHERE slug_tienda = ?
    ";

    // 2. Array para guardar los parámetros y tipos para bind_param
    $params = [$slug_tienda];
    $types = 's'; // 's' por el slug_tienda

    // 3. Añadir filtros dinámicamente
    if (!empty($fecha_inicio)) {
        $sql .= " AND DATE(fecha_anulacion) >= ?";
        $params[] = $fecha_inicio;
        $types .= 's';
    }

    if (!empty($fecha_fin)) {
        $sql .= " AND DATE(fecha_anulacion) <= ?";
        $params[] = $fecha_fin;
        $types .= 's';
    }

    // 4. Añadir ordenamiento
    $sql .= " ORDER BY fecha_anulacion DESC";

    $stmt = $mysqli->prepare($sql);
    
    if (!$stmt) {
        throw new Exception("Error al preparar la consulta: " . $mysqli->error);
    }

    if (!empty($params)) {
        $stmt->bind_param($types, ...$params);
    }
    
    if (!$stmt->execute()) {
        throw new Exception("Error al ejecutar la consulta: " . $stmt->error);
    }
    
    $result = $stmt->get_result();
    $facturas_anuladas = $result->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    echo json_encode(['success' => true, 'facturas_anuladas' => $facturas_anuladas]);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success'=>false,'message'=>$e->getMessage()]);
} finally {
    if (isset($mysqli) && $mysqli) { $mysqli->close(); }
}
?>