<?php
require '../conexao/conexao.php';
//require '../sessao.php';
require '../conexao/acesso.php';
require '../configuacoes.php';

//recuperando combo filial
$query_filial = "SELECT cdfil, DESCRFIL FROM FC01000 fc WHERE fc.cdfil IN (SELECT cdfil FROM fc15100)";
$result_filial = ibase_query($connection, $query_filial);

if (!$result_filial) {
    die('Erro na consulta: ' . ibase_errmsg());
}

$filiais = [];
while ($row = ibase_fetch_assoc($result_filial)) {
    $filiais[] = $row;
}

function getBadgeClass($status)
{
    $lowerStatus = strtolower($status);

    if (strpos($lowerStatus, 'rejeitado') !== false) {
        return 'badge-danger';
    } elseif (strpos($lowerStatus, 'aprovado') !== false) {
        return 'badge-success';
    } else {
        return 'badge-secondary';  // ou qualquer outra classe padrão
    }
}


$tipo_relatorio = $_GET['tipo_relatorio'] ?? null;

$hasResults = false;



//if (isset($_GET['tipo_relatorio']) && $tipo_relatorio == "0") {
//if (isset($_GET['tipo_relatorio'])) {
if (isset($_GET['pesquisar'])) {
    $mapa_tipos = array(
        "0" => 'm.nomemed',
        "1" => 'CASE WHEN c.nomecli is null then o.nomepa
     WHEN c.nomecli is not null then c.nomecli
     end',
        "2" => 'fun.nomefun',
        // Adicione mais casos conforme necessário
    );

    // Inicializa $nome_consulta com um valor padrão
    $nome_consulta = '';
    $nome_relatorio = '';

    if (isset($_GET['tipo_relatorio'])) {
        $tipo_relatorio = $_GET['tipo_relatorio'];

        if ($tipo_relatorio == "0") {
            $nome_relatorio = 'Médicos';
        } elseif ($tipo_relatorio == "1") {
            $nome_relatorio = 'Clientes';
        } elseif ($tipo_relatorio == "2") {
            $nome_relatorio = 'Vendedores';
        } else {
            // Tratar outros valores, se necessário
            $nome_relatorio = 'Tipo Desconhecido';
        }
    } else {
        // Tratar caso 'tipo_relatorio' não esteja definido na URL
        $nome_relatorio = 'Tipo não especificado';
    }
    // Verifica se tipo_relatorio está definido e existe no mapa
    if (isset($_GET['tipo_relatorio']) && isset($mapa_tipos[$_GET['tipo_relatorio']])) {
        // Obtém o valor correspondente do mapa
        $nome_consulta = $mapa_tipos[$_GET['tipo_relatorio']];
    }



    // Obtendo os parâmetros
    //$nome_consulta = 'fun.nomefun';
    $nomeMedico = $_GET['nomeMedico'] ?? null;
    $nomeCliente = $_GET['nomeCliente'] ?? null;
    $nomeVendedor = $_GET['nomeVendedor'] ?? null;
    //$ano = $_GET['ano'] ?? null;
    //$mes = $_GET['mes'] ?? null;
    $DataInicial = $_GET['DataInicial'] ?? null;
    $DataFinal = $_GET['DataFinal'] ?? null;
    $situacao = $_GET['situacao'] ?? null;

    $filial = $_GET['filial'] ?? null;

    // Defina a parte comum da consulta SELECT
    $sql_select = "$nome_consulta as NOMEMED";

    // Adicione o campo adicional com base no tipo de relatório
    if ($tipo_relatorio == "0") {
        $sql_select .= ", m.pfcrm || '-' || m.ufcrm || '-' || m.nrcrm AS crm_concat";
    } elseif ($tipo_relatorio == "1") {
        $sql_select .= ", c.cdcli";
    } elseif ($tipo_relatorio == "2") {
        $sql_select .= ", fun.cdfun";
    }

    // Continue construindo a consulta com os demais campos
    $sql_select .= ", o.cdfil, f.DESCRFIL || ' (' || o.cdfil || ')' as FILIAL_DESC,
    CASE o.qtaprov WHEN 1 THEN 'Aprovado' ELSE 'Rejeitado' END AS STATUS_QTAPROV, 
    EXTRACT(YEAR FROM o.dtentr) AS ano, 
    EXTRACT(MONTH FROM o.dtentr) AS mes, 
    SUM(o.prreal - o.vrdsc) AS soma";

    $sql_base = "SELECT $sql_select
    FROM fc15100 o
    INNER JOIN FC04000 m ON o.nrcrm = m.nrcrm AND o.ufcrm = m.ufcrm AND o.pfcrm = m.pfcrm
    INNER JOIN FC01000 f ON o.cdfil = f.CDFIL
    LEFT JOIN FC07000 c ON c.CDCLI = o.CDCLI
    INNER JOIN fc08000 fun ON o.cdfunre = fun.cdfun AND o.cdconre = fun.cdcon
    WHERE o.dtentr BETWEEN '$DataInicial' AND '$DataFinal'";

    // Adicionando condições conforme os parâmetros
    if ($nomeMedico && $nomeMedico != "Todos") {
        $nomeMedico = strtoupper($nomeMedico);
        $sql_base .= " AND UPPER(m.nomemed) LIKE '" . firebird_escape_string($nomeMedico) . "%'";
    }
    if ($nomeCliente && $nomeCliente != "Todos") {
        $nomeCliente = strtoupper($nomeCliente);
        $sql_base .= " AND UPPER(c.NOMECLI) LIKE '%" . firebird_escape_string($nomeCliente) . "%'";
    }
    if ($nomeVendedor && $nomeVendedor != "Todos") {
        $nomeVendedor = strtoupper($nomeVendedor);
        $sql_base .= " AND UPPER(fun.nomefun) LIKE '%" . firebird_escape_string($nomeVendedor) . "%'";
    }

    if ($situacao === '1' || $situacao === '0') {
        $sql_base .= " AND o.qtaprov = '$situacao'";
    }



    if ($filial && $filial != "Todos") {
        $sql_base .= " AND o.cdfil = " . intval($filial);
    }


    $sql_base .= " GROUP BY $nome_consulta, ano, mes, o.cdfil,FILIAL_DESC,STATUS_QTAPROV";

    // Adicione o campo específico do relatório ao GROUP BY se necessário
    if ($tipo_relatorio == "0") {
        $sql_base .= ", m.pfcrm, m.ufcrm, m.nrcrm";
    } elseif ($tipo_relatorio == "1") {
        $sql_base .= ", c.cdcli";
    } elseif ($tipo_relatorio == "2") {
        $sql_base .= ", fun.cdfun";
    }

    // echo $sql_final;
    $result = ibase_query($connection, $sql_base);

    if (!$result) {
        die('Erro na consulta: ' . ibase_errmsg());
    }
}

function firebird_escape_string($value)
{
    return str_replace(["'", "\""], ["''", "\"\""], $value);
}
//echo $sql_base  ; 

?>


<!DOCTYPE html>
<html lang="pt-br">
<?php
$pageTitle = "Relatorio - Orçamentos"; // Definir o título da página aqui
include('../geral/header.php');
?>

<body>

    <!-- Navigation Bar-->
    <?php
    include('../geral/menu.php');
    ?>
    <!-- End Navigation Bar-->

    <!-- ============================================================== -->
    <!-- Start Page Content here -->
    <!-- ============================================================== -->

    <div class="wrapper candidato">
        <div class="container-fluid">

            <div class="card-box mt-3">
                <div class="row">

                    <div class="col-6 text-left">
                        <h4 class="page-title">Consultar <?php echo !empty($nome_relatorio) ? $nome_relatorio : 'Relatórios'; ?></h4>

                    </div>


                    <div class="col-12">
                        <hr>
                    </div>

                    <div class="col-12">
                        <form method="get" action="" onsubmit="return validarFormulario()">
                            <div class="form-row mb-3">

                                <div class="form-group col-md-3">
                                    <label for="tipo_relatorio" class="col-form-label">Tipo Relatório</label>
                                    <select id="tipo_relatorio" name="tipo_relatorio" class="form-control">
                                        <option value="0" <?php echo (!isset($tipo_relatorio) || $tipo_relatorio == "0") ? "selected" : ""; ?>>Médico</option>
                                        <option value="1" <?php echo (isset($tipo_relatorio) && $tipo_relatorio == "1") ? "selected" : ""; ?>>Cliente</option>
                                        <option value="2" <?php echo (isset($tipo_relatorio) && $tipo_relatorio == "2") ? "selected" : ""; ?>>Vendedor</option>

                                    </select>
                                </div>
                                <div class="form-group col-md-3">
                                    <label for="filial" class="col-form-label">Filial</label>
                                    <select id="filial" name="filial" class="form-control">
                                        <option value="Todos" <?php echo (!isset($filial) || $filial == "Todos") ? "selected" : ""; ?>>Todos</option>
                                        <?php foreach ($filiais as $item) : ?>
                                            <option value="<?php echo $item['CDFIL']; ?>" <?php echo (isset($filial) && $filial == $item['CDFIL']) ? "selected" : ""; ?>>
                                                <?php echo $item['DESCRFIL']; ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>


                                <div class="form-group col-md-3">

                                    <label for="DataInicial" class="col-form-label">Data Inicial</label>
                                    <input type="date" id="DataInicial" name="DataInicial" class="form-control" value="<?php echo isset($DataInicial) ? $DataInicial : ''; ?>">
                                </div>

                                <div class="form-group col-md-3">

                                    <label for="DataFinal" class="col-form-label">Data Final</label>
                                    <input type="date" id="DataFinal" name="DataFinal" class="form-control" value="<?php echo isset($DataFinal) ? $DataFinal : ''; ?>">
                                </div>

                                <div class="form-group col-md-3">
                                    <label for="situacao" class="col-form-label">Situação</label>
                                    <select id="situacao" name="situacao" class="form-control">
                                        <option value="Todos" <?php echo (!isset($situacao) || $situacao == "Todos") ? "selected" : ""; ?>>Todos</option>
                                        <option value="1" <?php echo (isset($situacao) && $situacao == "1") ? "selected" : ""; ?>>Aprovados</option>
                                        <option value="0" <?php echo (isset($situacao) && $situacao == "0") ? "selected" : ""; ?>>Rejeitados</option>
                                    </select>
                                </div>

                                <div class="form-group col-md-3">
                                    <label for="nomeMedico" class="col-form-label">Médico</label>
                                    <input type="text" class="form-control" id="nomeMedico" name="nomeMedico" placeholder="Médico" value="<?php echo isset($nomeMedico) ? htmlspecialchars($nomeMedico) : ''; ?>">

                                </div>


                                <div class="form-group col-md-3">
                                    <label for="nomeCliente" class="col-form-label">Cliente</label>
                                    <input type="text" class="form-control" id="nomeCliente" name="nomeCliente" placeholder="Cliente" value="<?php echo isset($nomeMedico) ? htmlspecialchars($nomeCliente) : ''; ?>">

                                </div>

                                <div class="form-group col-md-3">
                                    <label for="nomeVendedor" class="col-form-label">Vendedor</label>
                                    <input type="text" class="form-control" id="nomeVendedor" name="nomeVendedor" placeholder="Vendedor" value="<?php echo isset($nomeMedico) ? htmlspecialchars($nomeVendedor) : ''; ?>">

                                </div>



                                <div class="col-12 text-right">
                                    <a href="medico-list.php" class="btn btn-warning mr-2"><i class="mdi mdi-plus"></i> Limpar</a>
                                    <button name="pesquisar" type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Pesquisar</button>
                                </div>
                        </form>
                    </div>
                </div>
                <?php if (isset($_GET['pesquisar'])) { ?>
                    <div class="col-12">
                        <h6>Lista de <?php echo !empty($nome_relatorio) ? $nome_relatorio : 'Dados'; ?></h6>

                        <table id="minhaTabela" class="table table-bordered table-hover table-sm" style="width:100%;">
                            <thead class="thead-light">

                                <tr class="text-center">
                                    <th>Nome</th>
                                    <th>Filial</th>
                                    <th>Ano</th>
                                    <th>Mês</th>
                                    <th>Valor</th>
                                    <th>Situação</th>
                                    <th>Ações</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                $hasResults = false;
                                if (isset($result)) {
                                    while ($row = ibase_fetch_assoc($result)) {
                                        foreach ($row as $key => $value) {
                                            $row[$key] = mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1');
                                        }
                                        $hasResults = true;  // Indica que encontrou ao menos um resultado
                                ?>
                                        <tr class="text-center">
                                            <td>
                                                <?php echo $row['NOMEMED'] !== null ? ($row['NOMEMED']) : 'Orçamentos sem ' . $nome_relatorio; ?>
                                            </td>

                                            <td><?php echo htmlspecialchars($row['FILIAL_DESC']); ?></td>
                                            <td><?php echo htmlspecialchars($row['ANO']); ?></td>
                                            <td><?php echo htmlspecialchars($row['MES']); ?></td>
                                            <td data-order="<?php echo number_format($row['SOMA'], 2, ',', '.'); ?>">
                                                <span class="badge badge-pill <?php echo getBadgeClass($row['STATUS_QTAPROV']); ?>">
                                                    R$ <?php echo number_format($row['SOMA'], 2, ',', '.'); ?>
                                                </span>
                                            </td>
                                            <td><?php echo htmlspecialchars($row['STATUS_QTAPROV']); ?></td>
                                            <td>
                                                <?php
                                                // Supondo que as variáveis $tipo_relatorio, $row, e $DataInicial já estejam definidas

                                                if ($tipo_relatorio == "0") {
                                                    echo '<a href="detalhar_medico.php?id_medico=' . urlencode($row['CRM_CONCAT']) . '&status=' . urlencode(trim($row['STATUS_QTAPROV'])) . '&dtinicial=' . urlencode($DataInicial) . '&dtfinal=' . urlencode($DataFinal) . '" class="table-actions link-view">';
                                                    echo '<i class="mdi mdi-account-search"></i>';
                                                    echo '</a>';
                                                } elseif ($tipo_relatorio == "1") {
                                                    echo '<a href="detalhar_medico.php?id_medico=' . urlencode($row['NOMEMED']) . '&status=' . urlencode(trim($row['STATUS_QTAPROV'])) . '&dtinicial=' . urlencode($DataInicial) . '" class="table-actions link-view">';
                                                    echo '<i class="mdi mdi-account-search"></i>';
                                                    echo '</a>';
                                                } elseif ($tipo_relatorio == "2") {
                                                    echo '<a href="detalhar_medico.php?id_medico=' . urlencode($row['FUN.CDFUN']) . '&status=' . urlencode(trim($row['STATUS_QTAPROV'])) . '&dtinicial=' . urlencode($DataInicial) . '" class="table-actions link-view">';
                                                    echo '<i class="mdi mdi-account-search"></i>';
                                                    echo '</a>';
                                                }
                                                ?>

                                                </a>


                                            </td>
                                        </tr>


                                <?php
                                    }
                                }

                                if (!$hasResults) {
                                    echo "<tr><td colspan='7' class='text-center'>Sem resultado para a consulta</td></tr>";
                                }


                                ?>
                            </tbody>
                        </table>
                    <?php } ?>

                    </div>

            </div>
            <!-- PAGINAÇÃO -->

            <!-- FIM PAGINAÇÃO -->

        </div>

    </div>

    </div> <!-- end container -->
    </div>

    <!-- end wrapper -->

    <!-- ============================================================== -->
    <!-- End Page content -->
    <!-- ============================================================== -->
    <!-- Footer Start -->
    <?php
    include('../geral/footer.php');
    ?>
    <!-- end Footer -->

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

    <!-- Vendor js -->
    <script src="../../assets/js/vendor.min.js"></script>

    <!-- knob plugin -->
    <script src="../../assets/libs/jquery-knob/jquery.knob.min.js"></script>
    <!-- App js-->
    <script src="../../assets/js/app.min.js"></script>

</body>

</html>


<script>
    function showModal(title, message) {
        const modal = new bootstrap.Modal(document.getElementById('exampleModal'));
        const modalTitle = document.querySelector('.modal-title');
        const modalBody = document.querySelector('.modal-body p');

        modalTitle.textContent = title;
        modalBody.textContent = message;

        modal.show();
    }

    function validarCampo(id) {
        let campo = document.getElementById(id);
        return campo.value.trim(); // Retorna o valor do campo após remover espaços em branco
    }

    function adicionarClasseErro(campo) {
        campo.classList.add('is-invalido');
    }

    function removerClasseErro(campo) {
        campo.classList.remove('is-invalido');
    }

    function validarFormulario() {
        let filial = validarCampo("filial");
        let DataInicial = validarCampo("DataInicial");
        let DataFinal = validarCampo("DataFinal");
        let nomeMedico = validarCampo("nomeMedico");
        let nomeCliente = validarCampo("nomeCliente");
        let nomeVendedor = validarCampo("nomeVendedor");

        let algumPreenchido = (filial !== 'Todos' || DataInicial !== '' || DataFinal !== '' || nomeMedico !== '' || nomeCliente !== '' || nomeVendedor !== '');

        let DataInicialCampo = document.getElementById("DataInicial");
        let DataFinalCampo = document.getElementById("DataFinal");

        if (DataInicial === '' || DataFinal === '') {
            adicionarClasseErro(DataInicialCampo);
            adicionarClasseErro(DataFinalCampo);
            showModal('Informação', 'As datas de inicial e final são obrigatórias para realizar a consulta.');
            return false;
        }

        if (new Date(DataInicial) > new Date(DataFinal)) {
            adicionarClasseErro(DataInicialCampo);
            adicionarClasseErro(DataFinalCampo);
            showModal('Erro', 'A data inicial não pode ser maior que a data final.');
            return false;
        }

        if (!algumPreenchido) {
            showModal('Informação', 'Pelo menos um campo deve estar preenchido para realizar a consulta.');
            return false;
        }

        return true;
    }

    function verificarDatas() {
        let DataInicialCampo = document.getElementById("DataInicial");
        let DataFinalCampo = document.getElementById("DataFinal");
        let DataInicial = DataInicialCampo.value.trim();
        let DataFinal = DataFinalCampo.value.trim();

        if (DataInicial !== '' && DataFinal !== '') {
            removerClasseErro(DataInicialCampo);
            removerClasseErro(DataFinalCampo);

            if (new Date(DataInicial) > new Date(DataFinal)) {
                adicionarClasseErro(DataInicialCampo);
                adicionarClasseErro(DataFinalCampo);
                showModal('Erro', 'A data inicial não pode ser maior que a data final.');
            }
        }
    }

    document.getElementById("DataInicial").addEventListener('input', function() {
        removerClasseErro(this);
        verificarDatas();
    });

    document.getElementById("DataFinal").addEventListener('input', function() {
        removerClasseErro(this);
        verificarDatas();
    });
</script>



<script src="../geral/javascript.js"></script>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/dataTables.bootstrap5.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap5.min.css">


<script>
    // Definindo um tipo de coluna personalizado para valores monetários
    $.fn.dataTable.ext.type.order['currency-pre'] = function(d) {
        return parseFloat(d.replace(/[^\d,-]/g, '').replace(',', '.'));
    };

    $(document).ready(function() {
        var tabela = $('#minhaTabela').DataTable({
            "order": [
                [4, "desc"]
            ],
            "columnDefs": [{
                "type": "currency",
                "targets": 4
            }],
            "language": {
                "lengthMenu": "Mostrar _MENU_ registros por página",
                "zeroRecords": "Nenhum registro encontrado",
                "info": "Mostrando página _PAGE_ de _PAGES_",
                "infoEmpty": "Nenhum registro disponível",
                "infoFiltered": "(filtrado de _MAX_ registros no total)",
                "search": "Pesquisar na Tabela:",
                "paginate": {
                    "first": "Primeiro",
                    "last": "Último",
                    "next": "Próximo",
                    "previous": "Anterior"
                },
                "loadingRecords": "Carregando...",
                "processing": "Processando...",
                "emptyTable": "Nenhum dado disponível na tabela"
            },
            "ordering": true
        });
    });
</script>
<style>
    .is-invalido {
        box-shadow: 0 0 5px red !important;
    }
</style>