<?php

/**
 * This is the model class for table "sidcai_estatus".
 *
 * The followings are the available columns in table 'sidcai_estatus':
 * @property integer $esta_codigo_pk
 * @property string $esta_nombre
 * @property string $esta_habilitado
 * @property string $esta_descripcion
 *
 * The followings are the available model relations:
 * @property SidcaiBeneficiario[] $sidcaiBeneficiarios
 * @property SidcaiProyectobeneficiario[] $sidcaiProyectobeneficiarios
 * @property SidcaiDeclaracionActividad[] $sidcaiDeclaracionActividads
 * @property SidcaiAportante[] $sidcaiAportantes
 * @property SidcaiDeclaracioncti[] $sidcaiDeclaracionctis
 * @property SidcaiCitaaportante[] $sidcaiCitaaportantes
 * @property SidcaiCitabeneficiario[] $sidcaiCitabeneficiarios
 * @property SidcaiConsulta[] $sidcaiConsultas
 */
class SidcaiEstatus extends CActiveRecord{

	public $codigo; // Usado cuando se va a editar un Estatus, guardo el id del estatus.
	/**
	 * @return string the associated database table name
	 */
	public function tableName(){
		return 'sidcai_estatus';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules(){
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array(
				'esta_codigo_pk, esta_nombre, esta_descripcion', 
				'required',
				'message' => 'Este campo es requerido.'
			),
			array(
				'esta_codigo_pk, esta_nombre, esta_descripcion', 
				'filter',
				'filter' => 'trim'
			),
			array(
				'esta_codigo_pk', 
				'numerical', 
				'integerOnly' => true,
				'message' => 'Solo se permiten números'
			),
			array(
				'esta_nombre',
				'length',
				'min' => 4,
				'tooShort' => 'Mínimo 4 caracteres.',
				'max' => 45,
				'tooLong' => 'Máximo 45 caracteres.'
			),
			array(
				'esta_descripcion',
				'length',
				'min' => 4,
				'tooShort' => 'Mínimo 4 caracteres.',
				'max' => 250,
				'tooLong' => 'Máximo 250 caracteres.'
			),
			array(
				'esta_codigo_pk',
				'length',
				'max' => 4,
				'message' => 'Máximo 4 digitos.'
			),
			array(
				'esta_codigo_pk', 
				'unique', 
				'attributeName' => 'esta_codigo_pk',
				'className' => 'SidcaiEstatus',
				'message' => 'El código <b>{value}</b> ya se encuentra registrado.',
				'on' => 'agregar'
			),
			array(
				'esta_codigo_pk',
				'existeCodigoModificar',
				'on' => 'modificar'
			),
			array(
				'esta_habilitado, codigo', 
				'safe'
			),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations(){
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'sidcaiBeneficiarios' => array(self::HAS_MANY, 'SidcaiBeneficiario', 'esta_codigoestatus_fk'),
			'sidcaiProyectobeneficiarios' => array(self::HAS_MANY, 'SidcaiProyectobeneficiario', 'esta_codigoestatus_fk'),
			'sidcaiDeclaracionActividads' => array(self::HAS_MANY, 'SidcaiDeclaracionActividad', 'esta_codigo_fk'),
			'sidcaiAportantes' => array(self::HAS_MANY, 'SidcaiAportante', 'esta_codigoestatus_fk'),
			'sidcaiDeclaracionctis' => array(self::HAS_MANY, 'SidcaiDeclaracioncti', 'esta_codigo_fk'),
			'sidcaiCitaaportantes' => array(self::HAS_MANY, 'SidcaiCitaaportante', 'esta_codigo_fk'),
			'sidcaiCitabeneficiarios' => array(self::HAS_MANY, 'SidcaiCitabeneficiario', 'esta_codigo_fk'),
			'sidcaiConsultas' => array(self::HAS_MANY, 'SidcaiConsulta', 'esta_codigo_fk'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels(){
		return array(
			'esta_codigo_pk' => 'Código',
			'esta_nombre' => 'Nombre',
			'esta_descripcion' => 'Descripción',
			'esta_habilitado' => 'Habilitado',
		);
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return SidcaiEstatus the static model class
	 */
	public static function model($className=__CLASS__){
		return parent::model($className);
	}

	public static function getEstatus($desde, $hasta){
		$estatus = SidcaiEstatus::model()->findAll(
			array(
				'select' => 'esta_nombre, esta_codigo_pk',
				'condition' => 'esta_habilitado = :esta_habilitado AND esta_codigo_pk >= :desde AND esta_codigo_pk <= :hasta',
				'params' => array(':esta_habilitado' => true, ':desde' => $desde, ':hasta' => $hasta),
				'order' => 'esta_nombre'
			));
		return CHtml::listData($estatus, 'esta_codigo_pk', 'esta_nombre');
	}

	/* Si el código que está guardado en la Base de Datos es distinto al que se quiere editar que compruebe que no exista otro registro con el mismo nombre. */
	public function existeCodigoModificar(){
		$original = SidcaiEstatus::model()->find('esta_codigo_pk = :esta_codigo_pk', array(':esta_codigo_pk' =>$this->codigo));
		$nuevo = SidcaiEstatus::model()->find('esta_codigo_pk = :esta_codigo_pk', array(':esta_codigo_pk' =>$this->esta_codigo_pk));

		if($nuevo != null){
			if($nuevo->esta_codigo_pk != $original->esta_codigo_pk)
				$this->addError('esta_codigo_pk', "El código <b>". $this->esta_codigo_pk. '</b> ya se encuentra registrado.');
		}
	}
}
