<?php

/**
 * This is the model class for table "sidcai_representantelegal".
 *
 * The followings are the available columns in table 'sidcai_representantelegal':
 * @property integer $repr_codigo_pk
 * @property string $repr_nombres
 * @property string $repr_apellidos
 * @property integer $esta_codigo_fk
 * @property integer $muni_codigo_fk
 * @property integer $parr_codigo_fk
 * @property string $repr_direccion
 * @property string $repr_zonapostal
 * @property string $repr_telefono
 * @property string $repr_fax
 * @property string $repr_celular
 * @property string $repr_habilitado
 * @property string $repr_tipodocuemnto
 * @property string $repr_ciudad
 * @property string $repr_documento
 * @property string $repr_correoelectronico
 * @property integer $audit_usua
 * @property string $repr_celular2
 * @property string $repr_facebook
 * @property string $repr_twitter
 *
 * The followings are the available model relations:
 * @property SidcaiBeneficiario[] $sidcaiBeneficiarios
 * @property SidcaiEstado $estaCodigoFk
 * @property SidcaiParroquia $parrCodigoFk
 * @property SidcaiMunicipio $muniCodigoFk
 * @property SidcaiAportante[] $sidcaiAportantes
 */
class SidcaiRepresentantelegal extends CActiveRecord{
	public $repr_nacionalidad; //Solo se usa para poder guardar "V" o "E" en el documento del representante legal.
	/**
	 * @return string the associated database table name
	 */
	public function tableName(){
		return 'sidcai_representantelegal';
	}

	/**
	 * @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(
				'repr_tipodocuemnto, repr_nacionalidad, repr_documento, repr_nombres, repr_apellidos, repr_direccion, esta_codigo_fk, muni_codigo_fk, parr_codigo_fk, repr_correoelectronico, repr_ciudad, repr_telefono, repr_zonapostal', 
				'required',
				'message' => 'Este campo es requerido.',
			),
			array(
				'repr_tipodocuemnto, repr_nacionalidad, repr_documento, repr_nombres, repr_apellidos, repr_direccion, esta_codigo_fk, muni_codigo_fk, parr_codigo_fk, repr_correoelectronico, repr_ciudad, repr_telefono, repr_zonapostal', 
				'filter',
				'filter' => 'trim'
			),
			array(
				'repr_ciudad',
				'length', 
				'min' => 3,
				'tooShort' => 'Mínimo 3 caracteres.',
				'max' => 30,
				'tooLong' => 'Máximo 30 caracteres.'
			),
			array(
				'repr_nombres, repr_apellidos',
				'length', 
				'min' => 2,
				'tooShort' => 'Mínimo 2 caracteres.',
				'max' => 30,
				'tooLong' => 'Máximo 30 caracteres.'
			),
			array(
				'repr_direccion',
				'length', 
				'min' => 4,
				'tooShort' => 'Mínimo 4 caracteres.',
				'max' => 180,
				'tooLong' => 'Máximo 180 caracteres.'
			),
			array(
				'repr_zonapostal',
				'length', 
				'min' => 4,
				'tooShort' => 'Mínimo 4 digitos.',
				'max' => 4,
				'tooLong' => 'Máximo 4 digitos.'
			),
			array(
				'repr_correoelectronico',
				'length', 
				'min' => 4,
				'tooShort' => 'Mínimo 4 caracteres.'
			),
			array(
				'repr_documento',
				'length', 
				'min' => 8,
				'tooShort' => 'El número documento no es válido.'
			),
			array(
				'repr_telefono, repr_celular', 
				'length', 
				'min' => 11,
				'tooShort' => 'Número de teléfono incorrecto.',
				'max' => 11,
				'tooLong' => 'Número de teléfono incorrecto.'
			),
			array(
				'repr_correoelectronico', 
				'match', 
				'pattern' => '/^([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9-_.]+)([a-zA-Z0-9]+)(@GMAIL\.COM)?$/',
				'message' => 'Correo electrónico no válido.'
			),			
			array(
				'esta_codigo_fk, muni_codigo_fk, parr_codigo_fk, audit_usua, repr_telefono, repr_celular, repr_zonapostal', 
				'numerical', 
				'integerOnly' => true,
				'message' => 'Solo se permiten números.'
			),
			array(
				'repr_documento', 
				'match', 
				'pattern' => '/^([VE])?[0-9]{8}$/',
				'message' => 'El documento no es válido.'
			),
			// Válida que el tipo de documento sea solo "CP".
			array(
				'repr_tipodocuemnto', 
				'match', 
				'pattern' => '/^([CP]){1}$/',
				'message' => 'El Tipo de Documento es incorrecto.'
			),
			// Válida que la nacionalidad sea solo "VE".
			array(
				'repr_nacionalidad', 
				'match', 
				'pattern' => '/^([VE]){1}$/',
				'message' => 'La Nacionalidad es incorrecta.'
			),
			array(
				'repr_documento', 
				'existeDocumentoModificar',
				'on' => 'modificar'
			),
			array(
				'repr_fax, repr_celular, repr_habilitado, repr_celular2, repr_facebook, repr_twitter', 
				'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', 'repr_codigo_fk'),
			'estaCodigoFk' => array(self::BELONGS_TO, 'SidcaiEstado', 'esta_codigo_fk'),
			'parrCodigoFk' => array(self::BELONGS_TO, 'SidcaiParroquia', 'parr_codigo_fk'),
			'muniCodigoFk' => array(self::BELONGS_TO, 'SidcaiMunicipio', 'muni_codigo_fk'),
			'sidcaiAportantes' => array(self::HAS_MANY, 'SidcaiAportante', 'repr_codigo_fk'),
		);
	}

	/**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels(){
        return array(
            'repr_codigo_pk' 	=> 'Código',
            'repr_nombres' 		=> 'Nombres',
            'repr_apellidos' 	=> 'Apellidos',
            'esta_codigo_fk' 	=> 'Estado',
            'muni_codigo_fk' 	=> 'Municipio',
            'parr_codigo_fk' 	=> 'Parroquia',
            'repr_direccion' 	=> 'Dirección',
            'repr_zonapostal' 	=> 'Zona Postal',
            'repr_telefono' 	=> 'Telefóno 1',
            'repr_fax' 			=> 'Repr Fax',
            'repr_celular' 		=> 'Teléfono 2',
            'repr_habilitado' 	=> 'Habilitado',
            'repr_tipodocuemnto' => 'Tipo Documento',
            'repr_nacionalidad' => 'Nacionalidad',
            'repr_ciudad' 		=> 'Ciudad',
            'repr_documento' 	=> 'Documento de Identidad',
            'repr_correoelectronico' => 'Correo Electrónico',
            'audit_usua' 		=> 'Usuario Auditor',
            'repr_celular2' 	=> 'Repr Celular2',
            'repr_facebook' 	=> 'Repr Facebook',
            'repr_twitter' 		=> 'Repr Twitter',
        );
    }

	/**
	 * 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 SidcaiRepresentantelegal the static model class
	 */
	public static function model($className=__CLASS__){
		return parent::model($className);
	}

	/* Si el documento 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 documento. */
	public function existeDocumentoModificar(){
		$original = SidcaiRepresentantelegal::model()->findByPk($this->repr_codigo_pk);
		$nuevo = SidcaiRepresentantelegal::model()->find('repr_documento = :repr_documento', array(':repr_documento' => $this->repr_nacionalidad.$this->repr_documento ));

		if($nuevo != null){
			if($nuevo->repr_codigo_pk != $original->repr_codigo_pk)
				$this->addError('repr_documento', 'El documento <b>'.$this->repr_nacionalidad.$this->repr_documento. '</b> ya se encuentra registrado.');
		}
	}
}
