<?php

/**
 * This is the model class for table "funcionarios_situacao".
 *
 * The followings are the available columns in table 'funcionarios_situacao':
 * @property integer $FUS_ID
 * @property integer $FUS_IDFUNCIONARIO
 * @property integer $FUS_IDUSUARIO
 * @property string $FUS_SITUACAO
 * @property string $FUS_DATA
 * @property string $FUS_OBSERVACOES
 */
class FuncionariosSituacao extends GxActiveRecord
{
	public $FUS_ALTSITUACAO;

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

	public function beforeSave() {
		parent::beforeSave();

		$this->prepareSave();
		
		return true;
	}

	public function beforeValidate() {
		parent::beforeValidate();

		$this->prepareSave();
		
		return true;
	}

	public function prepareSave(){
		$this->FUS_IDUSUARIO = User::getId();
		$this->FUS_DATA = date('Y-m-d H:i:s');
		if(empty($this->FUS_SITUACAO)){
			$this->FUS_SITUACAO = $this->Funcionario->FUN_SITUACAO;
		}
	}

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

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

	public static function label($n = 1) {
		return Yii::t('app', 'Situações Funcionários', $n);
	}

	public static function representingColumn() {
		return 'FUS_DATA';
	}

	public function rules()
	{
		return array(
			array('FUS_IDFUNCIONARIO, FUS_IDUSUARIO, FUS_SITUACAO, FUS_DATA, FUS_OBSERVACOES', 'required'),
			array('FUS_IDFUNCIONARIO, FUS_IDUSUARIO', 'numerical', 'integerOnly'=>true),
			array('FUS_SITUACAO', 'length', 'max'=>1),
			array('FUS_OBSERVACOES, FUS_ALTSITUACAO', 'safe'),

			array('FUS_ID, FUS_IDFUNCIONARIO, FUS_IDUSUARIO, FUS_SITUACAO, FUS_DATA, FUS_OBSERVACOES', 'safe', 'on'=>'search'),
		);
	}

	public function relations()
	{
		return array(
			'Funcionario'     => array(self::BELONGS_TO, 'Funcionarios', 'FUS_IDFUNCIONARIO'),
			'Autor'     => array(self::BELONGS_TO, 'Funcionarios', 'FUS_IDUSUARIO'),
		);
	}

	public function attributeLabels()
	{
		return array(
			'FUS_ID' => 'Código',
			'FUS_IDFUNCIONARIO' => 'Funcionário',
			'FUS_IDUSUARIO' => 'Autor',
			'FUS_SITUACAO' => 'Situação',
			'FUS_DATA' => 'Data',
			'FUS_OBSERVACOES' => 'Observações',
			'FUS_ALTSITUACAO' => 'Alterar Situação?',
		);
	}

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

		$criteria->compare('FUS_ID',$this->FUS_ID);
		$criteria->compare('FUS_IDFUNCIONARIO',$this->FUS_IDFUNCIONARIO);
		$criteria->compare('FUS_IDUSUARIO',$this->FUS_IDUSUARIO);
		$criteria->compare('FUS_SITUACAO',$this->FUS_SITUACAO,true);
		$criteria->compare('FUS_DATA',$this->FUS_DATA,true);
		$criteria->compare('FUS_OBSERVACOES',$this->FUS_OBSERVACOES,true);

		$criteria->with = array(
            'Autor' => array('joinType' => 'LEFT JOIN', 'together' => true, 'select' => false),
        );

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

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