<?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']) ? $_GET['mes'] : date('n');
    $ano = isset($_GET['ano']) ? intval($_GET['ano']) : date('Y');
    $nro_pago = isset($_GET['nro_pago']) ? trim($_GET['nro_pago']) : '';
    $estado_filtro = isset($_GET['estado']) ? trim($_GET['estado']) : '';
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';

    // Validar mes y año
    $todos_los_meses = ($mes === 'todos');
    if (!$todos_los_meses) {
        $mes = intval($mes);
        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.celular, e.agente, e.estado as estado_venta,
                     e.paquete_contratado, e.tecnologia, e.cargo_fijo,
                     e.departamento, e.provincia, e.distrito, e.direccion,
                     e.sec, e.fecha_instalacion, e.tipo_venta,
                     c.monto as monto_calculado
              FROM tcronogramaventas c 
              INNER JOIN timportventas e ON c.id = e.id 
              WHERE YEAR(c.fechapago) = ?";
    $params = [$ano];
    
    // Filtrar por empresa del usuario logueado
    if ($codempresaUsuario) {
        $query .= " AND e.codempresa = ?";
        $params[] = $codempresaUsuario;
    }
    
    // Agregar filtro de mes si no es "todos"
    if (!$todos_los_meses) {
        $query .= " AND MONTH(c.fechapago) = ?";
        $params[] = $mes;
    }
    
    // Agregar filtro de número de pago si está seleccionado
    if ($nro_pago) {
        $query .= " AND c.nropago = ?";
        $params[] = $nro_pago;
    }
    
    // Agregar filtro de estado si está seleccionado
    if ($estado_filtro) {
        $query .= " AND c.estado = ?";
        $params[] = $estado_filtro;
    }
    
    // Agregar filtro de búsqueda si está especificado
    if ($search) {
        $query .= " AND (e.nombres_ap_raz_soc LIKE ? OR e.nro_documento LIKE ?)";
        $searchTerm = "%{$search}%";
        $params[] = $searchTerm;
        $params[] = $searchTerm;
    }
    
    $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_fija_' . ($todos_los_meses ? 'todos_meses' : $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', 'EstadoVenta', 'Paquete', 'Tecnologia', 'TipoVenta', 'Departamento', 'Provincia', 'Distrito', 'Direccion', 'SEC', 'FechaInstalacion', '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['celular']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['agente']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['estado_venta']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['paquete_contratado']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['tecnologia']) . '</td>';
        echo '<td>' . htmlspecialchars((string)$cuota['tipo_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['sec']) . '</td>';
        echo '<td>' . htmlspecialchars($cuota['fecha_instalacion'] ? date('d/m/Y', strtotime($cuota['fecha_instalacion'])) : '-') . '</td>';
        echo '<td>' . htmlspecialchars($cuota['codcronogramaventas']) . '</td>';
        echo '<td>' . htmlspecialchars($cuota['nropago'] ?: '-') . '</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();
}
?>
