<?php

class FechamentosNegociacoesAlteracoes extends GxActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function tableName()
    {
        return 'fechamentos_negociacoes_alteracoes';
    }

    public function behaviors()
    {
        return array('datetimeI18NBehavior' => array('class' => 'ext.DateTimeI18NBehavior'));
    }

    public function rules()
    {
        return array(
            array('FNA_IDNEGOCIACAO, FNA_CAMPO, FNA_AUTOR, FNA_DATA_ALTERACAO', 'required'),
            array('FNA_VALOR_ANTERIOR, FNA_VALOR_ATUALIZADO, FNA_IP, FNA_USER_AGENT', 'safe'),
        );
    }

    public function relations()
    {
        return array(
            'Autor'      => array(self::BELONGS_TO, 'Funcionarios', 'FNA_AUTOR'),
            'Negociacao' => array(self::BELONGS_TO, 'FechamentosNegociacoes', 'FNA_IDNEGOCIACAO'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'FNA_ID' => 'Código',
            'FNA_CAMPO' => 'Campo Alterado',
            'FNA_VALOR_ANTERIOR' => 'Valor Anterior',
            'FNA_VALOR_ATUALIZADO' => 'Valor Atualizado',
            'FNA_DATA_ALTERACAO' => 'Data da Alteração',
            'Autor' => 'Autor',
        );
    }

    public function search()
    {
        $criteria = new CDbCriteria;

        $criteria->compare('FNA_IDNEGOCIACAO', $this->FNA_IDNEGOCIACAO);

        $sort = new CSort;
        $sort->attributes = array(
            '*',
            'Autor' => array(
                'asc'=>'Autor.FUN_NOME',
                'desc'=>'Autor.FUN_NOME desc'
            ),
        );
        $sort->defaultOrder = 'FNA_ID DESC';

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'sort' => $sort,
            'pagination' => array(
                'pageSize' => 20,
            )
        ));
    }

    public function getCampo()
    {
        if (!empty($this->FNA_CAMPO)) {
            return FechamentosNegociacoes::model()->getAttributeLabel($this->FNA_CAMPO);
        }
        return "-";
    }

    public function getValor($campo, $valor)
    {
        $modelNegociacao = new FechamentosNegociacoes;
        if ($campo == "FEN_STATUS") {
            $retorno = $modelNegociacao->getStatus($valor);
        } else {
            $relations = $modelNegociacao->relations();
            $fields = CHtml::listData($relations, '2', '2');
            if (in_array($campo, $fields)) {
                $nomeModelBusca = false;
                foreach ($relations as $key => $relation) {
                    if ($relation[2] == $campo) {
                        $nomeModelBusca = $relation[1];
                        break;
                    }
                }

                $modelBusca = new $nomeModelBusca;
                $retorno = $modelBusca->findByPk($valor);
            } elseif (in_array($campo, ['FEN_VLRIMPLANTACAO', 'FEN_VLRNEGOCIADO', 'FEN_VLRDIFERENCA'])) {
                $retorno = Util::verMoeda($valor);
            } else {
                $retorno = $valor;
            }
        }

        return $retorno;
    }
}
