<?php

/**
 * This is the model base class for the table "atas".
 * DO NOT MODIFY THIS FILE! It is automatically generated by giix.
 * If any changes are necessary, you must set or override the required
 * property or method in class "Atas".
 *
 * Columns in table "atas" available as properties of the model,
 * followed by relations of table "atas" available as properties of the model.
 *
 * @property integer $ATA_IDATA
 * @property string $ATA_DATA
 * @property string $ATA_ASSUNTO
 * @property string $ATA_CONTEUDO
 * @property integer $ATA_IDFUNCIONARIO
 * @property string $ATA_DATAPROXIMAREUNIAO
 * @property string $ATA_HORARIO
 *
 * @property AtasFuncionarios[] $Participantes
 */
class Atas extends GxActiveRecord {

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

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

    public static function label($n = 1) {
        return Yii::t('app', 'Ata|Atas', $n);
    }

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

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

    public function rules() {
        return array(
            array('ATA_ASSUNTO, ATA_CONTEUDO, ATA_IDFUNCIONARIO, Participantes', 'required'),
            array('ATA_DATA', 'validaData'),
            array('ATA_IDFUNCIONARIO', 'numerical', 'integerOnly' => true),
            array('ATA_ASSUNTO', 'length', 'max' => 255),
            array('ATA_DATAPROXIMAREUNIAO', 'length', 'max' => 10),
            array('ATA_DATAPROXIMAREUNIAO', 'validataDataProximaReuniao'),
            array('ATA_HORARIO', 'length', 'max' => 5),
            array('ATA_IDATA, ATA_DATA, ATA_ASSUNTO, ATA_CONTEUDO, ATA_IDFUNCIONARIO, ATA_DATAPROXIMAREUNIAO, ATA_HORARIO', 'safe', 'on' => 'search'),
        );
    }

    public function relations() {
        return array(
            'Participantes' => array(self::HAS_MANY, 'AtasFuncionarios', 'ATA_REL_IDATA'),
            'Usuario'       => array(self::BELONGS_TO, 'Funcionarios', 'ATA_IDFUNCIONARIO'),
        );
    }

    public function pivotModels() {
        return array(
        );
    }

    public function attributeLabels() {
        return array(
            'ATA_IDATA'              => 'Código',
            'ATA_DATA'               => 'Data',
            'ATA_ASSUNTO'            => 'Assunto',
            'ATA_CONTEUDO'           => 'Conteúdo',
            'ATA_IDFUNCIONARIO'      => 'Autor',
            'ATA_DATAPROXIMAREUNIAO' => 'Próxima reunião',
            'ATA_HORARIO'            => 'Horário',
            'Usuario'                => 'Autor',
            'Participantes'          => 'Participantes',
        );
    }

    public function validaData($attribute, $params)
    {
        if (!empty($this->{$attribute})) {
            $dataInformada = Util::formatDataMysql($this->{$attribute});
            if ($dataInformada > date('Y-m-d')) {
                $this->addError($attribute, 'Data deve ser menor ou igual a "' . date('d/m/Y') . '".');
                return false;
            }

            return true;
        } else {
            $this->addError($attribute, "{$this->getAttributeLabel($attribute)} não pode ser vazio!");
            return false;
        }
    }

    public function validataDataProximaReuniao($attribute, $params)
    {
        if (!empty($this->{$attribute})) {
            $dataInformada = Util::formatDataMysql($this->{$attribute});
            if ($dataInformada < date('Y-m-d')) {
                $this->addError($attribute, 'Data deve ser maior ou igual a "' . date('d/m/Y') . '".');
                return false;
            }

            return true;
        }
        return true;
    }

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

        $criteria->join = "STRAIGHT_JOIN atas_funcionarios ON atas_funcionarios.ATA_REL_IDATA = t.ATA_IDATA";
        $criteria->group = "t.ATA_IDATA";

        $criteria->addCondition("(
            atas_funcionarios.ATA_REL_IDFUNCIONARIO = '" . User::getId() . "' or
            t.ATA_IDFUNCIONARIO = '" . User::getId() . "'
        )");

        $criteria->compare('t.ATA_IDATA', $this->ATA_IDATA);
        $criteria->compare('t.ATA_DATA', $this->ATA_DATA, true);
        $criteria->compare('t.ATA_ASSUNTO', $this->ATA_ASSUNTO, true);
        $criteria->compare('t.ATA_CONTEUDO', $this->ATA_CONTEUDO, true);
        $criteria->compare('t.ATA_IDFUNCIONARIO', $this->ATA_IDFUNCIONARIO);
        $criteria->compare('t.ATA_DATAPROXIMAREUNIAO', $this->ATA_DATAPROXIMAREUNIAO, true);
        $criteria->compare('t.ATA_HORARIO', $this->ATA_HORARIO, true);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'sort' => array(
                'defaultOrder' => 't.ATA_DATA DESC, t.ATA_IDATA DESC',
            ),
            'pagination' => array(
                'pageSize' => 20,
            )
        ));
    }

    public function isAllowed($email = true) {
        $count = AtasFuncionarios::model()->count("ATA_REL_IDATA = " . $this->ATA_IDATA . ' AND ATA_REL_IDFUNCIONARIO = '. User::getId());
        if($count == 0 && $this->ATA_IDFUNCIONARIO != User::getId()) {
            if($email) {
                Util::AcessoIndevido();
            }
            return false;
        }
        return true;
    }

}