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

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

// Obtener parámetros
$fecha = isset($_GET['fecha']) ? $_GET['fecha'] : null;

if (!$fecha) {
    die("Fecha no válida");
}

// Validación de formato de fecha
$dt = DateTime::createFromFormat('Y-m-d', $fecha);
if (!$dt || $dt->format('Y-m-d') !== $fecha) {
    die("Formato de fecha inválido");
}

try {
    // 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'];
    }

    // Query para obtener los pagos de la fecha filtrados por empresa
    $query = "SELECT c.codcronogramaequipo, c.monto, c.pagadofecha, c.estado, c.ID,
                     e.nombres_ap_raz_soc, e.nro_documento, e.tipo_documento, e.numero_celular,
                     e.plan_a_evaluar, e.agente, e.operador_actual, e.correo
              FROM tcronogramaequipo c
              LEFT JOIN timportequipos e ON c.ID = e.id
              WHERE c.fechapago = ?";
    $params = [$fecha];

    if ($codempresaUsuario) {
        $query .= " AND e.codempresa = ?";
        $params[] = $codempresaUsuario;
    }

    $query .= " ORDER BY e.nombres_ap_raz_soc ASC";

    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $pagos = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
} catch(PDOException $e) {
    die("Error al obtener los datos: " . $e->getMessage());
}

// Configurar headers para descarga de Excel
$fechaFormateada = $dt->format('d-m-Y');
$filename = 'Pagos_' . $fechaFormateada . '.xls';

// Headers específicos para Excel
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Cache-Control: no-cache, must-revalidate');
header('Expires: 0');
header('Pragma: no-cache');

// BOM para UTF-8
echo "\xEF\xBB\xBF";

// Crear el archivo Excel usando formato HTML que Excel interpreta mejor
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">';
echo '<head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
echo '<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Pagos por Fecha</x:Name><x:WorksheetOptions><x:DefaultRowHeight>285</x:DefaultRowHeight></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->';
echo '</head>';
echo '<body>';

// Título principal
echo '<h2 style="color: #2d7a3d; text-align: center; margin-bottom: 20px;">PAGOS DEL ' . strtoupper($dt->format('d/m/Y')) . '</h2>';

if (!empty($pagos)) {
    // Información resumen
    $totalMonto = 0;
    $pagosRealizados = 0;
    $pagosPendientes = 0;
    $montoPagado = 0;
    $montoPendiente = 0;
    
    foreach ($pagos as $pago) {
        $monto = (float)($pago['monto'] ?: 0);
        $totalMonto += $monto;
        
        $estado = $pago['estado'];
        if (!$estado) {
            $estado = (!is_null($pago['monto']) || !empty($pago['pagadofecha'])) ? 'PAGADO' : 'PENDIENTE';
        }
        
        if (strtoupper($estado) === 'PAGADO') {
            $pagosRealizados++;
            $montoPagado += $monto;
        } else {
            $pagosPendientes++;
            $montoPendiente += $monto;
        }
    }
    
    // Tabla de resumen
    echo '<table border="1" cellpadding="5" cellspacing="0" style="margin-bottom: 20px; width: 100%;">';
    echo '<tr style="background-color: #f8f9fa; font-weight: bold;">';
    echo '<td colspan="4" style="text-align: center; background-color: #2d7a3d; color: white; font-size: 14px;">RESUMEN DE PAGOS</td>';
    echo '</tr>';
    
    echo '<tr>';
    echo '<td style="font-weight: bold; width: 25%;">Total de Pagos:</td>';
    echo '<td style="width: 25%; text-align: center; font-weight: bold;">' . count($pagos) . '</td>';
    echo '<td style="font-weight: bold; width: 25%;">Monto Total:</td>';
    echo '<td style="width: 25%; text-align: right; font-weight: bold;">S/ ' . number_format($totalMonto, 2) . '</td>';
    echo '</tr>';
    
    echo '<tr style="background-color: #d4edda;">';
    echo '<td style="font-weight: bold;">Pagos Realizados:</td>';
    echo '<td style="text-align: center; font-weight: bold;">' . $pagosRealizados . '</td>';
    echo '<td style="font-weight: bold;">Monto Pagado:</td>';
    echo '<td style="text-align: right; font-weight: bold;">S/ ' . number_format($montoPagado, 2) . '</td>';
    echo '</tr>';
    
    echo '<tr style="background-color: #fff3cd;">';
    echo '<td style="font-weight: bold;">Pagos Pendientes:</td>';
    echo '<td style="text-align: center; font-weight: bold;">' . $pagosPendientes . '</td>';
    echo '<td style="font-weight: bold;">Monto Pendiente:</td>';
    echo '<td style="text-align: right; font-weight: bold;">S/ ' . number_format($montoPendiente, 2) . '</td>';
    echo '</tr>';
    
    echo '</table>';
    
    // Tabla detallada de pagos
    echo '<h3 style="color: #2d7a3d; margin-bottom: 15px;">DETALLE DE PAGOS</h3>';
    echo '<table border="1" cellpadding="3" cellspacing="0" style="width: 100%;">';
    
    // Encabezados
    echo '<tr style="background-color: #4CAF50; color: white; font-weight: bold; text-align: center;">';
    echo '<td style="width: 20%;">Cliente</td>';
    echo '<td style="width: 15%;">Documento</td>';
    echo '<td style="width: 12%;">Celular</td>';
    echo '<td style="width: 15%;">Plan</td>';
    echo '<td style="width: 10%;">Monto (S/)</td>';
    echo '<td style="width: 12%;">Fecha Pagada</td>';
    echo '<td style="width: 8%;">Estado</td>';
    echo '<td style="width: 8%;">Agente</td>';
    echo '</tr>';
    
    // Datos de los pagos
    foreach ($pagos as $pago) {
        $montoTxt = is_null($pago['monto']) ? '0.00' : number_format((float)$pago['monto'], 2);
        $pagadoTxt = empty($pago['pagadofecha']) ? '-' : date('d/m/Y', strtotime($pago['pagadofecha']));
        $estado = $pago['estado'];
        if (!$estado) {
            $estado = (!is_null($pago['monto']) || !empty($pago['pagadofecha'])) ? 'PAGADO' : 'PENDIENTE';
        }
        
        // Determinar color de fila según estado
        $rowColor = '';
        if (strtoupper($estado) === 'PAGADO') {
            $rowColor = 'background-color: #d4edda;';
        } elseif (strtoupper($estado) === 'PENDIENTE') {
            $rowColor = 'background-color: #fff3cd;';
        }
        
        echo '<tr style="' . $rowColor . '">';
        echo '<td style="font-weight: bold;">' . htmlspecialchars($pago['nombres_ap_raz_soc'] ?: '-') . '</td>';
        echo '<td style="text-align: center;">' . htmlspecialchars(($pago['tipo_documento'] ?: '') . ' ' . ($pago['nro_documento'] ?: '-')) . '</td>';
        echo '<td style="text-align: center;">' . htmlspecialchars($pago['numero_celular'] ?: '-') . '</td>';
        echo '<td>' . htmlspecialchars($pago['plan_a_evaluar'] ?: '-') . '</td>';
        echo '<td style="text-align: right; font-weight: bold;">S/ ' . $montoTxt . '</td>';
        echo '<td style="text-align: center;">' . $pagadoTxt . '</td>';
        echo '<td style="text-align: center;">' . htmlspecialchars($estado) . '</td>';
        echo '<td style="text-align: center;">' . htmlspecialchars($pago['agente'] ?: '-') . '</td>';
        echo '</tr>';
    }
    
    echo '</table>';
    
    // Información adicional
    echo '<div style="margin-top: 20px; font-size: 11px; color: #666;">';
    echo '<p><strong>Fecha de exportación:</strong> ' . date('d/m/Y H:i:s') . '</p>';
    echo '<p><strong>Fecha de pagos:</strong> ' . $dt->format('d/m/Y') . '</p>';
    echo '<p><strong>Total de registros:</strong> ' . count($pagos) . '</p>';
    echo '</div>';
} else {
    echo '<div style="text-align: center; padding: 20px; color: #666;">';
    echo '<p>No hay pagos registrados para la fecha ' . $dt->format('d/m/Y') . '</p>';
    echo '</div>';
}

echo '</body>';
echo '</html>';

exit();
?>
