<?php
require '../../conexao/conexao.php';
require '../querys_financeiro/transferencias.php';
require '../querys_financeiro/movimento_caixa.php';
require_once '../querys_financeiro/contas.php';

$movimentoObj = new MovimentoCaixa($connectionmysqlfinanceiro);
$transferencias = new Transferencias($connectionmysqlfinanceiro);
$contas = new Contas($connectionmysqlfinanceiro);

// Pegar o mês e ano da URL
$mes = isset($_GET['mes']) ? $_GET['mes'] : date('m');
$ano = isset($_GET['ano']) ? $_GET['ano'] : date('Y');

$dataInicio = isset($_GET['data_inicio']) ? $_GET['data_inicio'] : date('Y-m-01');
$dataFim = isset($_GET['data_fim']) ? $_GET['data_fim'] : date('Y-m-t');

$sql = '';

$movimentos = $movimentoObj->listarMovimentos('', $mes, $ano);

$listaTransferencias = $transferencias->listarTransferencia('', $sql);


// Configurar cabeçalho para download
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=Relatorio_transferencias_' . $mes . '_' . $ano . '.csv');

// Criar arquivo CSV
$output = fopen('php://output', 'w');

// Adicionar BOM para Excel reconhecer UTF-8
fprintf($output, chr(0xEF) . chr(0xBB) . chr(0xBF));

// Meses
$meses = [
    '01' => 'Janeiro',
    '02' => 'Fevereiro',
    '03' => 'Março',
    '04' => 'Abril',
    '05' => 'Maio',
    '06' => 'Junho',
    '07' => 'Julho',
    '08' => 'Agosto',
    '09' => 'Setembro',
    '10' => 'Outubro',
    '11' => 'Novembro',
    '12' => 'Dezembro'
];

$total_transferencias = 0;

// Função para escrever linha
function writeRow($output, $cells)
{
    // Converter números para o formato brasileiro
    $cells = array_map(function ($cell) {
        if (is_numeric($cell)) {
            return number_format($cell, 2, ',', '.');
        }
        return $cell;
    }, $cells);

    // Juntar células com ponto-e-vírgula e adicionar quebra de linha
    fwrite($output, implode(';', $cells) . "\r\n");
}

// Título e cabeçalhos
writeRow($output, ['Relatório de Transferências']);
writeRow($output, [$meses[$mes] . '/' . $ano]);
writeRow($output, ['']);
writeRow($output, [
    'Data',
    'Conta Origem',
    'Saldo Anterior (Origem)',
    'Saldo Atual (Origem)',
    'Conta Destino',
    'Saldo Anterior (Destino)',
    'Saldo Atual (Destino)',
    'Valor Transferido'
]);

// Receitas Operacionais
$totalOperacional = 0;

foreach ($listaTransferencias as $transferencia) {
    $total_transferencias += $transferencia['valor'];

    $conta_origem = $contas->listarContas($transferencia['id_conta_banco_origem'] ?? null);
    $conta_origem = !empty($conta_origem) ? $conta_origem[0] : null;

    $conta_destino = $contas->listarContas($transferencia['id_conta_banco_destino']);
    $conta_destino = !empty($conta_destino) ? $conta_destino[0] : null;

    writeRow($output, [
        $transferencia['data'],
        $conta_origem['nome_conta'] . ' - ' . $conta_origem['agencia'],
        $transferencia['saldo_origem_momento'],
        $conta_origem['limite_inicial'],
        $conta_destino['nome_conta'] . ' - ' . $conta_destino['agencia'],
        $transferencia['saldo_destino_momento'],
        $conta_destino['limite_inicial'],
        $transferencia['valor']
    ]);
}

// Informações do Relatório
writeRow($output, ['Informações do Relatório']);
writeRow($output, ['Gerado em', date('d/m/Y H:i:s')]);
writeRow($output, ['Período', $meses[$mes] . '/' . $ano]);

fclose($output);
