<?

/**
 * TRIBUNAL REGIONAL FEDERAL DA 4 REGIO
 *
 * 19/05/2023 - criado por sabino.colab
 *
 * Verso do Gerador de Cdigo: 1.43.2
 */

try {
    require_once dirname(__FILE__) . '/../../SEI.php';

    session_start();

    //////////////////////////////////////////////////////////////////////////////
    //InfraDebug::getInstance()->setBolLigado(false);
    //InfraDebug::getInstance()->setBolDebugInfra(true);
    //InfraDebug::getInstance()->limpar();
    //////////////////////////////////////////////////////////////////////////////

    SessaoSEI::getInstance()->validarLink();

    PaginaSEI::getInstance()->setTipoPagina(InfraPagina::$TIPO_PAGINA_SIMPLES);

    PaginaSEI::getInstance()->verificarSelecao('md_ia_similaridade_selecionar');

    SessaoSEI::getInstance()->validarPermissao($_GET['acao']);

    $strDesabilitar = '';

    $arrComandos = array();

    $objProcedimentoRN = new ProcedimentoRN();

    $objMdIaAdmConfigSimilarDTO = new MdIaAdmConfigSimilarDTO();
    $objMdIaAdmConfigSimilarDTO->retStrSinExibirFuncionalidade();
    $objMdIaAdmConfigSimilarDTO->retStrOrientacoesGerais();
    $objMdIaAdmConfigSimilarDTO->retNumQtdProcessListagem();
    $objMdIaAdmConfigSimilarRN = new MdIaAdmConfigSimilarRN();
    $objMdIaAdmConfigSimilarDTO = $objMdIaAdmConfigSimilarRN->consultar($objMdIaAdmConfigSimilarDTO);

    $objMdIaAdmPesqDocDTO = new MdIaAdmPesqDocDTO();
    $objMdIaAdmPesqDocDTO->retNumIdMdIaAdmPesqDoc();
    $objMdIaAdmPesqDocDTO->retStrSinExibirFuncionalidade();
    $objMdIaAdmPesqDocDTO->retStrNomeSecao();
    $objMdIaAdmPesqDocDTO->retStrOrientacoesGerais();
    $objMdIaAdmPesqDocRN = new MdIaAdmPesqDocRN();
    $objMdIaAdmPesqDocDTO = $objMdIaAdmPesqDocRN->consultar($objMdIaAdmPesqDocDTO);

    if ($objMdIaAdmPesqDocDTO) {
        $objMdIaAdmTpDocPesqDTO = new MdIaAdmTpDocPesqDTO();
        $objMdIaAdmTpDocPesqDTO->retNumIdSerie();
        $objMdIaAdmTpDocPesqDTO->retStrNomeSerie();
        $objMdIaAdmTpDocPesqDTO->setNumIdMdIaAdmPesqDoc($objMdIaAdmPesqDocDTO->getNumIdMdIaAdmPesqDoc());
        $objMdIaAdmTpDocPesqDTO->setStrSinAtivo("S");
        $objMdIaAdmTpDocPesqRN = new MdIaAdmTpDocPesqRN();
        $arrObjMdIaAdmTpDocPesqDTO = $objMdIaAdmTpDocPesqRN->listar($objMdIaAdmTpDocPesqDTO);
    }

    if ($_POST['hdnIdProcedimento'] != "") {
        $idProcedimento = $_POST['hdnIdProcedimento'];
    } else {
        $idProcedimento = $_GET['id_procedimento'];
    }

    if ($objMdIaAdmConfigSimilarDTO->getStrSinExibirFuncionalidade() == "S") {
        $objSeiRN = new SeiRN();
        $objEntradaConsultarProcedimentoAPI = new EntradaConsultarProcedimentoAPI();
        $objEntradaConsultarProcedimentoAPI->setIdProcedimento($idProcedimento);

        $objSaidaConsultarProcedimentoAPI = $objSeiRN->consultarProcedimento($objEntradaConsultarProcedimentoAPI);

        $objMdIaRecursoRN = new MdIaRecursoRN();
        $itensSimilares = $objMdIaRecursoRN->conexaoApiRecomendacaoSimilaridade(array($objMdIaAdmConfigSimilarDTO, $objSaidaConsultarProcedimentoAPI));

        if ($objMdIaAdmConfigSimilarDTO == null) {
            throw new InfraException("Parmetros das configuraes similares no cadastrados.");
        }
        $objInfraParametro = new InfraParametro(BancoSEI::getInstance());
        $exibirRacional = $objInfraParametro->getValor('MODULO_IA_EXIBIR_RACIONAL_PROCESSOS_SIMILARES', false);
    }
    if ($objMdIaAdmPesqDocDTO->getStrSinExibirFuncionalidade() == "S") {
        $strLinkDocumentoSelecao = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=md_ia_protocolos_selecionar&tipo_selecao=2&id_procedimento=' . $_GET["id_procedimento"] . '&id_object=objLupaDocumento');
        $strLinkPesquisaDocumento = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=md_ia_resultado_pesquisa_documento');
    }
    switch ($_GET['acao']) {
        case 'md_ia_recurso':
            $strTitulo = 'SEI IA';
            $arrComandos[] = '<button type="button" accesskey="C" name="btnCancelar" id="btnCancelar" value="Fechar" onclick="location.href=\'' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=arvore_visualizar&acao_origem=' . $_GET['acao'] . '&arvore=1&id_protocolo=' . $_GET['id_procedimento']) . '\';" class="infraButton">Fe<span class="infraTeclaAtalho">c</span>har</button>';
            break;

        default:
            throw new InfraException("Ao '" . $_GET['acao'] . "' no reconhecida.");
    }
} catch (Exception $e) {
    PaginaSEI::getInstance()->processarExcecao($e);
}

PaginaSEI::getInstance()->montarDocType();
PaginaSEI::getInstance()->abrirHtml();
PaginaSEI::getInstance()->abrirHead();
PaginaSEI::getInstance()->montarMeta();
PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo);
PaginaSEI::getInstance()->montarStyle();
?>
<link rel="stylesheet" type="text/css" href="modulos/ia/css/md_ia_comum.css" />
<?php
PaginaSEI::getInstance()->abrirStyle();
include_once('md_ia_recurso_cadastro_css.php');
PaginaSEI::getInstance()->fecharStyle();
PaginaSEI::getInstance()->montarJavaScript();
PaginaSEI::getInstance()->abrirJavaScript();
PaginaSEI::getInstance()->fecharJavaScript();
PaginaSEI::getInstance()->fecharHead();
PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"');

PaginaSEI::getInstance()->montarBarraComandosSuperior($arrComandos);
//PaginaSEI::getInstance()->montarAreaValidacao();

if ($objMdIaAdmConfigSimilarDTO->getStrSinExibirFuncionalidade() == "S") {
?>
    <form id="frmMdIaSimilaridadeCadastro" method="post"
        action="<?= SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao'] . '&acao_origem=' . $_GET['acao']) ?>">
        <div class="row">
            <div class="col-sm-12 col-md-12 col-lg-12 col-xl-12 text-justify">
                <fieldset class="infraFieldset form-control mb-3 py-3" style="height: auto">
                    <?php
                    if ($exibirRacional != "1") {
                    ?>
                        <legend class="infraLegend">Processos Similares</legend>
                    <?php
                    } else {
                    ?>
                        <legend class="infraLegend">Avaliao de Similaridade entre Processos</legend>
                        <?php
                        if ($itensSimilares->recommendation != "" && $itensSimilares != "404") {
                        ?>
                            <div style="text-align: right; margin-top: -10px;">
                                <button accesskey="S" name="sbmCadastrarMdIaAvaliacao" value="Salvar" class="infraButton"
                                    onclick="submeterDadosViaAjax()"><span class="infraTeclaAtalho">S</span>ubmeter
                                    Avaliao
                                </button>
                            </div>
                    <?php
                        }
                    }
                    ?>

                    <?= $objMdIaAdmConfigSimilarDTO->getStrOrientacoesGerais() ?>
                    <div id="divMsgProcessosSimilares">
                        <div class="alert" role="alert">
                            <label></label>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-sm-12 col-md-12 col-lg-12 col-xl-12">
                            <?php
                            if ($itensSimilares != "404") {
                            ?>
                                <table class="infraTable " id="tabela_ordenada" aria-describedby="Tabela de Processos Similares">
                                    <thead>
                                        <tr>
                                            <th class="infraTh" width="70px">Ranking</th>
                                            <th class="infraTh" width="20%">Processo</th>
                                            <?php
                                            if ($exibirRacional != "1") {
                                            ?>
                                                <th class="infraTh" width="auto"> Tipo de Processo</th>
                                                <th class="infraTh" style="width: 130px !important">Avaliao</th>
                                            <?php
                                            } else {
                                            ?>
                                                <th class="infraTh" width="auto"> Tipo de Processo</th>
                                                <th class="infraTh" style="width: 130px !important">Avaliao</th>
                                                <th class="infraTh" width="30%">Racional</th>
                                            <?php
                                            }
                                            ?>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php
                                        $contador = 0;
                                        if (!is_null($itensSimilares)) {
                                            $idRecommendation = $itensSimilares->id;
                                            if ($itensSimilares->recommendation != "") {
                                                foreach ($itensSimilares->recommendation as $arrayItemSimilar) {

                                                    $objProcedimentoDTO = new ProcedimentoDTO();
                                                    $objProcedimentoDTO->retDblIdProcedimento();
                                                    $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado();
                                                    $objProcedimentoDTO->retStrNomeTipoProcedimento();
                                                    $objProcedimentoDTO->setDblIdProcedimento($arrayItemSimilar->id_protocolo);

                                                    $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO);
                                                    if (!is_null($objProcedimentoDTO)) {
                                                        $contador++;
                                        ?>
                                                        <tr data-index="<?= $contador ?>" data-position="<?= $contador ?>">
                                                            <td class="idRanking">
                                                                <?= $contador ?><em class="gg-arrows-v mr-2"></em>
                                                                <input type="hidden" id="hdnRanking<?= $contador ?>"
                                                                    name="hdnRanking<?= $contador ?>" value="<?= $contador ?>" />
                                                            </td>
                                                            <td>
                                                                <a target="_blank"
                                                                    href="<?= SessaoSEI::getInstance()->assinarLink('controlador.php?acao=procedimento_trabalhar&id_procedimento=' . $arrayItemSimilar->id_protocolo) ?> "><?= $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado() ?></a>
                                                                <input type="hidden" id="hdnIdProtRecomend<?= $contador ?>"
                                                                    name="hdnIdProtRecomend<?= $contador ?>"
                                                                    value="<?= $arrayItemSimilar->id_protocolo ?>" />
                                                            </td>
                                                            <td>
                                                                <?= $objProcedimentoDTO->getStrNomeTipoProcedimento() ?>
                                                                <input type="hidden" id="hdnDescProtRecomend<?= $contador ?>"
                                                                    name="hdnDescProtRecomend<?= $contador ?>"
                                                                    value="<?= $objProcedimentoDTO->getStrNomeTipoProcedimento() ?>" />
                                                            </td>
                                                            <td class="text-center" style="padding-left: 20px; padding-right: 20px">
                                                                <div class="rounded-pill p-2 d-flex justify-content-around align-items-center"
                                                                    style="background: #EEE;">
                                                                    <span class="btn_thumbs up bubbly-button"></span><span
                                                                        style="color:#BBB">|</span>
                                                                    <span class="btn_thumbs down bubbly-button"></span>
                                                                    <input type="hidden" class="hdnAproved" id="hdnLike<?= $contador ?>"
                                                                        name="hdnLike<?= $contador ?>" value="" />
                                                                </div>
                                                            </td>
                                                            <?php
                                                            if ($exibirRacional == "1") {
                                                            ?>
                                                                <td>
                                                                    <input type="text" class="form-control" id="txtRacional<?= $contador ?>"
                                                                        name="txtRacional<?= $contador ?>" maxlength="250" />
                                                                </td>
                                                            <?php
                                                            }
                                                            ?>
                                                        </tr>
                                        <?php
                                                    }
                                                }
                                            }
                                        }
                                        ?>
                                        <input type="hidden" id="hdnNumeroElementos" name="hdnNumeroElementos"
                                            value="<?= $contador ?>" />
                                        <input type="hidden" id="hdnIdProcedimento" name="hdnIdProcedimento"
                                            value="<?= $idProcedimento ?>" />
                                        <input type="hidden" id="hdnIdRecommendation" name="hdnIdRecommendation"
                                            value="<?= $idRecommendation ?>" />

                                    </tbody>
                                </table>

                            <?php
                            } elseif ($itensSimilares != "404") {
                            ?>
                                <div class="alert alert-danger">
                                    <label class="infraLabelOpcional">
                                        O recurso especfico do SEI IA est indisponvel no momento.
                                    </label>
                                </div>
                            <?php
                            } else {
                            ?>
                                <div class="alert alert-warning">
                                    <label class="infraLabelOpcional">
                                        <?php
                                        echo MdIaRecursoINT::verificarStatusIndexacao($idProcedimento);
                                        ?>
                                    </label>
                                </div>
                            <?php
                            }
                            ?>
                        </div>
                    </div>
                    <?php
                    if ($exibirRacional == "1") {
                        if ($itensSimilares->recommendation != "") {
                    ?>
                            <div class="row">
                                <div class="col-sm-12 col-md-12 col-lg-12 col-xl-12">
                                    <label for="txaSugestoes" class="infraLabelOpcional">
                                        Sugestes
                                    </label>
                                    <label for="txaSugestoes" class="infraLabelOpcional">
                                    </label>
                                    <textarea class="infraTextArea form-control" name="txaSugestoes" id="txaSugestoes"
                                        rows="3"
                                        cols="150"
                                        onkeypress="return infraMascaraTexto(this, event, 500);"
                                        maxlength="500"
                                        tabindex="<?= PaginaSEI::getInstance()->getProxTabDados() ?>"></textarea>
                                </div>
                            </div>
                    <?
                        }
                    }
                    ?>
                </fieldset>
                <br />
            </div>
        </div>
    </form>
<?php
}

if ($objMdIaAdmPesqDocDTO->getStrSinExibirFuncionalidade() == "S") {
?>
    <form id="frmMdIaPesquisaDocumentos" method="post"
        action="<?= SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao'] . '&acao_origem=' . $_GET['acao']) ?>">
        <div class="row">
            <div class="col-sm-12 col-md-12 col-lg-12 col-xl-12 text-justify">
                <fieldset class="infraFieldset form-control mb-3 py-3" style="height: auto">
                    <legend class="infraLegend"><?= $objMdIaAdmPesqDocDTO->getStrNomeSecao() ?></legend>
                    <?= $objMdIaAdmPesqDocDTO->getStrOrientacoesGerais() ?>
                    <div id="divMsgPesquisaDocumento">
                        <div class="alert" role="alert">
                            <label></label>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-sm-12 col-md-12 col-lg-6 col-xl-6">
                            <div class="form-group">
                                <label id="lblQtdProcessListagem" for="txtTextoPesquisa" accesskey=""
                                    class="infraLabelOpcional">Texto para Pesquisa:</label>
                                <img align="top" alt="cone de Ajuda"
                                    src="<?= PaginaSEI::getInstance()->getDiretorioSvgGlobal() ?>/ajuda.svg"
                                    name="ajuda" <?= PaginaSEI::montarTitleTooltip('Escrever aqui texto de pesquisa caso queira combinar ou no com a pesquisa confrontando o contedo dos documentos do processo que forem selecionados para montar a pesquisa.

Ateno que esta funcionalidade NO tem por objetivo substituir a pesquisa tradicional do SEI. Esta pesquisa utiliza tcnicas de Inteligncia Artificial teis  para pesquisar texto com recursos de similaridade e semntica, inclusive selecionando documentos para confrontar com documentos, sem escrever nenhum texto complementar para a pesquisa.', 'Ajuda') ?>
                                    class="infraImg" />
                                <input type="text" id="txtTextoPesquisa" name="txtTextoPesquisa"
                                    class="infraText form-control"
                                    tabindex="<?= PaginaSEI::getInstance()->getProxTabDados() ?>" />
                            </div>
                            <div class="row">
                                <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                                    <label id="lblTpProcesso" for="selTpProcesso" accesskey=""
                                        class="infraLabelOpcional">Documentos para montar a pesquisa:
                                    </label>
                                    <img align="top"
                                        src="<?= PaginaSEI::getInstance()->getDiretorioSvgGlobal() ?>/ajuda.svg"
                                        name="ajuda" <?= PaginaSEI::montarTitleTooltip('Escolha os documentos para montar a pesquisa. Caso selecione protocolo de Processo Anexados, todos os documentos dentro dele sero utilizados na montagem da pesquisa.

Ateno que esta funcionalidade NO tem por objetivo substituir a pesquisa tradicional do SEI. Esta pesquisa utiliza tcnicas de Inteligncia Artificial teis para pesquisar texto com recursos de similaridade e semntica, inclusive selecionando documentos para confrontar com documentos, sem escrever nenhum texto complementar para a pesquisa.', 'Ajuda') ?>
                                        class="infraImg" alt="cone de Ajuda" />
                                </div>
                            </div>
                            <div class="row mb-4">
                                <div class="col-sm-12 col-md-12 col-lg-12">
                                    <div class="input-group">
                                        <select id="selDocumento" name="selDocumento" size="8" multiple="multiple"
                                            class="infraSelect form-control"
                                            tabindex="<?= PaginaSEI::getInstance()->getProxTabDados() ?>">
                                        </select>

                                        <div id="_divOpcoesDocumentos" class="ml-1">
                                            <img id="imgLupaDocumento"
                                                onclick="objLupaDocumento.selecionar(700,500);"
                                                src="<?= PaginaSEI::getInstance()->getDiretorioSvgGlobal() . '/pesquisar.svg' ?>"
                                                alt="Selecionar Documento" title="Selecionar Documento"
                                                class="infraImg" />
                                            <br>
                                            <img id="imgExcluirTpProcesso" onclick="objLupaDocumento.remover();"
                                                src="<?= PaginaSEI::getInstance()->getDiretorioSvgGlobal() . '/remover.svg' ?>"
                                                alt="Remover Documento" title="Remover Documento"
                                                class="infraImg" />
                                        </div>
                                        <input type="hidden" id="hdnIdDocumento" name="hdnIdDocumento">
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-12 col-md-12 col-lg-6 col-xl-6">
                            <div class="form-group">
                                <label id="lblTiposDocumentos" for="txtTiposDocumentos" accesskey=""
                                    class="infraLabelObrigatorio">Tipos de Documentos Alvo a serem
                                    pesquisados:</label>
                                <img align="top"
                                    src="<?= PaginaSEI::getInstance()->getDiretorioSvgGlobal() ?>/ajuda.svg"
                                    name="ajuda" <?= PaginaSEI::montarTitleTooltip(' obrigatrio escolher pelo menos um tipo de documento alvo para a pesquisa.

Aqui so listados apenas tipos de documentos definidos pela Administrao do SEI, pois envolve pr processamento pela IA do contedo de todos os documentos desses tipos. Ainda, so indicados apenas tipos de documentos que decidem de forma relevante o resultado do mrito dos processos.', 'Ajuda') ?>
                                    class="infraImg" alt="cone de Ajuda" />
                                <br>
                                <?php
                                foreach ($arrObjMdIaAdmTpDocPesqDTO as $objMdIaAdmTpDocPesqDTO) { ?>
                                    <input type="checkbox"
                                        name="ckbTipoDocumento[]"
                                        id="ckb<?= $objMdIaAdmTpDocPesqDTO->getNumIdSerie() ?>"
                                        value="<?= $objMdIaAdmTpDocPesqDTO->getNumIdSerie() ?>"
                                        class="infraCheckbox">
                                    <label class="infraLabelChec infraLabelOpcional mr-3"
                                        for="ckb<?= $objMdIaAdmTpDocPesqDTO->getNumIdSerie() ?>"><?= $objMdIaAdmTpDocPesqDTO->getStrNomeSerie() ?></label>
                                    <br>
                                <?php
                                }
                                ?>
                            </div>
                            <input type="hidden" id="hdnIdProcedimento" name="hdnIdProcedimento"
                                value="<?= $idProcedimento ?>" />
                            <button type="button" accesskey="P" name="btnPesquisar" id="btnPesquisar" value="Pesquisar"
                                onclick="pesquisarDocumentos()" class="infraButton"><span
                                    class="infraTeclaAtalho">P</span>esquisar
                            </button>
                        </div>
                    </div>
                </fieldset>
                <br />
            </div>
        </div>
    <?
}
//PaginaSEI::getInstance()->montarAreaDebug();
PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandos);
    ?>
    </form>
    <?
    require_once "md_ia_recurso_cadastro_js.php";
    ?>
    <?php
    PaginaSEI::getInstance()->fecharBody();
    PaginaSEI::getInstance()->fecharHtml();
