<?php
/**
 * Copyright 2005-2023 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.
 * 
 * 
 * Domain form
 *
 *
 *
 *
 *
 **/
$MIOLO->getClass('gnuteca3', 'azure/GAzure');

class FrmAzure extends GForm
{
    public function __construct()
    {
        $this->MIOLO = MIOLO::getInstance();
        $this->module = MIOLO::getCurrentModule();
    	$this->setAllFunctions('Azure', null, array('AZURE_ID_APLICATIVO'), 'AZURE_ID_APLICATIVO');
        $this->setTransaction('gtcAzure');
        parent::__construct(_M('Azure'));
    }
    
    public function mainFields()
    {
        $bearerToken = strlen(AZURE_BEARER_TOKEN) > 0 ? AZURE_BEARER_TOKEN : null;
        $refreshToken = strlen(AZURE_REFRESH_TOKEN) > 0 ? AZURE_REFRESH_TOKEN : null;

        if ( MIOLO::_REQUEST('code') )
        {
            $azure = new GAzure();
            $urlRedirect = html_entity_decode($this->MIOLO->getActionURL('gnuteca3', 'azureConfig'));
            $tokens = $azure->getDataAndTokens(MIOLO::_REQUEST('code'), $urlRedirect);

            $bearerToken = $tokens->access_token;
            $refreshToken = $tokens->refresh_token;
        }

        $fields[]       = new MTextField('AZURE_ID_APLICATIVO', AZURE_ID_APLICATIVO, _M('ID do aplicativo',$this->module), FIELD_DESCRIPTION_SIZE);
        $fields[]       = new MTextField('AZURE_ID_DIRETORIO', AZURE_ID_DIRETORIO, _M('ID do diretório/locatário',$this->module), FIELD_DESCRIPTION_SIZE);
        $fields[]       = new MTextField('AZURE_SECRET', AZURE_SECRET, _M('Secret',$this->module), FIELD_DESCRIPTION_SIZE);

        $fields[] = new MButton('btnConfigureTokens',_M('Configurar tokens', $this->module), ':configurarTokens' );

        $fields[]       = new MTextField('AZURE_BEARER_TOKEN', $bearerToken, _M('Bearer Token',$this->module), FIELD_DESCRIPTION_SIZE, null, null, false);
        $fields[]       = new MTextField('AZURE_REFRESH_TOKEN', $refreshToken, _M('Refresh Token',$this->module), FIELD_DESCRIPTION_SIZE, null, null, false);

        $validators[]   = new MRequiredValidator('AZURE_ID_APLICATIVO');
        $validators[]   = new MRequiredValidator('AZURE_ID_DIRETORIO');
        $validators[]   = new MRequiredValidator('AZURE_SECRET');
        
        $this->setFields($fields);
        $this->setValidators($validators);
    }

    public function configurarTokens( $args )
    {
        $MIOLO = MIOLO::getInstance();

        // Atualiza ID do aplicativo
        GAzure::saveIDAplicativo($args->AZURE_ID_APLICATIVO);
        
        // Atualiza ID do diretório
        GAzure::saveIDDiretorio($args->AZURE_ID_DIRETORIO);
        
        // Atualiza secret
        GAzure::saveSecret($args->AZURE_SECRET);

        $azure = new GAzure();
        $url = $azure->obterURLConfig();

        $MIOLO->page->onload("location.href='{$url}'");
        $MIOLO->ajax->setResponse(null , 'limbo');
    }

    public function tbBtnSave_click($args)
	{
        $data = $this->getData();

        $MIOLO = MIOLO::getInstance();

        // Salva as informações dos campos.
        GAzure::saveIDAplicativo($data->AZURE_ID_APLICATIVO);
        GAzure::saveIDDiretorio($data->AZURE_ID_DIRETORIO);
        GAzure::saveSecret($data->AZURE_SECRET);
        GAzure::saveBearerToken($data->AZURE_BEARER_TOKEN);
        GAzure::saveRefreshToken($data->AZURE_REFRESH_TOKEN);

        $this->information( _M('Configurações da Azure inseridas com sucesso!','gnuteca3' ) );
    }
}
?>
