<?php
session_start();
include_once 'config/database.php';

try {
    $database = new Database();
    $conn = $database->getConnection();

    // Obtener la empresa del usuario logueado
    $codempresaUsuario = null;
    $stmt_empresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmt_empresa->execute([$_SESSION['user']['codempleado']]);
    $resultado_empresa = $stmt_empresa->fetch(PDO::FETCH_ASSOC);
    if ($resultado_empresa) {
        $codempresaUsuario = $resultado_empresa['codempresa'];
    }

    // Obtener parámetros de filtro
    $mes = isset($_GET['mes']) ? intval($_GET['mes']) : date('n');
    $ano = isset($_GET['ano']) ? intval($_GET['ano']) : date('Y');
    $nro_pago = isset($_GET['nro_pago']) ? trim($_GET['nro_pago']) : '';

    // Validar mes y año
    if ($mes < 1 || $mes > 12) {
        $mes = date('n');
    }
    if ($ano < 2020 || $ano > 2030) {
        $ano = date('Y');
    }

    // Nombres de los meses
    $meses = [
        1 => 'Enero', 2 => 'Febrero', 3 => 'Marzo', 4 => 'Abril',
        5 => 'Mayo', 6 => 'Junio', 7 => 'Julio', 8 => 'Agosto',
        9 => 'Septiembre', 10 => 'Octubre', 11 => 'Noviembre', 12 => 'Diciembre'
    ];

    // Fetch all cronograma records for the month (no pagination for export)
    $query = "SELECT c.*, e.nombres_ap_raz_soc, e.tipo_documento, e.nro_documento, 
                     e.correo, e.numero_celular, e.agente, e.estado as estado_equipo,
                     e.operador_actual, e.plan_a_evaluar, e.modalidad_venta,
                     e.departamento, e.provincia, e.distrito, e.direccion,
                     e.tipo_entrega, e.tipo_pago, e.sec, e.fecha_entrega as fecha_entrega_equipo,
                     CASE 
                         WHEN c.estado = 'PENDIENTE' AND e.plan_a_evaluar IS NOT NULL AND e.plan_a_evaluar != '' THEN
                             CASE 
                                 WHEN e.plan_a_evaluar REGEXP '^[0-9]+(\\.[0-9]+)?$' THEN CAST(e.plan_a_evaluar AS DECIMAL(10,2))
                                 WHEN e.plan_a_evaluar REGEXP '[0-9]+(\\.[0-9]+)?' THEN 
                                     CAST(REGEXP_SUBSTR(e.plan_a_evaluar, '[0-9]+(\\.[0-9]+)?') AS DECIMAL(10,2))
                                 ELSE c.monto
                             END
                         ELSE c.monto
                     END as monto_calculado
              FROM tcronogramaequipo c 
              INNER JOIN timportequipos e ON c.ID = e.id 
              WHERE MONTH(c.fechapago) = ? AND YEAR(c.fechapago) = ?";
    $params = [$mes, $ano];
    
    // Filtrar por empresa del usuario logueado
    if ($codempresaUsuario) {
        $query .= " AND e.codempresa = ?";
        $params[] = $codempresaUsuario;
    }
    
    // Agregar filtro de número de pago si está seleccionado
    if ($nro_pago) {
        $query .= " AND c.nropago = ?";
        $params[] = $nro_pago;
    }
    
    $query .= " ORDER BY c.fechapago ASC, c.nropago ASC";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $cuotas = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Headers para Excel (XLS - HTML table compatible)
    $filename = 'cuotas_' . $meses[$mes] . '_' . $ano . '_' . date('Ymd_His') . '.xls';
    header('Content-Type: application/vnd.ms-excel; charset=utf-8');
    header('Content-Disposition: attachment; filename=' . $filename);
    header('Pragma: no-cache');
    header('Expires: 0');

    // Salida como tabla HTML que Excel interpreta como XLS
    echo "<html><head><meta charset=\"UTF-8\"></head><body>";
    echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"4\">";
    echo "<thead><tr>";
    $headers = ['ID', 'Cliente', 'TipoDoc', 'NroDoc', 'Correo', 'Celular', 'Agente', 'EstadoEquipo', 'Operador', 'Plan', 'Modalidad', 'Departamento', 'Provincia', 'Distrito', 'Direccion', 'TipoEntrega', 'TipoPago', 'SEC', 'FechaEntrega', 'CodCronograma', 'NroPago', 'FechaPago', 'Monto', 'EstadoCuota', 'FechaPagado'];
    foreach ($headers as $h) {
        echo '<th>' . htmlspecialchars($h) . '</th>';
    }
    echo "</tr></thead><tbody>";

    foreach ($cuotas as $cuota) {
        echo "<tr>";
        echo '<td>' . htmlspecialchars($cuota['ID']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['nombres_ap_raz_soc']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['tipo_documento']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['nro_documento']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['correo']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['numero_celular']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['agente']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['estado_equipo']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['operador_actual']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['plan_a_evaluar']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['modalidad_venta']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['departamento']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['provincia']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['distrito']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['direccion']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['tipo_entrega']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['tipo_pago']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['sec']) . '</td>';
        echo '<td>' . htmlspecialchars($cuota['fecha_entrega_equipo'] ? date('d/m/Y', strtotime($cuota['fecha_entrega_equipo'])) : '-') . '</td>';
        echo '<td>' . htmlspecialchars($cuota['codcronogramaequipo']) . '</td>';
        echo '<td>' . htmlspecialchars($cuota['nropago'] ? substr($cuota['nropago'], -4) : '-') . '</td>';
        echo '<td>' . htmlspecialchars($cuota['fechapago'] ? date('d/m/Y', strtotime($cuota['fechapago'])) : '-') . '</td>';
        echo '<td>' . htmlspecialchars(number_format($cuota['monto_calculado'], 2)) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['estado']) . '</td>';
        echo '<td>' . htmlspecialchars($cuota['pagadofecha'] ? date('d/m/Y', strtotime($cuota['pagadofecha'])) : '-') . '</td>';
        echo "</tr>";
    }

    echo "</tbody></table></body></html>";
    exit;
} catch (Exception $e) {
    http_response_code(500);
    echo 'Error al exportar: ' . $e->getMessage();
}
?>
