<?php
/**
 * Copyright 2005-2017 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.
 * 
 * 
 * Schedule task form
 *
 *
 *
 *
 *
 **/

class FrmScheduleTask extends GForm
{
    function __construct()
    {
        $this->MIOLO = MIOLO::getInstance();
        $this->module  = MIOLO::getCurrentModule();
        
        $this->setAllFunctions('ScheduleTask', array('scheduleTaskId', 'taskId', 'scheduleCycleId', 'parametersS'), array('scheduleTaskId', 'scheduleCycleId', 'taskId', 'parameters'), array('scheduleTaskId', 'taskId', 'scheduleCycleId', 'parameters'));
        parent::__construct();
    }


    public function mainFields()
    {
    	$content = _M('Valor: valores separados por', $this->module). ' ";"<br>'.
                   _M('Parâmetros: separados por', $this->module).' "|" <br>'.
                   _M('Unidades de biblioteca: separadas por', $this->module).' ","';
        $fields[] = new MDiv('divHelp', $content, 'reportDescription');
        
    	if ( $this->function != 'insert' )
    	{
            $scheduleTaskId = new MTextField('scheduleTaskId', $this->holidayId->value, _M('Agendar tarefa',$this->module), FIELD_ID_SIZE);
            $scheduleTaskId->setReadOnly(true);
            $fields[] = $scheduleTaskId;
    	}
    	$busTask = $this->MIOLO->getBusiness($this->module, 'BusTask');
    	$fields[] = $taskId = new GSelection('taskId', '', _M('Tarefa',$this->module), $busTask->listTask());
        $taskId->addAttribute('onchange', GUtil::getAjax('changeTaskInformation'));
        $validators[]   = new MRequiredValidator('taskId');

    	$fields[] = $cycle = new GSelection('scheduleCycleId', '', _M('Ciclo do agendamento',$this->module), $this->business->listScheduleCycles());
        $cycle->addAttribute('onchange', GUtil::getAjax('changeCycleInformation'));
        $validators[]   = new MRequiredValidator('scheduleCycleId');

    	$descriptionLabel = new MLabel(_M('Descrição:'), $this->module);
    	$descriptionLabel->setWidth(FIELD_LABEL_SIZE);
    	$hintLabel = new MDiv('divHintDescription');
    	$fields[] = new GContainer('cont1', array($descriptionLabel, new MTextField('description', '', '', FIELD_DESCRIPTION_SIZE), $hintLabel));
        $validators[]   = new MRequiredValidator('description');

    	$valueLabel = new MLabel(_M('Valor:', $this->module));
    	$valueLabel->setWidth(FIELD_LABEL_SIZE);
    	$hintValue = new MDiv('divHintValue');
    	$fields[] = new GContainer( 'cont2', array($valueLabel, new MTextField('cycleValue', '', '', FIELD_DESCRIPTION_SIZE), $hintValue));
        $validators[]   = new MRequiredValidator('cycleValue');

    	$lbl = new MLabel(_M('Está ativo', $this->module) . ':');
        $lbl->setWidth(FIELD_LABEL_SIZE);
        $isEnable = new MRadioButtonGroup('enable', null, GUtil::listYesNo(1), DB_TRUE, null, MFormControl::LAYOUT_HORIZONTAL);
        $fields[] = new GContainer('hctIsEnable', array($lbl, $isEnable));

    	$parametesrLabel = new MLabel(_M('Parâmetros:', $this->module));
    	$parametesrLabel->setWidth(FIELD_LABEL_SIZE);
    	$hintParameters = new MDiv('divHintParameters');
    	$fields[] = new GContainer('cont3', array($parametesrLabel, new MTextField('_parameters', '', '', FIELD_DESCRIPTION_SIZE), $hintParameters));

        $this->setFields($fields);
        $this->setValidators($validators);

        //preenche os labels de ajuda
        $this->page->onload( GUtil::getAjax('changeTaskInformation') );
        $this->page->onload( GUtil::getAjax('changeCycleInformation') );
    }


    /**
     * Method called by ajax for alter task information
     *
     * @param (object) $args
     */
    public function changeTaskInformation( $args )
    {
    	$busTask = $this->MIOLO->getBusiness($this->module, 'BusTask');
    	$task = $busTask->getTask($args->taskId);
    	if ( $task )
    	{
    	   if (!$args->scheduleTaskId)
    	   {
    	       $this->page->onload("dojo.byId('description').value = '{$task->description}';");
    	   }
    	   $labelParam = new MLabel($task->parameters);
    	   $this->setResponse($labelParam, 'divHintParameters');
    	}
    	else
    	{
            $this->setResponse('', 'limbo');
    	}
    }


    /**
     * Method called by ajax for alter schedule cycle information
     *
     * @param (object) $args
     */
    public function changeCycleInformation( $args )
    {
    	if ( is_string($value = $this->business->listValuetypeForScheduleCycles($args->scheduleCycleId)) )
    	{
	    	$labelValue = new MLabel($this->business->listValuetypeForScheduleCycles($args->scheduleCycleId));
    	}
    	else
    	{
    		$labelValue = '';
    	}
    	$this->setResponse($labelValue, 'divHintValue');
    }
   
    public function getData ()
    {
        $data = parent::getData();
        $data->parameters = $data->_parameters;

        return $data;
    }

    public function loadFields()
    {
        parent::loadFields();
        $this->business->_parameters = $this->business->parameters;
        $this->setData($this->business);
    }

    public function tbBtnSave_click($sender=NULL)
    {
        $data = $this->getData();
        //Obtem parameters e seta na sessao para poder fazer a acao de busca apos editar o material.
        $_REQUEST['parameters'] = $data->_parameters;
        parent::tbBtnSave_click($sender, $data, $errors);
    }    
}
?>
