<?php

class RecuperarSenha extends GxActiveRecord {

    public $FUN_USUARIO;
    public $FUN_SENHA;
    public $FUN_CONFIRMACAO;

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

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

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

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

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

    public function rules() {
        return array(
            array('FUN_USUARIO', 'required', 'on' => 'solicitar'),
            array('REC_IDFUNCIONARIO, REC_TOKEN, REC_EXPIRES', 'required', 'on' => 'salvar'),
            array('FUN_USUARIO, FUN_SENHA, FUN_CONFIRMACAO', 'required', 'on' => 'alterar'),
            array('REC_IDFUNCIONARIO', 'numerical', 'integerOnly' => true),
            array('REC_TOKEN', 'length', 'max' => 50),
            array('FUN_SENHA', 'VerificaSenha', 'FUN_SENHA' => $this->FUN_SENHA),
            array('FUN_SENHA', 'ext.SPasswordValidator.SPasswordValidator', 'on' => 'alterar'),
            array('FUN_SENHA, FUN_CONFIRMACAO', 'length', 'max' => 20, 'min' => 6, 'message' => 'A senha deve possuir no mínimo 4 caracteres!'),
            array('FUN_SENHA', 'compare', 'compareAttribute' => 'FUN_CONFIRMACAO', 'message' => 'Senha e confirmação de senha não conferem!'),
        );
    }

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

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

    public function attributeLabels() {
        return array(
            'FUN_USUARIO'       => 'Usuário de acesso',
            'FUN_SENHA'         => 'Senha',
            'FUN_CONFIRMACAO'   => 'Confirmação de senha',
        );
    }

    public function VerificaSenha($attribute, $params) {
        $Funcionario = Funcionarios::model()->find('FUN_USUARIO =:user AND FUN_SITUACAO = "A"', array(':user' => $this->FUN_USUARIO));
        if($Funcionario) {
            $Senhas = Senhas::model()->findAll("PWD_IDFUNCIONARIO = '".$Funcionario->FUN_IDFUNCIONARIO."' and PWD_DATA >= '".date('Y-m-d', strtotime("-90 days"))."' and PWD_SENHA = '".md5($this->FUN_SENHA)."'");
            if (count($Senhas) != 0) {
                $this->addError($attribute, 'Você não pode utilizar uma senha já utilizada nos últimos 3 meses.');
            }
        }
    }

}
