<?php
require '../conexao/conexao.php';
require '../conexao/acesso.php';
require '../configuacoes.php';
require 'consulta_bd.php';
require '../configuracao/filtros.php';

if (isset($_GET['id']) && $_GET['id'] == '0') {
    $pageTitle = "Incluir Autorização";
} else {
    $pageTitle = "Alterar Autorização";
}
$consulta_medico = new ConsultasMedicoAitorizacao();
$filtros = new Filtros();
$medicos = $consulta_medico->get_medicos();


$produto_principal = null;
$produto_substituto = null;
//Declarado as variáveis que serão usadas para edição.
$medico = array(
    'id_medico' => $_GET['id'] ?? '0',
    'crm_medico' => $_GET['crm_medico'] ?? '',
    'produto_principal' => $_GET['produto_principal'] ?? '',
    'produto_substituto' => $_GET['produto_substituto'] ?? '',
    'observacao' => '',
    'data' =>  '',
    'cadastro' =>  '',
);

$id_medico = $_GET['id_medico'] ?? null;
$crm_medico = $_GET['medicos'] ?? null;
$nome_medico = $_GET['nome_medico'] ?? null;
$materia_prima = $_GET['tipo'] ?? null;
$autorizacoes_slect = $_GET['autorizacoes'] ?? null;

$url = http_build_query([
    'medicos' => $_GET['medicosbox'] ?? null,
    'crm_medico' => $_GET['crm_medico'] ?? null,
    'nome_medico' => $_GET['nome_medico'] ?? null,
    'form_submitted' => '1'
]);

$autorizacoes = $consulta_medico->getTipoAutorizacao();
$produto = $consulta_medico->get_produtos();
if (isset($_GET['id']) && $_GET['id'] == '1') {
    $medico = $consulta_medico->get_medicos_com_autorizacoes(null, null, $id_medico);

    // Buscar os dados dos produtos (principal e substituto) e mapear por ID
    $principalId = $medico[0]['produto_principal'] ?? null;
    $substitutoId = $medico[0]['produto_substituto'] ?? null;
    $ids = array_filter([$principalId, $substitutoId]);

    $produto_principal = '';
    $produto_substituto = '';

    if (!empty($ids)) {
        $produtos_busca = implode(',', $ids);
        $produto_medico = $consulta_medico->get_produtos(null, $produtos_busca);

        $map = [];
        foreach ($produto_medico as $prod) {
            $map[$prod['ID']] = $prod['ID'] . " - " . $prod['NOME'];
        }

        if ($principalId && isset($map[$principalId])) {
            $produto_principal = $map[$principalId];
        }
        if ($substitutoId && isset($map[$substitutoId])) {
            $produto_substituto = $map[$substitutoId];
        }
    }
}

?>

<!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">
        <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 id="from_inclusao" method="post" action="processa_cadastro_autorizacoes.php" onsubmit="return validarFormulario();">
                            <div class="form-row mb-3">

                                <?php
                                echo $filtros->filtroCheckBox('medicos', $medicos, null, false, true); ?>

                                <div class="form-group col-6 col-md-4 col-lg-3">
                                    <label class="g" for="autorizacao">Autorização</label>
                                    <select id="autorizacao" name="autorizacao" class="form-control" oninput="validarCampo('autorizacao', this.value)">
                                        <option value="">Selecione uma autorização</option>
                                        <?php foreach ($autorizacoes as $autorizacao) : ?>
                                            <option value="<?= htmlspecialchars($autorizacao['ID']) ?>"
                                                <?= (isset($medico[0]['tipo_autorizacao']) && $medico[0]['tipo_autorizacao'] == $autorizacao['ID']) ? 'selected' : ''; ?>>
                                                <?= htmlspecialchars($autorizacao['NOME']) ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2">
                                    <label class="g" for="grupo">Grupo</label>
                                    <select id="grupo" name="grupo" class="form-control" oninput="validarCampo('grupo', this.value)">
                                        <option value="Todos">Selecione um grupo</option>
                                        <option value="1">Alopatia</option>
                                        <option value="2">Homeopatia</option>
                                        <option value="3">Revenda</option>
                                        <option value="4">Embalagem</option>
                                        <option value="9">Outros</option>

                                    </select>
                                </div>

                                <?php
                                echo $filtros->FiltroSearch('Produto', $produto, true, $produto_principal);
                                echo $filtros->FiltroSearch('Produto_Substituto', $produto, true, $produto_substituto);
                                ?>

                                <div class="form-group col-6 col-md-4 col-lg-3">
                                    <label class="g" for="cadastro">Quem esta fazendo o cadastro</label>
                                    <input type="text" class="form-control" id="cadastro" name="cadastro" placeholder="Quem esta fazendo o cadastro"
                                        value="<?php echo isset($medico[0]['cadastro']) ? htmlspecialchars($medico[0]['cadastro']) : ''; ?>"
                                        oninput="validarCampo('cadastro',this.value)">
                                </div>


                                <!-- <div class="form-group col-6 col-md-4 col-lg-2" id="produtos">
                                    <label for="produto1">Produto 1</label>
                                    <select id="produto1" name="produto1" class="form-control">
                                        <option value="">Selecione um produto</option>
                                    </select>
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2" id="produtos">
                                    <label for="produto_substituto">Produto 2</label>
                                    <select id="produto_substituto" name="produto_substituto" class="form-control">
                                        <option value="">Selecione um produto</option>
                                    </select>
                                </div> -->

                                <div class="form-group col-6 col-md-4 col-lg-3 pessoa-juridica">
                                    <label class="g" for="observacao" class="col-form-label">
                                        Observação<span class="text-danger">*</span>
                                    </label>
                                    <textarea name="observacao" id="observacao" class="form-control"
                                        placeholder="Informe Uma Observação Social"
                                        rows="4"
                                        maxlength="255"
                                        oninput="validarCampo(this)"><?=
                                                                        isset($medico[0]['observacao']) ? htmlspecialchars(trim($medico[0]['observacao'])) : ''; ?></textarea>
                                </div>


                                <?php
                                if (isset($_GET['id']) && $_GET['id'] == '1') { ?>
                                    <input type="hidden" name="update" id="update" value="1">
                                <?php  } ?>
                                <input type="hidden" name="id_medico" id="id_medico" value="<?php echo htmlspecialchars(isset($medico[0]['id'])) ? $medico[0]['id'] : 0; ?>">
                                <input type="hidden" name="url" id="url" value="<?php echo $url; ?>">

                                <div id="botoes-container" class="col-6 col-md-8 col-lg-6 d-flex " style="justify-content: end; margin-top: 3%">
                                    <div>
                                        <a href="#" class="btn btn-warning mr-2" onclick="reloadPage()">
                                            <i class="mdi mdi-plus"></i> Limpar
                                        </a>
                                    </div>
                                    <div>
                                        <button type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Salvar</button>
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div> <!-- end container -->

    <!-- 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>
    <script src="../../assets/libs/jquery/jquery.min.js"></script>
    <script src="../../assets/libs/bootstrap/js/bootstrap.bundle.min.js"></script>

    <!-- Init js-->
    <script src="../../assets/js/pages/form-advanced.init.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>
    <script src="../geral/javascript.js"></script>
    <script src="../../assets/js/funcoes.js"></script>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- CSS do Select2 -->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" rel="stylesheet">

    <!-- Biblioteca jQuery (caso não esteja carregada) -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

    <!-- JS do Select2 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>

    <script>
        initDropdownFilter('medicos', false);
        initDropdownFilterSilmples('produto', 'grupo', true);
        initDropdownFilterSilmples('produto_substituto', 'grupo', true);



        function atualizarVisibilidadeCampos() {
            let autorizacao = document.getElementById("autorizacao").value;
            let grupo = document.getElementById("grupo").closest(".form-group");
            let produto1 = document.getElementById("search_produto").closest(".form-group");
            let produto_substituto = document.getElementById("search_produto_substituto").closest(".form-group");
            let observacao = document.getElementById("observacao").closest(".form-group");

            // pega o container dos botões
            let botoesContainer = document.getElementById("botoes-container");

            if (autorizacao.toLowerCase() === "3") {
                grupo.style.display = "none";
                produto1.style.display = "none";
                produto_substituto.style.display = "none";
                observacao.style.display = "block";

                // muda classes do container dos botões
                botoesContainer.classList.remove("col-6", "col-lg-6");
                botoesContainer.classList.add("col-12", "col-lg-12");

            } else {
                grupo.style.display = "block";
                produto1.style.display = "block";
                produto_substituto.style.display = "block";
                // observacao.style.display = "none";

                // volta as classes originais
                botoesContainer.classList.remove("col-12", "col-lg-12");
                botoesContainer.classList.add("col-6", "col-lg-6");
            }
        }




        document.addEventListener("DOMContentLoaded", atualizarVisibilidadeCampos);

        document.getElementById("autorizacao").addEventListener("change", atualizarVisibilidadeCampos);

        document.addEventListener("DOMContentLoaded", function() {
            // Remove status and message parameters from URL
            const url = new URL(window.location);
            url.searchParams.delete('status');
            url.searchParams.delete('message');
            window.history.replaceState({}, document.title, url);
        });

        function reloadPage() {
            location.reload();
        }


        function exibirMensagemErro(mensagem, id) {
            let campo = document.getElementById(id);
            let parentDiv = campo.closest('.input-group') || campo.parentNode; // Encontra a div que contém o input

            let errorDiv = document.createElement('div');
            errorDiv.textContent = mensagem;
            errorDiv.classList.add('error-message', 'text-danger', 'mt-1');

            removerMensagemErro(id); // Remove qualquer erro pré-existente

            if (id === 'produto' || id === 'produto_substituto') {
                campo.classList.add('is-invalid'); // Adiciona classe de erro ao input
                parentDiv.insertAdjacentElement('afterend', errorDiv); // Adiciona a mensagem logo após o input-group
            } else {
                campo.classList.add('is-invalid');
                parentDiv.appendChild(errorDiv); // Adiciona dentro do próprio input-group
            }
        }

        function removerMensagemErro(id) {
            let campo = document.getElementById(id);
            let parentDiv = campo.closest('.input-group') || campo.parentNode;
            let existingError;

            if (id === 'produto' || id === 'produto_substituto') {
                existingError = parentDiv.nextElementSibling; // A mensagem foi adicionada APÓS o input-group
            } else {
                existingError = parentDiv.querySelector('.error-message'); // Padrão dentro da div
            }

            if (existingError && existingError.classList.contains('error-message')) {
                existingError.remove();
            }

            campo.classList.remove('is-invalid'); // Remove o erro do campo
        }



        function validarCampo(id) {
            let campo = document.getElementById(id);
            if (!campo) return false;
            if (id === 'codproduto' || id === 'codproduto_substituto') {
                id = id.replace(/^cod/, ''); // Remove "cod" do início da string
            }
            console.log(campo);
            let valor = campo.value.trim();
            let valido = valor !== "";

            if (!valido) {
                exibirMensagemErro("Por favor, preencha este campo.", id);
            } else {
                removerMensagemErro(id);
            }

            return valido;
        }


        document.addEventListener('DOMContentLoaded', function() {
            let produto = document.getElementById('produto'); // Agora captura o ID correto
            let produto_substituto = document.getElementById('produto_substituto'); // ID correto

            if (produto) {
                produto.addEventListener('input', () => validarCampo('produto'));
                produto.addEventListener('change', () => validarCampo('produto'));
            }

            if (produto_substituto) {
                produto_substituto.addEventListener('input', () => validarCampo('produto_substituto'));
                produto_substituto.addEventListener('change', () => validarCampo('produto_substituto'));
            }
        });


        function validarCheckBox(id = null) {
            let checkboxes = document.querySelectorAll('.medicos-checkbox:checked'); // Seleciona os marcados
            let checkboxesAll = document.querySelectorAll('#medicosselect_all:checked');
            let valido = checkboxes.length > 0;
            let validoAll = checkboxes.length > 0;

            if (!valido) {
                console.log("Nenhum médico foi selecionado!");
                exibirMensagemErro("Selecione pelo menos um médico.", "medicos_input");
            } else {
                console.log("Médico(s) selecionado(s).");
                removerMensagemErro("medicos_input");
            }

            return valido;
        }

        function validarFormulario() {
            let medicos = validarCheckBox();
            let autorizacao = validarCampo("autorizacao");
            let cadastro = validarCampo("cadastro");

            let grupo = document.getElementById("grupo").closest(".form-group").style.display !== "none" ? validarCampo("grupo") : true;
            let produto1 = document.getElementById("codproduto").closest(".form-group").style.display !== "none" ? validarCampo("codproduto") : true;
            let produto_substituto = document.getElementById("codproduto_substituto").closest(".form-group").style.display !== "none" ? validarCampo("codproduto_substituto") : true;
            let observacao = document.getElementById("observacao").closest(".form-group").style.display !== "none" ? validarCampo("observacao") : true;

            let camposValidos = medicos && autorizacao && cadastro && grupo && produto1 && produto_substituto && observacao;
            return camposValidos;
        }

        function goBack() {
            window.history.back();
        }
    </script>
    <script>
        // $(document).ready(function() {
        //     // Função para atualizar os selects de produtos com base no grupo selecionado
        //     function atualizarProdutos() {
        //         var grupo = $('#grupo').val(); // Obtém o grupo selecionado

        //         $.ajax({
        //             url: 'get_produtos.php',
        //             type: 'POST', // Usando POST, pois no PHP está verificando $_POST['grupo']
        //             data: {
        //                 grupo: grupo
        //             },
        //             dataType: 'json',
        //             success: function(response) {
        //                 console.log('Resposta recebida:', response); // Log da resposta

        //                 // Limpa os selects antes de adicionar novos produtos
        //                 $('#produto1, #produto_substituto').empty();
        //                 $('#produto1, #produto_substituto').append('<option value="">Selecione um produto</option>');

        //                 // Obtém os valores de produto selecionados para o médico (presumivelmente, você tem esses valores em algum lugar, como no PHP)
        //                 var produto1Selecionado = '<?php echo isset($medico['produto_principal']) ? $medico['produto_principal'] : ""; ?>';
        //                 var produto_substitutoSelecionado = '<?php echo isset($medico['produto_substituto']) ? $medico['produto_substituto'] : ""; ?>';

        //                 // Verifica se há produtos na resposta
        //                 if (response.length > 0) {
        //                     $.each(response, function(index, produto) {
        //                         var option = '<option value="' + produto.CDPRO + '">' + produto.CDPRO + ' - ' + produto.DESCR + '</option>';

        //                         // Marca a opção como selecionada se corresponder ao produto selecionado do médico
        //                         if (produto.CDPRO === produto1Selecionado) {
        //                             option = '<option value="' + produto.CDPRO + '" selected>' + produto.CDPRO + ' - ' + produto.DESCR + '</option>';
        //                         }
        //                         if (produto.CDPRO === produto_substitutoSelecionado) {
        //                             option = '<option value="' + produto.CDPRO + '" selected>' + produto.CDPRO + ' - ' + produto.DESCR + '</option>';
        //                         }

        //                         // Adiciona a opção ao select
        //                         $('#produto1, #produto_substituto').append(option);
        //                     });
        //                 } else {
        //                     $('#produto1, #produto_substituto').append('<option value="">Nenhum produto encontrado</option>');
        //                 }

        //                 // Aplica o Select2 para melhorar a experiência do usuário
        //                 $('#produto1, #produto_substituto').select2();
        //             },
        //             error: function(xhr, status, error) {
        //                 console.log('Erro na requisição AJAX: ' + error);
        //                 console.log(xhr.responseText); // Log da resposta bruta
        //             }
        //         });
        //     }

        //     // Executa a função ao carregar a página
        //     atualizarProdutos();

        //     // Atualiza os produtos sempre que o grupo mudar
        //     $('#grupo').on('change', function() {
        //         atualizarProdutos();
        //     });
        // });
    </script>
    <style>
        .is-invalid {
            border: 1px solid red;
        }

        .error-message {
            color: red;
            font-size: 1em;
        }

        .g {

            margin-top: 10px;
        }
    </style>
</body>

</html>