<?php
require '../conexao/conexao.php';
require '../sessao.php';
require '../configuacoes.php';
require '../configuracao/filtros.php';
require '../configuracao/consulta_banco_dados.php';
require '../conexao/acesso.php';
$consulta_bb = new ConsultaBancoDeDados();
$filtros = new Filtros();
$filiais = $consulta_bb->get_filiais();
$etapas = $consulta_bb->get_etapaFirebird();

$funcionarios = $consulta_bb->get_funcionarios_mandareceita();
$id_lancamento = '0';

$DataInicial = $_GET['DataInicial'] ?? null;
$DataFinal = $_GET['DataFinal'] ?? null;
$etapaSelecionado = $_GET['etapa'] ?? null;
$id_etapa = $_GET['id_etapa'] ?? null;
$operacoes_select = $_GET['operacao'] ?? null;
$ids = array_column($filiais, 'ID');
array_unshift($ids, 'x');
$ids_filial = implode(',', $ids);
$filialselect = !empty($_GET['filial']) ? $_GET['filial'] : null;
$filial = explode(',', $filialselect);

$filial = array_filter($filial, function ($item) {
    return $item !== 'x';
});
$filial = array_values($filial);
$filial = implode(',', $filial);

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

$codidentificador = $_GET['codidentificador'] ?? null;
$query_string = http_build_query([
    'filial' => $filialselect,
    'codidentificador' => $codidentificador,
    'DataInicial' => $DataInicial ?? null,
    'DataFinal' => $DataFinal ?? null,
    'operacao' => $operacoes_select,
    'etapa' => $etapaSelecionado ?? null,
    'form_submitted' => isset($_GET['form_submitted']) ? $_GET['form_submitted'] : '0',
]);



$sql_erros = "SELECT  * FROM mapa_erros me WHERE me.status IS NULL OR me.status = 'S';";
$result_erros = $connectionmysql->query($sql_erros);
$errosArray = [];
while ($row = $result_erros->fetch_assoc()) {
    $errosArray[] = $row;
}
//Verificando se é alteração

$sql_etapa = "SELECT  nome_etapa, codigo_etapa FROM etapas_pcp";
$result_etapa = $connectionmysql->query($sql_etapa);
$etapaArray = [];
while ($row = $result_etapa->fetch_assoc()) {
    $etapaArray[] = $row;
}

if (isset($_GET['id']) && $_GET['id'] == '1') {

    // Preparando a declaração
    $stmt = $connectionmysql->prepare("SELECT  ml.codigo_etapa
        FROM
        kpi.mapa_erros_lancados AS ml 
        WHERE ml.codigo_etapa = ? ");

    if ($stmt) {
        // Vinculando parâmetros e executando a declaração
        $stmt->bind_param("i", $id_etapa); // 'i' indica que é um inteiro
        $stmt->execute();

        // Obtendo os resultados
        $result = $stmt->get_result();
        if ($result->num_rows > 0) {
            $registro = $result->fetch_assoc(); //preenchendo as variáveis com o retorno da query

        } else {
            echo "Nenhuma pessoa encontrada com o ID especificado.";
        }

        $stmt->close();
    } else {
        echo "Erro ao preparar a declaração: " . $connectionmysql->error;
    }
} elseif (isset($_GET['id']) && $_GET['id'] == '2') {
    $id_lancamento = $_GET['id_lancamento'];


    $stmt = $connectionmysql->prepare("SELECT 
    ml.codigo_etapa,
    e.nome_etapa,
    ml.obs_erro,
    ml.data_lancamento,
    me.id_erro,
    ml.id_lancamento,
    ml.filial,ml.identificador
    FROM
    kpi.mapa_erros_lancados AS ml 
    LEFT JOIN kpi.etapas_pcp AS e ON e.codigo_etapa = ml.codigo_etapa
    LEFT JOIN kpi.mapa_erros AS me ON ml.id_erro = me.id_erro 
    WHERE ml.id_lancamento = ?");

    if ($stmt) {
        // Vinculando parâmetros e executando a declaração
        $stmt->bind_param("i", $id_lancamento); // 'i' indica que é um inteiro
        $stmt->execute();

        // Obtendo os resultados
        $result = $stmt->get_result();
        if ($result->num_rows > 0) {
            $registro = $result->fetch_assoc(); //preenchendo as variáveis com o retorno da query
            $registro_nome = $registro['nome_etapa'];
        } else {
            echo "Nenhuma pessoa encontrada com o ID especificado.";
        }

        $stmt->close();
    } else {
        echo "Erro ao preparar a declaração: " . $connectionmysql->error;
    }
}

$funcionario['identificador'] = $registro['identificador'] ?? null;

if (isset($_GET['id']) && $_GET['id'] == '1') {
    $pageTitle = "Lançamento de Erro"; // Definir o título da página aqui
} else {
    $pageTitle = "Alterar erro da Etapa $registro_nome";
}
//ar_dump($registro);
$filial = isset($registro['filial']) ? $registro['filial'] : null;
?>

<!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 method="post" action="processa_erro.php" onsubmit="return validarFormulario();">
                            <div class="form-row mb-3">
                                <!-- <div class="form-group col-6 col-md-4 col-lg-2 pessoa-fisica">
                                    <label for="nome" class="col-form-label">Nome</label>
                                    <span id="nome" class="form-control">
                                        <?php echo htmlspecialchars($registro['nome_etapa']);  ?>
                                    </span>
                                </div> -->
                                <?= $filtros->FiltroSearch('identificador', $funcionarios, true, $funcionario['identificador'], false); ?>

                                <div class="form-group col-6 col-md-4 col-lg-2 pessoa-fisica">
                                    <label for="codigo_etapa" class="col-form-label">Código Etapa</label>
                                    <span id="codigo_etapa" class="form-control">
                                        <?php echo htmlspecialchars($registro['codigo_etapa']);  ?>
                                    </span>
                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2 pessoa-fisica">
                                    <label for="codigo_etapa" class="col-form-label">Etapa</label>
                                    <select name="codigo_etapa" id="codigo_etapa" class="form-control" disabled onchange="validarCampo('codigo_etapa')">
                                        <option value="" <?php echo empty($registro['codigo_etapa']) ? 'selected' : ''; ?> disabled>Selecione</option>
                                        <?php
                                        foreach ($etapas as $etapa) {
                                            $selected = ($registro['codigo_etapa'] == $etapa['CODIGO_ETAPA']) ? 'selected' : '';
                                            echo "<option value=\"{$etapa['CODIGO_ETAPA']}\" $selected>{$etapa['NOME_ETAPA']}</option>";
                                        }
                                        ?>
                                    </select>

                                </div>

                                <div class="form-group col-6 col-md-4 col-lg-2 pessoa-fisica">
                                    <label for="erro" class="col-form-label">Erro</label>
                                    <select name="erro" id="erro" class="form-control" onchange="validarCampo('erro')">
                                        <option value="" disabled <?php echo empty($registro['id_erro']) ? 'selected' : ''; ?>>Selecione</option>
                                        <?php
                                        foreach ($errosArray as $erro) {
                                            $selected = ($registro['id_erro'] == $erro['id_erro']) ? 'selected' : '';
                                            echo "<option value=\"{$erro['id_erro']}\" $selected>{$erro['nome_erro']}</option>";
                                        }
                                        ?>
                                    </select>
                                </div>
                                <?php
                                echo $filtros->filtroFilialSimples($filial, $filiais);
                                ?>


                                <div class="form-group col-md-6 pessoa-fisica">
                                    <label for="obs_erro" class="col-form-label">Observação</label>
                                    <textarea name="obs_erro" id="obs_erro" class="form-control" placeholder="Campo para Observação" rows="4"><?php echo !empty($registro['obs_erro']) ? htmlspecialchars($registro['obs_erro']) : ''; ?></textarea>
                                </div>


                                <input type="hidden" name="codigo_etapa" id="codigo_etapa" value="<?php echo htmlspecialchars($registro['codigo_etapa']); ?>">
                                <input type="hidden" name="id_lancamento" id="id_lancamento" value="<?php echo isset($id_lancamento) ? $id_lancamento : '0'; ?>">
                                <input type="hidden" name="url" id="url" value="<?= $query_string; ?>">

                                <div class="col-md-6 d-flex" style="justify-content: end;margin-top: 3%">
                                    <div>
                                        <button type="submit" class="btn btn-primary"><i class="mdi mdi-magnify"></i> Salvar</button>
                                    </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>
    <script src="../../assets/js/funcoes.js"></script>

    <select style="display: none;" id="saida" name="saida">
        <option value="," selected></option>
    </select>
    <script>
        initDropdownFilterSilmples('identificador', 'saida', false);

        function exibirMensagemErro(mensagem, id) {
            var existingError = document.querySelector('#' + id + ' ~ .error-message');
            if (existingError) {
                existingError.parentNode.removeChild(existingError);
            }
            var errorDiv = document.createElement('div');
            errorDiv.textContent = mensagem;
            errorDiv.classList.add('error-message');
            document.getElementById(id).parentNode.appendChild(errorDiv);
        }

        function removerMensagemErro(id) {
            var existingError = document.querySelector('#' + id + ' ~ .error-message');
            if (existingError) {
                existingError.parentNode.removeChild(existingError);
            }
        }

        function validarCampo(id) {
            const campo = document.getElementById(id);
            const valor = campo.value.trim();
            let campoValido = true;

            // Verifica se o campo é "filial"
            if (id === 'filial') {
                // Separa os valores por vírgula (em caso de múltiplos IDs)
                const valoresArray = valor.split(',');

                // Verifica se o valor contém "0" e mais de um ID
                if (valoresArray.includes('x') && valoresArray.length > 1) {
                    campoValido = false;
                    campo.classList.add('is-invalid');
                    exibirMensagemErro('Por favor, preencha este campo.', id);
                } else {
                    campo.classList.remove('is-invalid');
                    removerMensagemErro(id);
                }
            } else {
                // Validação padrão para outros campos
                if (!valor || valor === 'Selecione' || valor === 'Todos') {
                    campoValido = false;
                    campo.classList.add('is-invalid');
                    exibirMensagemErro('Por favor, preencha este campo.', id);
                } else {
                    campo.classList.remove('is-invalid');
                    removerMensagemErro(id);
                }
            }

            return campoValido;
        }

        function validarFormulario() {
            //let codigo_etapa = validarCampo("codigo_etapa");
            let erro = validarCampo("erro");
            let filial = validarCampo("filial");

            return erro && filial;
        }
    </script>

    <script>
        function goBack() {
            window.history.back();
        }
    </script>
    <style>
        .is-invalid {
            border: 1px solid red;
        }

        .error-message {
            color: red;
            font-size: 1em;
        }
    </style>
</body>

</html>