<?php
session_start();
require_once "../models/VentaModel.php";

$ipEnc = $_POST['ipEnc'] ?? ($_SESSION['TIENDA_IP_ENC'] ?? null);

if (!$ipEnc) {
    echo json_encode(["error" => "❌ Falta IP encriptada (tienda)."]);
    exit;
}

/* =====================================================
   FUNCIONES AUXILIARES
   ===================================================== */
function obtenerFechas() {
    $inicio = $_POST["inicio"] ?? null;
    $fin    = $_POST["fin"] ?? null;

    if (!$inicio || !$fin) {
        echo json_encode(["error" => "❌ Fechas requeridas."]);
        exit;
    }
    return [$inicio, $fin];
}

function ejecutarConsulta($callback) {
    echo json_encode($callback());
    exit;
}

$model = new VentaModel();

/* =====================================================
   1) LISTAR COMPROBANTES
   ===================================================== */
if (isset($_POST["listarComprobantes"])) {
    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerUltimosComprobantes($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   2) TOP CLIENTES
   ===================================================== */
if (isset($_POST["listarTopVentasClientes"])) {

    list($inicio, $fin) = obtenerFechas();
    $top = $_POST["top"] ?? 5;

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc, $top) {
        return $model->obtenerTopVentasClientes($inicio, $fin, $ipEnc, $top);
    });
}

/* =====================================================
   3) TOP PRODUCTO
   ===================================================== */
if (isset($_POST["listarTopVentasProducto"])) {

    list($inicio, $fin) = obtenerFechas();
    $top = $_POST["top"] ?? 5;

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc, $top) {
        return $model->obtenerTopVentasProducto($inicio, $fin, $ipEnc, $top);
    });
}

/* =====================================================
   4) TOTAL DE CREDITOS PENDIENTES
   ===================================================== */
if (isset($_POST["listarTotalCreditos"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerTotalCreditos($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   5) LISTAR COMPROBANTES ACTIVOS
   ===================================================== */
if (isset($_POST["listarComprobantesActivos"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerComprobantesActivos($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   6)  CREDITOS PENDIENTES POR FECHA
   ===================================================== */
if (isset($_POST["listarCreditos"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerCreditos($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   7)  TOTAL CREDITOS PENDIENTES POR FECHA
   ===================================================== */
if (isset($_POST["listarTotalCreditos_Fecha"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerTotalCreditos_Fecha($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   8)  OBTENER FORMA DE PAGO POR FECHA
   ===================================================== */
if (isset($_POST["listarFormaPago_fecha"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerFormaPago_fecha($inicio, $fin, $ipEnc);
    });
}


/* =====================================================
   9)  OBTENER COBRANZAS POR FECHA
   ===================================================== */
if (isset($_POST["listarCobranzas_fecha"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerCobranzasEefectuadas($inicio, $fin, $ipEnc);
    });
}


/* =====================================================
   *) REPORTE PRINCIPAL (TARJETAS + GRÁFICO) obtenerReporteFacturas
   ===================================================== */
//if (isset($_POST["inicio"]) && isset($_POST["fin"])) {
if (isset($_POST["obtenerReporteFacturas"])) {
    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerReporteFacturas($inicio, $fin, $ipEnc);
    });
}

/* =====================================================
   *) Select box : obtenerRecordVentasVendedor
   ===================================================== */
if (isset($_POST["obtenerRecordVentasVendedor"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerRecordVentasVendedor($inicio, $inicio, $ipEnc);
    });
}


if (isset($_POST["obtenerRecordVentasVendedor_idPrecio"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerRecordVentasVendedor_idPrecio($inicio, $inicio, $ipEnc);
    });
}


if (isset($_POST["obtenerVentasVendedor_mesAnterior"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerVentasVendedor_mesAnterior($inicio,$ipEnc);
    });
}

if (isset($_POST["obtenerVentasVendedor_PromediomesAnterior"])) {

    list($inicio, $fin) = obtenerFechas();

    ejecutarConsulta(function() use ($model, $inicio, $fin, $ipEnc) {
        return $model->obtenerVentasVendedor_PromediomesAnterior($inicio,$ipEnc);
    });
}



/* =====================================================
   **) ACCIÓN NO RECONOCIDA
   ===================================================== */
echo json_encode(["error" => "❌ Acción no reconocida"]);
exit;

?>
