<?php
// Proteção de autenticação (admin apenas)
require_once __DIR__ . '/../require_auth.php';

// Conexão com o banco de dados
require __DIR__ . '/../../config/config_db.php';

// Filtros opcionais (mesmos da página de carrinhos)
$filtro_status = isset($_GET['status']) ? $_GET['status'] : '';
$filtro_data_inicio = isset($_GET['data_inicio']) ? $_GET['data_inicio'] : '';
$filtro_data_fim = isset($_GET['data_fim']) ? $_GET['data_fim'] : '';
$busca = isset($_GET['busca']) ? $_GET['busca'] : '';
$formato = isset($_GET['formato']) ? $_GET['formato'] : 'csv'; // csv ou excel

// Construir a consulta com filtros para carrinhos abandonados
$sql_carrinhos = "SELECT nome, sobrenome, email, telefone, descricao, status, created_at 
                  FROM transacoes 
                  WHERE (status IN ('pendente', 'reprovado') OR status IS NULL)";

$params = [];

if (!empty($filtro_status)) {
    $sql_carrinhos .= " AND status = :status";
    $params[':status'] = $filtro_status;
}

if (!empty($filtro_data_inicio)) {
    $sql_carrinhos .= " AND DATE(created_at) >= :data_inicio";
    $params[':data_inicio'] = $filtro_data_inicio;
}

if (!empty($filtro_data_fim)) {
    $sql_carrinhos .= " AND DATE(created_at) <= :data_fim";
    $params[':data_fim'] = $filtro_data_fim;
}

if (!empty($busca)) {
    $sql_carrinhos .= " AND (nome LIKE :busca OR sobrenome LIKE :busca OR email LIKE :busca OR descricao LIKE :busca)";
    $params[':busca'] = '%' . $busca . '%';
}

$sql_carrinhos .= " ORDER BY created_at DESC";

$stmt_carrinhos = $pdo->prepare($sql_carrinhos);
$stmt_carrinhos->execute($params);
$carrinhos = $stmt_carrinhos->fetchAll(PDO::FETCH_ASSOC);

// Função para formatar telefone
function formatarTelefone($telefone) {
    return preg_replace('/[^0-9]/', '', $telefone);
}

// Definir headers e nome do arquivo
$data_atual = date('Y-m-d_H-i-s');
$nome_arquivo = "carrinhos_abandonados_{$data_atual}";

if ($formato === 'excel') {
    // Excel (XLSX) usando formato CSV com BOM UTF-8
    header('Content-Type: application/vnd.ms-excel; charset=utf-8');
    header('Content-Disposition: attachment; filename="' . $nome_arquivo . '.xls"');
    header('Cache-Control: max-age=0');
    
    // BOM para UTF-8 (para Excel reconhecer corretamente)
    echo "\xEF\xBB\xBF";
} else {
    // CSV
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="' . $nome_arquivo . '.csv"');
    header('Cache-Control: max-age=0');
    
    // BOM para UTF-8
    echo "\xEF\xBB\xBF";
}

// Abrir output stream
$output = fopen('php://output', 'w');

// Cabeçalhos das colunas
$cabecalhos = ['Data', 'Nome', 'Sobrenome', 'Email', 'Telefone', 'Produto', 'Status'];
fputcsv($output, $cabecalhos, ';'); // Usar ponto e vírgula para melhor compatibilidade com Excel

// Dados
foreach ($carrinhos as $carrinho) {
    $linha = [
        $carrinho['created_at'] ? date('d/m/Y H:i', strtotime($carrinho['created_at'])) : 'N/A',
        $carrinho['nome'] ?? '',
        $carrinho['sobrenome'] ?? '',
        $carrinho['email'] ?? '',
        $carrinho['telefone'] ?? '',
        $carrinho['descricao'] ?? '',
        $carrinho['status'] ?? 'Sem Status'
    ];
    fputcsv($output, $linha, ';');
}

fclose($output);
exit;
?>

