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

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

$sql = "";

// Get date range parameters
$dataInicio = isset($_GET['data_inicio']) ? $_GET['data_inicio'] : date('Y-m-01');
$dataFim = isset($_GET['data_fim']) ? $_GET['data_fim'] : date('Y-m-t');
$id_conta = isset($_GET['id_conta_banco']) ? $_GET['id_conta_banco'] : '';

// Get movements for the date range
$movimentos = $movimentoCaixa->listarMovimentos('', '', '', $dataInicio, $dataFim, '', $id_conta);
$lista_contas = $contas->listarContas();
$listaTransferencias = $transferencias->listarTransferencia('', $sql);


// Initialize monthly totals
$totalMensalReceitas = 0;
$totalMensalDespesas = 0;
$totalMensalReceitasPagas = 0;
$totalMensalDespesasPagas = 0;
$totalMensalReceitasPendentes = 0;
$totalMensalDespesasPendentes = 0;

$movimentosPorDia = [];

foreach ($movimentos as $movimento) {
    $dia = date('Y-m-d', strtotime($movimento['data']));
    $idConta = $movimento['id_conta_banco'];

    if (!isset($movimentosPorDia[$dia])) {
        $movimentosPorDia[$dia] = [];
    }

    if (!isset($movimentosPorDia[$dia][$idConta])) {
        $movimentosPorDia[$dia][$idConta] = [
            'receitas' => 0,
            'despesas' => 0,
            'receitas_pagas' => 0,
            'receitas_pendentes' => 0,
            'despesas_pagas' => 0,
            'despesas_pendentes' => 0,
            'movimentos' => []
        ];
    }

    $valorComDesconto = $movimento['valor'] - ($movimento['desconto'] ?? 0);
    $juros = ($movimento['juros'] ?? 0);
    $valorFinal = $valorComDesconto;
    if ($movimento['pago'] == 'S' && $juros > 0) {
        $valorFinal += $juros;
    }

    if ($movimento['tipo'] == 'R') {
        $movimentosPorDia[$dia][$idConta]['receitas'] += $valorFinal;
        $totalMensalReceitas += $valorFinal;

        if ($movimento['pago'] == 'S') {
            $movimentosPorDia[$dia][$idConta]['receitas_pagas'] += $valorFinal;
            $totalMensalReceitasPagas += $valorFinal;
        } else {
            $movimentosPorDia[$dia][$idConta]['receitas_pendentes'] += $valorFinal;
            $totalMensalReceitasPendentes += $valorFinal;
        }
    } else {
        $movimentosPorDia[$dia][$idConta]['despesas'] += $valorFinal;
        $totalMensalDespesas += $valorFinal;

        if ($movimento['pago'] == 'S') {
            $movimentosPorDia[$dia][$idConta]['despesas_pagas'] += $valorFinal;
            $totalMensalDespesasPagas += $valorFinal;
        } else {
            $movimentosPorDia[$dia][$idConta]['despesas_pendentes'] += $valorFinal;
            $totalMensalDespesasPendentes += $valorFinal;
        }
    }
    // Registra movimento
    $movimentosPorDia[$dia][$idConta]['movimentos'][] = $movimento;
}

ksort($movimentosPorDia); // Ordena as datas


$pageTitle = 'Fluxo do dias';
$menuAtivo = 'relatorios';
$subMenuAtivo = 'relatorio_fluxo_dias';

include('../header.php');

include('../menu.php');

?>


<!DOCTYPE html>
<html lang="pt-br">

<head>
    <link rel="icon" href="/KPI/pages/configuracoes/logo-sm.png">
    <link rel="shortcut icon" href="/KPI/pages/configuracoes/logo-sm.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css">

    <style>
        .valor-cell {
            text-align: right;
        }

        .page-header {
            background-color: #fff;
            padding: 1.5rem;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            margin-bottom: 1.5rem;
        }

        .daily-card {
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            margin-bottom: 1rem;
        }

        .daily-card .card-header {
            background-color: #f8f9fa;
            border-bottom: 1px solid #dee2e6;
            padding: 1rem;
        }

        .daily-summary {
            display: flex;
            gap: 1.5rem;
            align-items: flex-start;
            flex-wrap: wrap;
        }

        .daily-summary .date {
            font-size: 1.1rem;
            font-weight: 600;
            min-width: 120px;
        }

        .daily-summary .amount {
            font-weight: 500;
            min-width: 200px;
        }

        .daily-summary .amount.text-warning {
            color: #ffc107 !important;
        }

        .daily-summary .details {
            display: flex;
            flex-direction: column;
            gap: 0.5rem;
        }

        .daily-summary .details .amount {
            font-size: 0.95rem;
            margin-left: 1rem;
        }

        .table-container {
            padding: 1rem;
        }

        .table th {
            background-color: #f8f9fa;
            font-weight: 600;
        }

        .monthly-summary {
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            margin-top: 2rem;
            padding: 1.5rem;
        }

        .monthly-summary h5 {
            color: #2196F3;
            margin-bottom: 1.5rem;
        }

        .summary-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0.5rem 0;
            border-bottom: 1px solid #eee;
        }

        .summary-row:last-child {
            border-bottom: none;
            margin-top: 1rem;
            padding-top: 1rem;
            border-top: 2px solid #eee;
            font-weight: bold;
        }
    </style>
</head>

<body>
    <div class="wrapper candidato">
        <div class="container-fluid">
            <div class="card-box mt-3">
                <div class="page-header d-flex justify-content-between align-items-center">
                    <div>
                        <h4 class="mb-0">Fluxo Diário de Caixa</h4>
                        <small class="text-muted"><?php echo date('d/m/Y', strtotime($dataInicio)) . ' até ' . date('d/m/Y', strtotime($dataFim)); ?></small>
                    </div>
                </div>

                <!-- Filtros -->
                <div class="card mb-4">
                    <div class="card-body">
                        <form method="GET" class="row g-3 align-items-end">
                            <div class="col-auto">
                                <label class="form-label">Data Início</label>
                                <input type="date" name="data_inicio" class="form-control" value="<?php echo $dataInicio; ?>">
                            </div>
                            <div class="col-auto">
                                <label class="form-label">Data Fim</label>
                                <input type="date" name="data_fim" class="form-control" value="<?php echo $dataFim; ?>">
                            </div>
                            <div class="col-md-3">
                                <label>Conta</label>
                                <select name="id_conta_banco" class="form-control">
                                    <option value="">Todas</option>
                                    <?php foreach ($lista_contas as $conta): ?>
                                        <option value="<?php echo $conta['id']; ?>" <?php echo $id_conta == $conta['id'] ? 'selected' : ''; ?>>
                                            <?php echo $conta['nome_conta']; ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                            <div class="col-auto">
                                <button type="submit" class="btn btn-primary">
                                    <i class="mdi mdi-filter"></i> Filtrar
                                </button>
                            </div>
                            <div class="col-md-2">
                                <a href="exportar_csv.php?data_inicio=<?php echo $dataInicio; ?>&data_fim=<?php echo $dataFim; ?>&conta=<?php echo $id_conta; ?>" class="btn btn-success">
                                    <i class="mdi mdi-file-excel"></i> Excel
                                </a>
                            </div>
                        </form>
                    </div>
                </div>

                <!-- Movimentos por Dia -->
                <?php foreach ($movimentosPorDia as $dia => $contasDoDia): ?>
                    <div class="daily-card">
                        <div class="card-header">
                            <div class="daily-summary">
                                <div class="date">
                                    <?php echo date('d/m/Y', strtotime($dia)); ?>
                                </div>

                                <!-- Container horizontal de contas -->
                                <div class="row-contas" style="display: flex; flex-wrap: wrap; gap: 20px; margin-top: 10px;">
                                    <?php foreach ($contasDoDia as $idConta => $dados):
                                        $saldoContas = $contas->listarContas($idConta)[0];
                                        $saldo_real = $dados['receitas_pagas'] - $dados['despesas_pagas'];
                                        $saldo_previsto = $dados['receitas'] - $dados['despesas'];
                                    ?>
                                        <div class="details" style="flex: 1 1 300px; min-width: 280px;">
                                            <h5><i class="mdi mdi-bank"></i> Conta: <?php echo htmlspecialchars($saldoContas['nome_conta']); ?></h5>

                                            <!-- Receitas -->
                                            <div style="display: flex; flex-wrap: wrap; gap: 10px;">
                                                <div class="amount text-success">Receitas: R$ <?php echo number_format($dados['receitas'], 2, ',', '.'); ?></div>
                                                <div class="amount text-success"><i class="mdi mdi-check-circle"></i> Pagas: R$ <?php echo number_format($dados['receitas_pagas'], 2, ',', '.'); ?></div>
                                                <div class="amount text-warning"><i class="mdi mdi-clock-outline"></i> Receitas Pendentes: R$ <?php echo number_format($dados['receitas_pendentes'], 2, ',', '.'); ?></div>
                                            </div>

                                            <!-- Despesas -->
                                            <div style="display: flex; flex-wrap: wrap; gap: 10px;">
                                                <div class="amount text-danger">Despesas: R$ <?php echo number_format($dados['despesas'], 2, ',', '.'); ?></div>
                                                <div class="amount text-danger"><i class="mdi mdi-check-circle"></i> Pagas: R$ <?php echo number_format($dados['despesas_pagas'], 2, ',', '.'); ?></div>
                                                <div class="amount text-warning"><i class="mdi mdi-clock-outline"></i> Despesas Pendentes: R$ <?php echo number_format($dados['despesas_pendentes'], 2, ',', '.'); ?></div>
                                            </div>

                                            <!-- Saldos -->
                                            <div style="display: flex; flex-wrap: wrap; gap: 10px;">
                                                <div class="amount <?php echo ($saldo_real >= 0) ? 'text-success' : 'text-danger'; ?>">
                                                    <i class="mdi mdi-cash"></i> <strong>Saldo Real: R$ <?php echo number_format($saldo_real, 2, ',', '.'); ?></strong>
                                                </div>
                                                <div class="amount <?php echo ($saldo_previsto >= 0) ? 'text-success' : 'text-danger'; ?>">
                                                    <i class="mdi mdi-chart-line"></i> <strong>Saldo Previsto: R$ <?php echo number_format($saldo_previsto, 2, ',', '.'); ?></strong>
                                                </div>
                                            </div>

                                            <!-- Info conta -->
                                            <div style="display: flex; flex-wrap: wrap; gap: 10px;">
                                                <div class="amount"><i class="mdi mdi-cash"></i> <strong>Saldo Inicial: R$ <?php echo number_format($saldoContas['limite_inicial'], 2, ',', '.'); ?></strong></div>
                                                <div class="amount"><i class="mdi mdi-bank-transfer-in"></i> <strong>Saldo Atual: R$ <?php echo number_format($saldoContas['saldo_atual'], 2, ',', '.'); ?></strong></div>
                                            </div>
                                        </div>
                                    <?php endforeach; ?>
                                </div>
                            </div>
                        </div>

                        <?php
                        // Antes do foreach da tabela:
                        $movimentosDoDia = [];
                        foreach ($contasDoDia as $idConta => $dadosConta) {
                            if (!empty($dadosConta['movimentos'])) {
                                foreach ($dadosConta['movimentos'] as $mov) {
                                    $movimentosDoDia[] = $mov;
                                }
                            }
                        }
                        ?>

                        <!-- Tabela de Movimentos do Dia -->
                        <div class="table-container">
                            <div class="table-responsive">
                                <table class="table table-hover mb-0">
                                    <thead>
                                        <tr>
                                            <th>Descrição</th>
                                            <th>Tipo</th>
                                            <th class="text-end">Valor</th>
                                            <th class="text-end">Contas</th>
                                            <th class="text-center">Status</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php foreach ($movimentosDoDia as $movimento):
                                            $contaData = $contas->listarContas($movimento['id_conta_banco']);
                                            $conta = !empty($contaData) ? $contaData[0] : ['nome_conta' => 'Conta desconhecida'];
                                            $transferenciasDaConta = array_filter($listaTransferencias, function ($transferencia) use ($idConta) {
                                                return $transferencia['id_conta_banco_origem'] == $idConta || $transferencia['id_conta_banco_destino'] == $idConta;
                                            });

                                        ?>
                                            <tr>
                                                <td><?php echo htmlspecialchars($movimento['nome']); ?></td>
                                                <td><?php echo $movimento['tipo'] == 'R' ? 'Receita' : 'Despesa'; ?></td>
                                                <td class="text-end <?php echo $movimento['tipo'] == 'R' ? 'text-success' : 'text-danger'; ?>">
                                                    R$ <?php echo number_format($movimento['valor'] - ($movimento['desconto'] ?? 0) + ($movimento['juros'] ?? 0), 2, ',', '.'); ?>
                                                    <?php if (($movimento['desconto'] ?? 0) > 0): ?>
                                                        <br><small class="text-muted">(Desconto: R$ <?php echo number_format($movimento['desconto'], 2, ',', '.'); ?>)</small>
                                                    <?php endif; ?>
                                                    <?php if (($movimento['juros'] ?? 0) > 0 && $movimento['pago'] == 'S'): ?>
                                                        <br><small class="text-danger">(Juros: R$ <?php echo number_format($movimento['juros'], 2, ',', '.'); ?>)</small>
                                                    <?php endif; ?>
                                                </td>
                                                <td><?php echo htmlspecialchars($conta['nome_conta']); ?></td>
                                                <td class="text-center">
                                                    <?php if ($movimento['pago'] == 'S'): ?>
                                                        <span class="badge bg-success">Pago</span>
                                                    <?php else: ?>
                                                        <span class="badge bg-warning text-dark">Pendente</span>
                                                    <?php endif; ?>
                                                </td>
                                            </tr>
                                        <?php endforeach; ?>
                                    </tbody>
                                </table>
                            </div>
                        </div>

                        <!-- Nova tabela de Transferências -->
                        <?php if (!empty($transferenciasDaConta)): ?>
                            <div class="table-container mt-4">
                                <div class="table-responsive">
                                    <table class="table table-hover mb-0">
                                        <thead>
                                            <tr>
                                                <th>Conta Origem</th>
                                                <th class="text-end">Saldo Atual (Origem)</th>
                                                <th>Conta Destino</th>
                                                <th class="text-end">Saldo Atual (Destino)</th>
                                                <th class="text-end">Valor Transferido</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php
                                            $total_transferencias = 0;
                                            foreach ($listaTransferencias as $transferencia):
                                                $total_transferencias += $transferencia['valor'];

                                                $conta_origem = $contas->listarContas($transferencia['id_conta_banco_origem']);
                                                $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;
                                            ?>
                                                <tr>
                                                    <td><?php echo $conta_origem ? htmlspecialchars($conta_origem['nome_conta'] . ' - ' . $conta_origem['agencia']) : 'Conta desconhecida'; ?></td>
                                                    <td class="text-end">R$ <?php echo $conta_origem ? number_format($conta_origem['saldo_atual'], 2, ',', '.') : '-'; ?></td>
                                                    <td><?php echo $conta_destino ? htmlspecialchars($conta_destino['nome_conta'] . ' - ' . $conta_destino['agencia']) : 'Conta desconhecida'; ?></td>
                                                    <td class="text-end">R$ <?php echo $conta_destino ? number_format($conta_destino['saldo_atual'], 2, ',', '.') : '-'; ?></td>
                                                    <td class="text-end text-primary">R$ <?php echo number_format($transferencia['valor'], 2, ',', '.'); ?></td>
                                                </tr>
                                            <?php endforeach; ?>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        <?php endif; ?>


                    </div>
                <?php endforeach; ?>


                <!-- Resumo Mensal -->
                <div class="monthly-summary">
                    <h5>Fechamento do Período - <?php echo date('d/m/Y', strtotime($dataInicio)) . ' até ' . date('d/m/Y', strtotime($dataFim)); ?></h5>

                    <div class="summary-row">
                        <span>Total de Receitas:</span>
                        <span class="text-success">R$ <?php echo number_format($totalMensalReceitas, 2, ',', '.'); ?></span>
                    </div>
                    <div class="summary-row">
                        <span>Receitas Pagas:</span>
                        <span class="text-success">R$ <?php echo number_format($totalMensalReceitasPagas, 2, ',', '.'); ?></span>
                    </div>
                    <div class="summary-row">
                        <span>Receitas Pendentes:</span>
                        <span class="text-warning">R$ <?php echo number_format($totalMensalReceitasPendentes, 2, ',', '.'); ?></span>
                    </div>

                    <div class="summary-row mt-3">
                        <span>Total de Despesas:</span>
                        <span class="text-danger">R$ <?php echo number_format($totalMensalDespesas, 2, ',', '.'); ?></span>
                    </div>
                    <div class="summary-row">
                        <span>Despesas Pagas:</span>
                        <span class="text-danger">R$ <?php echo number_format($totalMensalDespesasPagas, 2, ',', '.'); ?></span>
                    </div>
                    <div class="summary-row">
                        <span>Despesas Pendentes:</span>
                        <span class="text-warning">R$ <?php echo number_format($totalMensalDespesasPendentes, 2, ',', '.'); ?></span>
                    </div>

                    <div class="summary-row">
                        <span>Saldo Total do Período:</span>
                        <span class="<?php echo ($totalMensalReceitas - $totalMensalDespesas >= 0) ? 'text-success' : 'text-danger'; ?>">
                            R$ <?php echo number_format($totalMensalReceitas - $totalMensalDespesas, 2, ',', '.'); ?>
                        </span>
                    </div>
                    <div class="summary-row">
                        <span>Saldo Realizado (Pagos):</span>
                        <span class="<?php echo ($totalMensalReceitasPagas - $totalMensalDespesasPagas >= 0) ? 'text-success' : 'text-danger'; ?>">
                            R$ <?php echo number_format($totalMensalReceitasPagas - $totalMensalDespesasPagas, 2, ',', '.'); ?>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <?php include('../footer.php'); ?>
    <?php include('../mensagens_modais.php'); ?>

    <script src="../../../assets/js/vendor.min.js"></script>
    <script src="../../../assets/libs/jquery-knob/jquery.knob.min.js"></script>
    <script src="../../../assets/js/app.min.js"></script>
    <script src="../../geral/javascript.js"></script>
    <script src="../../../assets/js/funcoes.js"></script>
</body>

</html>