<?php

/**
 * Copyright 2005-2024 de Solis Soluções Livres Ltda.
 *
 * Este arquivo é parte do programa Gnuteca.
 *
 * O Gnuteca é um software de propriedade da SOLIS, sendo desenvolvido
 * e mantido exclusivamente por esta empresa.
 *
 * A licença de uso está disponível mediante aquisição exclusiva junto à
 * SOLIS. A licença é concedida sem caráter de exclusividade ao licenciado.
 * Os direitos de uso são perpétuos.
 *
 * Embora os códigos fontes sejam fornecidos, o software é de propriedade
 * da SOLIS, não sendo permitido ao adquirente da licença a sua revenda,
 * empréstimo ou cessão (onerosa ou não) à terceiros. Também não é permitido,
 * a qualquer título e tempo, promover no software qualquer tipo de alienação,
 * reprodução, distribuição, divulgação, registro, licenciamento, transferência
 * ou qualquer outro ato que prejudique ou comprometa os direitos de propriedade
 * de software, o nome e a imagem da sua proprietária e do próprio software,
 * além de configurar concorrência à SOLIS.
 *
 * O licenciado, com o acesso ao código fonte do software, terá o direito de
 * promover mudanças no respectivo código. No entanto, nas situações em que ele
 * contar com o suporte oficial prestado pela SOLIS, não poderá promover mudanças
 * no código fonte, sob pena de perda do referido suporte.
 *
 * Para conhecer em detalhes o Termo de Licenciamento do Software Gnuteca
 * leia o arquivo “LICENCA.txt” disponível junto ao código deste software.
 * 
 * 
 *
 *
 *
 *
 *
 *
 * */
//controlador de eventos
$possibleEvents = array('popupAvaliacaoUnivates', 'concluirAvaliacao');
$event = GUtil::getAjaxFunction();

if ( in_array($event, $possibleEvents) )
{
    try
    {
        GAvaliacaoInstitucionalUnivates::$event();
    }
    catch ( Exception $e )
    {
        GForm::error($e->getMessage());
    }
}

class GAvaliacaoInstitucionalUnivates extends MDiv
{
    public function __construct($formulario, $indice, $questao1, $questao2)
    {
        $MIOLO = MIOLO::getInstance();
        parent::__construct('');

        $args = array();
        $args['formulario'] = $formulario;
        $args['indice'] = $indice;
        $args['questao1'] = $questao1;
        $args['questao2'] = $questao2;

        $MIOLO->page->onload(GUtil::getAjax('popupAvaliacaoUnivates', $args));
    } 
    
    /**
     * Renderiza o popup com formulário para preenchimento.
     */
    public static function popupAvaliacaoUnivates()
	{
        $args = GUtil::getAjaxEventArgs();

        $args = GUtil::decodeJsArgs($args);
        $MIOLO = MIOLO::getInstance();

        $MIOLO->page->addJsCode("
        function updateSliderValue(value) {
            document.getElementById('slider-value').value = value;
        }");

		$module = MIOLO::getCurrentModule();

        $buttonsContainer =  new MDiv('buttonsContainer');

        $buttons = array();
        $buttons['concluido'] = new MButton('btnConcluido', _M("Concluído"), ':concluirAvaliacao');
        $buttons['close'] = GForm::getCloseButton();
        $buttonsContainer->setInner($buttons);

        $content = '<div class="form-container">
            <form id="satisfaction-form">
                <label for="satisfaction-slider">Em uma escala de 0 a 10, qual é o seu nível de satisfação com este serviço digital?</label>
                <div class="slider-container">
                    <input type="range" id="satisfaction-slider" min="0" max="10" value="0" oninput="updateSliderValue(this.value)">
                    <input type="number" name = "questao1" id="slider-value" min="0" max="10" value="0" readonly>
                    <input type="text" value = "' . $args->indice .'" name= "indice" id="indice"readonly>
                    <input type="text" value = "' . $args->formulario .'" name= "refFormulario" id="refFormulario"readonly>
                    <input type="text" value = "' . $args->questao1 .'" name= "idQuestao1" id="idQuestao1"readonly>
                    <input type="text" value = "' . $args->questao2 .'" name= "idQuestao2" id="idQuestao2"readonly>
                </div>
                <label for="feedback">Você possui alguma consideração, reclamação ou elogio?</label>
                <textarea id="questao2" name = "questao2" rows="4" placeholder=""></textarea>
            
        </div>';

		$panelFields[]  = new MDiv('content', $content );
		$panelFields[]  = $buttonsContainer;

        //cria um formulário, uma caixa pro conteúdo
        $tit = is_string($form) ? $form : _M('Sobre a Plataforma Univates', $module);
        $title = new MSpan( 'popupTitle', $tit);
        $title->addAttribute('alt',  trim(strip_tags( $tit ) ) );
        $title->addAttribute('title', trim(strip_tags( $tit ) ) ) ;
        
        $panel = new MForm( $title );
        $panel->id = 'injectContent';
        $panel->setShowPostButton(false);
        $panel->setFields($panelFields, false);
        $panel->addStyle('width', '460px');

        $divPromptUp= new Div('divPromptUp', $panel);
        $divPromptUp->setClass('popupAvaliacao');
		
		$MIOLO->ajax->setResponse( array( new MDiv('divPromptDown') , $divPromptUp), GForm::GDIV );
	}

    /**
     * Envia/concluí a avaliação institucional
     */
    public static function concluirAvaliacao()
    {
        $data = (object) $_REQUEST;
        $MIOLO = MIOLO::getInstance();

        $MIOLO->getClass('gnuteca3', 'GAvaliacaoInstitucionalUnivatesService');
        $service = new GAvaliacaoInstitucionalUnivatesService(BusinessGnuteca3BusAuthenticate::getUserCode());

        // Salva as respostas do formulário na avaliação institucional.
        $concluiu = $service->concluirAvaliacao($data);

        if ( $concluiu )
        {
            GPrompt::information(_M('Avaliação concluída com sucesso!'), 'javascript:gnuteca.closeAction();');
        }
        else
        {
            GPrompt::error(_M('Ocorreu um erro ao salvar a avaliação!'));
        }

        $MIOLO->ajax->setResponse(null, 'limbo');
    }
}

?>
