<?php
require '../conexao/conexao.php';
require '../configuacoes.php';
require '../sessao.php';
require '../configuracao/get_config.php';
require '../conexao/acesso.php';
$pageTitle = "Recebidos Médico";
$configuracoes = new Configuracoes;

$operacoes = $configuracoes->get_operacoes_em_uso(); // Supondo que já seja um array
if (!empty($operacoes)) {
    sort($operacoes);
    $operacoes = implode(',', array_map('intval', $operacoes));
} else {
    $operacoes = 'NULL';
}

$idMedico = $_GET['id_medico'] ?? null;
$NomeMedico = $_GET['medico'] ?? null;
$nome_visitador = $_GET['nome_visitador'] ?? null;
$especialidade = $_GET['especialidade'] ?? null;

if (isset($_GET['visitador']) and $_GET['visitador'] != '') {
    $idVisitador = $_GET['visitador'] ?? [];
    if (!is_array($idVisitador)) {
        $idVisitador = [$idVisitador];
    }
}

$DataInicial = $_GET['dtinicial'] ?? null;
$DataFinal = $_GET['dtfinal'] ?? null;
$filial = $_GET['filial'] ?? null;

// // Ajustando a consulta para Firebird
// $query = "SELECT
//     ME.NOMEMEDICO as NOMEMED,
//     CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM AS crm_concat,
//     espec.nomeespecialidade,
//     A1.aviada_lj as FILIAL,
//     IIF(MR.CODIGO_FUNCIONARIO IS NULL, 'SEM REPRESENTANTE', MR.CODIGO_FUNCIONARIO ||' - '|| RP.NOMEFUNCIONARIO) as VISITADOR
// FROM ATENDIMENTO_A1 A1
//     INNER JOIN CLIENTE CL ON CL.CODIGO = A1.CODIGO_CLIENTE
//     INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
//     LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
//     LEFT JOIN medico_especialidade espec ON espec.codigo = ME.codigo_medico_especialidade
//     INNER JOIN FUNCIONARIO FU ON FU.CODIGO = IIF(A1.STATUS_MOV = 0, A1.CADASTRO_LJ, A1.AVIADA_CF)
//     LEFT JOIN MEDICO_REPRESENTANTE MR ON ME.CODIGO = MR.CODIGO_MEDICO
//       AND (MR.CODIGO_EMPRESA IS NULL OR (MR.CODIGO_EMPRESA = IIF(A1.STATUS_MOV = 0, A1.CADASTRO_LJ, A1.AVIADA_LJ)))
//     LEFT JOIN FUNCIONARIO RP ON MR.CODIGO_FUNCIONARIO = RP.CODIGO
// WHERE A1.TIPO_ATENDIMENTO = 1
//  AND A1.CODIGO_TIPOOPERACAO NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)
//  ";

// // if (!empty($operacoes)) {
// //     $query .= " AND A1.CODIGO_TIPOOPERACAO NOT IN ($operacoes)";
// // }

// // Aplicação de filtros dinâmicos
// if ($filial && $filial != "Todos") {
//     $query .= " AND A1.aviada_lj IN ($filial)";
// }

// if ($idMedico && $idMedico != "Todos") {
//     $query .= " AND CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM = '{$idMedico}'";
// }

// if ($DataInicial && $DataFinal) {
//     $DataInicial = date('Y-m-d', strtotime($DataInicial));
//     $DataFinal = date('Y-m-d', strtotime($DataFinal));
//     $query .= " AND CAST(A1.aviada_dt AS DATE) BETWEEN '$DataInicial' AND '$DataFinal'";
// }

// if (isset($idVisitador) and $idVisitador != '') {
//     $visitadoresStr = "'" . implode("','", $idVisitador) . "'";
//     $query .= " AND MR.codigo_funcionario IN ({$visitadoresStr})";
// }

// // Agrupamento e ordenação
// $query .= " GROUP BY A1.aviada_lj, ME.NOMEMEDICO, CR.SIGLA, ME.CR_ESTADO, ME.CRM, espec.nomeespecialidade, MR.CODIGO_FUNCIONARIO, RP.NOMEFUNCIONARIO";
// $query .= " ORDER BY A1.aviada_lj, ME.NOMEMEDICO";

// // echo $query;
// // exit;

// // Preparando a consulta
// $stmt = ibase_prepare($connection, $query);

// // Executando a consulta
// $result = ibase_execute($stmt);

// // Verificando se a consulta foi executada corretamente
// if (!$result) {
//     die('Erro na execução da consulta: ' . ibase_errmsg());
// }

// // Inicializando o array para armazenar os resultados
// $pessoa = [];

// // Buscando os dados e armazenando no array
// while ($row = ibase_fetch_assoc($result)) {
//     $pessoa[] = $row;
// }

// print_r($pessoa[0]);
// exit;

// if ($stmt) {
//     // Executando a consulta sem passar argumentos adicionais
//     $result = ibase_execute($stmt);

//     print_r($result);exit;

//     if ($result) {
//         $pessoa = ibase_fetch_assoc($result);
//         if ($pessoa) {
//             print_r($pessoa);exit;
//             $pessoa['NOMEMED'] = mb_convert_encoding($pessoa['NOMEMED'], 'UTF-8', 'ISO-8859-1');
//             // Formate a data

//         } else {
//             echo "Nenhuma pessoa encontrada com o ID especificado.";
//         }
//     } else {
//         echo "Erro ao executar a declaração: " . ibase_errmsg();
//     }

//     // Libere a memória associada ao resultado
//     ibase_free_result($result);
// } else {
//     echo "Erro ao preparar a declaração: " . ibase_errmsg();
// }

// $sql_grid_medicos = "SELECT
//     A1.aviada_lj as filial,
//     A1.CODIGO as receita,
//     IIF(A1.STATUS_MOV = 0, CAST(A1.CADASTRO_DT AS DATE), CAST(A1.aviada_dt AS DATE)) as data_aviada,
//     CL.CODIGO ||' - '|| CL.NOMECLIENTE AS nome_cliente,
//     SUM(CAST(COALESCE((A1.VALORVENDA_DESC), 0) AS numeric(18,2))) as valor_recebido
// FROM ATENDIMENTO_A1 A1
//     INNER JOIN CLIENTE CL ON CL.CODIGO = A1.CODIGO_CLIENTE
//     INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
//     LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
//     INNER JOIN FUNCIONARIO FU ON FU.CODIGO = IIF(A1.STATUS_MOV = 0, A1.CADASTRO_LJ, A1.AVIADA_CF)
//     LEFT JOIN MEDICO_REPRESENTANTE MR ON ME.CODIGO = MR.CODIGO_MEDICO
//       AND (MR.CODIGO_EMPRESA IS NULL OR (MR.CODIGO_EMPRESA = IIF(A1.STATUS_MOV = 0, A1.CADASTRO_LJ, A1.AVIADA_LJ)))
//     LEFT JOIN FUNCIONARIO RP ON MR.CODIGO_FUNCIONARIO = RP.CODIGO
// WHERE A1.TIPO_ATENDIMENTO = 1
// AND A1.CODIGO_TIPOOPERACAO NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)";

// // if (!empty($operacoes)) {
// //     $sql_grid_medicos .= " AND A1.CODIGO_TIPOOPERACAO NOT IN ($operacoes)";
// // }


// $sql_grid_medicos .= "AND CAST(A1.aviada_dt AS DATE) BETWEEN '{$DataInicial}' AND '{$DataFinal}' ";

// if (!empty($idVisitador) && !in_array("Todos", $idVisitador)) {
//     $visitadoresStr = "'" . implode("','", $idVisitador) . "'";
//     $sql_grid_medicos .= " AND MR.codigo_funcionario IN ({$visitadoresStr})";
// }

// $sql_grid_medicos .= "
//     AND (CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM) = '{$idMedico}'";

// // Filtro de filial, se houver
// if (isset($filial) && $filial !== 'Todos') {
//     $sql_grid_medicos .= " AND A1.aviada_lj IN ({$filial})";
// }

// // Adicionando todas as colunas não agregadas ao GROUP BY
// $sql_grid_medicos .= " GROUP BY A1.aviada_lj, A1.CODIGO, CL.CODIGO, CL.NOMECLIENTE, A1.STATUS_MOV, A1.CADASTRO_DT, A1.aviada_dt, CR.SIGLA, ME.CR_ESTADO, ME.CRM";

$sql_base = "SELECT
    A1.aviada_lj AS filial,
    A1.CODIGO AS receita,
    IIF(A1.STATUS_MOV = 0, CAST(A1.CADASTRO_DT AS DATE), CAST(A1.aviada_dt AS DATE)) AS data_aviada,
    CL.CODIGO || ' - ' || CL.NOMECLIENTE AS nome_cliente,
    (SELECT FIRST 1 TL.TELEFONEPREFIXO || ' ' || TL.TELEFONE
       FROM CADASTRO_TELEFONE TL
      WHERE TL.TIPO_CADASTRO   = 1
        AND TL.CODIGO_CADASTRO = CL.CODIGO
        AND TL.PRINCIPAL       = -1) AS TEL,
    SUM(CAST(COALESCE(A1.VALORVENDA_DESC, 0) AS NUMERIC(18,2))) AS valor_recebido
FROM ATENDIMENTO_A1 A1
INNER JOIN CLIENTE CL ON CL.CODIGO = A1.CODIGO_CLIENTE
INNER JOIN MEDICO ME ON ME.CODIGO = A1.CODIGO_MEDICO
LEFT JOIN MEDICO_CR CR ON ME.CODIGO_CONSELHO_REGIONAL = CR.CODIGO
LEFT JOIN MEDICO_ESPECIALIDADE ESPEC ON ESPEC.CODIGO = ME.CODIGO_MEDICO_ESPECIALIDADE
INNER JOIN FUNCIONARIO FU ON FU.CODIGO = CASE WHEN A1.STATUS_MOV = 0 THEN A1.CADASTRO_LJ ELSE A1.AVIADA_CF END
-- LEFT JOIN para garantir que médicos sem representantes também apareçam
LEFT JOIN (
    SELECT
        MR.CODIGO_MEDICO,
        MIN(RP.CODIGO) AS CODIGO,
        MIN(RP.NOMEFUNCIONARIO) AS NOMEFUNCIONARIO
    FROM MEDICO_REPRESENTANTE MR
    LEFT JOIN FUNCIONARIO RP ON MR.CODIGO_FUNCIONARIO = RP.CODIGO
    WHERE 1=1 ";

// Aplicando filtro de visitador apenas se existir
if (!empty($idVisitador) && !in_array("Todos", $idVisitador)) {
    $visitadoresStr = "'" . implode("','", $idVisitador) . "'";
    $sql_base .= " AND MR.CODIGO_FUNCIONARIO IN ({$visitadoresStr})";
}

$sql_base .= "
    GROUP BY MR.CODIGO_MEDICO
) RP ON ME.CODIGO = RP.CODIGO_MEDICO

WHERE A1.TIPO_ATENDIMENTO = 1";

// Se houver visitadores específicos, aplicar filtro na tabela resultante RP
if (!empty($idVisitador) && !in_array("Todos", $idVisitador)) {
    $visitadoresStr = "'" . implode("','", $idVisitador) . "'";
    $sql_base .= " AND RP.CODIGO IN ({$visitadoresStr})";
}

// Filtrando tipos de operação
$sql_base .= " AND A1.CODIGO_TIPOOPERACAO NOT IN (5, 159, 174, 184, 185, 186, 187, 188, 190, 216, 221, 234, 235, 236, 237, 242, 246, 261, 296, 297)";

// Filtro por filial, se houver
if ($filial && $filial != "Todos") {
    $sql_base .= " AND A1.AVIADA_LJ IN ('$filial')";
}

// Filtro por médico
$sql_base .= " AND (CR.SIGLA || '-' || ME.CR_ESTADO || '-' || ME.CRM) = '{$idMedico}'";

// Filtro por período de datas
if ($DataInicial && $DataFinal) {
    $DataInicial = date('Y-m-d', strtotime($DataInicial));
    $DataFinal = date('Y-m-d', strtotime($DataFinal));
    $sql_base .= " AND CAST(A1.ENTREGUE_DT AS DATE) BETWEEN '$DataInicial' AND '$DataFinal'";
}

// Agrupamento final
$sql_base .= " GROUP BY
    A1.aviada_lj,
    A1.CODIGO,
    CL.CODIGO,
    CL.NOMECLIENTE,
    A1.STATUS_MOV,
    A1.CADASTRO_DT,
    A1.aviada_dt,
    CR.SIGLA,
    ME.CR_ESTADO,
    ME.CRM";

// Executando consulta
$result_grid_medicos = ibase_query($connection, $sql_base);

if (!$result_grid_medicos) {
    die('Erro na consulta ' . $sql_base . ' Firebird/InterBase: ' . ibase_errmsg());
}

?>



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

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">
                            <?php echo $pageTitle; ?>
                        </h4>
                    </div>
                    <div class="col-6 text-right">
                        <button onclick="goBack()" class="btn btn-light"><i class="mdi mdi-keyboard-backspace"></i> Voltar</button>
                    </div>
                    <div class="col-12">
                        <hr>
                    </div>
                    <div class="col-12">
                        <form method="post" action="" onsubmit="return validarFormulario();">
                            <div class="form-row mb-3">
                                <!-- Campos para pessoa física -->

                                <div class="form-group col-md-3 pessoa-fisica">
                                    <p><b>Nome:</b> <?php echo isset($NomeMedico) ? htmlspecialchars($NomeMedico, ENT_QUOTES, 'UTF-8') : 'N/A'; ?></p>
                                </div>
                                <div class="form-group col-md-3 pessoa-fisica">
                                    <p><b>CRM:</b> <?php echo isset($idMedico) ? htmlspecialchars($idMedico, ENT_QUOTES, 'UTF-8') : 'N/A'; ?></p>
                                </div>
                                <div class="form-group col-md-3 pessoa-fisica">
                                    <p><b>ESPECIALIDADE:</b> <?php echo isset($especialidade) ? htmlspecialchars($especialidade, ENT_QUOTES, 'UTF-8') : 'N/A'; ?></p>
                                </div>
                                <div class="form-group col-md-3 pessoa-fisica">
                                    <p><b>VISITADOR:</b> <?php echo isset($nome_visitador) ? htmlspecialchars($nome_visitador, ENT_QUOTES, 'UTF-8') : 'N/A'; ?></p>
                                </div>

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

                                    <p><b>DATA DE CADASTRO:</b> <?php echo htmlspecialchars($dataFormatada, ENT_QUOTES, 'UTF-8'); ?></p>
                                </div> -->

                                <div class="col-12">
                                    <h6>Tabela de Recebidos do Médico</h6>

                                    <div class="row">
                                        <div class="col-12">
                                            <table id="minhaTabela" class="table table-bordered table-hover table-sm" style="width:100%;">
                                                <thead class="thead-light">
                                                    <tr>
                                                        <th scope="col">Filial</th>
                                                        <th escope="col">Requisição</th>
                                                        <th scope="col">Data de Entrada</th>
                                                        <th scope="col">Nome Paciente</th>
                                                        <th scope="col">Telefone</th>
                                                        <th scope="col">Valor Recebido</th>

                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <?php
                                                    $hasResults = false;
                                                    if (isset($result_grid_medicos)) {
                                                        //print_r($result_grid_medicos);
                                                        $total_recebido = 0;
                                                        while ($rowgridmedicos = ibase_fetch_assoc($result_grid_medicos)) {
                                                            $hasResults = true;
                                                            //$rowgridmedicos['NOME_CLIENTE'] = mb_convert_encoding($rowgridmedicos['NOME_CLIENTE'], 'UTF-8', 'ISO-8859-1');

                                                            $dataOriginal = $rowgridmedicos['DATA_AVIADA'];

                                                            // Verificando se a data não é vazia ou nula
                                                            if ($dataOriginal) {
                                                                $dataFormatada = date('d/m/Y', strtotime($dataOriginal));
                                                            } else {
                                                                $dataFormatada = '';  // Caso a data seja vazia, você pode definir um valor padrão
                                                            }

                                                            echo '<tr>';
                                                            echo '<td>' . $rowgridmedicos['FILIAL'] . '</td>';
                                                            echo '<td>' . $rowgridmedicos['RECEITA'] . '</td>';
                                                            echo '<td> ' . $dataFormatada;
                                                            ' </td>';
                                                            echo '<td>' . $rowgridmedicos['NOME_CLIENTE'] . '</td>';
                                                            echo '<td>' . $rowgridmedicos['TEL'] . '</td>';
                                                            echo '<td data-order="' . $rowgridmedicos['VALOR_RECEBIDO'] . '">R$ ' . number_format($rowgridmedicos['VALOR_RECEBIDO'], 2, ',', '.') . '</td>';
                                                            echo '</tr>';
                                                            $total_recebido += $rowgridmedicos['VALOR_RECEBIDO'];
                                                        }
                                                    }
                                                    if (!$hasResults) {
                                                        echo "<tr><td colspan='11' class='text-center'>Sem resultado para a consulta</td></tr>";
                                                    }
                                                    ?>
                                                </tbody>
                                            </table> <!-- Adiciona a linha com o totalizador -->
                                            <div class="row">
                                                <div class="col-md-12">
                                                    <h4>Valor Total: R$ <?php echo number_format($total_recebido, 2, ',', '.'); ?></h4>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                        </form>

                    </div>
                </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 goBack() {
        window.history.back();
    }
</script>

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

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

<script>
    $(document).ready(function() {
        // Define um tipo de coluna personalizado para valores monetários
        $.fn.dataTable.ext.type.order['currency-br-pre'] = function(d) {
            // Converte a string monetária formatada em um número float para ordenação correta
            return parseFloat(d.replace(/[^\d,-]/g, '').replace(',', '.'));
        };

        // Inicializa o DataTable
        $('#minhaTabela').DataTable({
            "language": {
                "url": "https://cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"
            },
            "columnDefs": [{
                "type": "currency-br", // Usa o tipo de coluna personalizado 'currency-br' para ordenação
                "targets": [4] // Aplica o tipo de coluna personalizado à coluna de índice 4
            }],
            "order": [
                [4, "desc"] // Ordena pela coluna de índice 4 descendentemente
            ],
            "ordering": true,
            "lengthMenu": [
                [10, 25, 50, 100, -1],
                [10, 25, 50, 100, "Todos"]
            ]
        });
    });
</script>