<?php

class Documento extends CActiveRecord
{
	public $clase_search;
	public $tipo_search;
	public $proceso_search;	
	public $elaborar_search;
	public $revisar_search;
	public $aprobar_search;		
	public $publicado='Publicado';
	public $registrado='Registrado';
	public $enRev='En Revisión';
	public $enAp='En Aprobación';
	public $aprobado='Aprobado';
	public $porPublicar='Por Publicar';
	public $despublicado='Despublicado';

		

	public function tableName()
	{
		return 'documento';
	}
	
	public function rules()
	{		
		return array(
			array('doc_nombre, clase_codigo, uni_codigo, fis_codigo, tipo_codigo, doc_ruta, doc_estado, doc_fecha_publicacion', 'required'),
			//array('elaborar_codigo', 'validateUsuario'),
			array('clase_codigo, tipo_codigo, prc_codigo, uni_codigo, fis_codigo, elaborar_codigo, revisar_codigo, aprobar_codigo', 'numerical', 'integerOnly'=>true),
			array('doc_meta', 'length', 'max'=>50),
			array('doc_nombre, doc_ruta, doc_estado', 'length', 'max'=>100),
			array('doc_descripcion', 'length', 'max'=>600),
			array('elaborar_fecha_rp, elaborar_fecha_ap', 'safe'),

			array('elaborar_fecha_rp','compare','compareValue'=>date('Y-m-d'),'operator'=>'>='), //%Y-%m-%d
			array('elaborar_fecha_ap','compare','compareValue'=>date('Y-m-d'),'operator'=>'>='),
			//array('elaborar_fecha_ap','compare','compareValue'=>'elaborar_fecha_rp','operator'=>'>='),

			array('claseNombre.clase_codigo, clase_search, tipo_search, proceso_search, elaborar_search, revisar_search, aprobar_search, doc_codigo, doc_meta, doc_nombre, doc_descripcion, doc_ruta, doc_estado, doc_fecha_publicacion, elaborar_fecha_rp, elaborar_fecha_ap, clase_codigo, tipo_codigo, prc_codigo, uni_codigo, fis_codigo, elaborar_codigo, revisar_codigo, aprobar_codigo', 'safe', 'on'=>'search'),
		);
	}

	public function validateUsuario(){
		
	}
	
	public function relations()
	{		
		return array(
			'fisNombre' => array(self::BELONGS_TO, 'Fiscalia', 'fis_codigo'),
			'uniNombre' => array(self::BELONGS_TO, 'Unidad', 'uni_codigo'),

			'claseNombre' => array(self::BELONGS_TO, 'Clase', 'clase_codigo'),
			'tipoNombre' => array(self::BELONGS_TO, 'Tipo', 'tipo_codigo'),
			'procesoNombre' => array(self::BELONGS_TO, 'Proceso', 'prc_codigo'),

			'elaborarNombre' => array(self::BELONGS_TO, 'ElaborarDoc', 'elaborar_codigo'),
			'revisarNombre' => array(self::BELONGS_TO, 'RevisarDoc', 'revisar_codigo'),
			'aprobarNombre' => array(self::BELONGS_TO, 'AprobarDoc', 'aprobar_codigo'),
		);
	}

	public function onFileUploaded($fullFileName,$userdata){
		yii::app()->session['file_name']=$fullFileName;
	}

	public function attributeLabels()
	{
		return array(
			'doc_codigo' => 'Doc Codigo',
			'doc_meta' => 'Doc Meta',
			'doc_nombre' => 'Nombre Documento',
			'doc_descripcion' => 'Descripción',
			'doc_ruta' => 'Doc Ruta',
			'doc_estado' => 'Estado',
			'doc_fecha_publicacion' => 'Fecha de Registro',
			'elaborar_fecha_rp' => 'Plazo de Revisión',
			'elaborar_fecha_ap' => 'Plazo de Aprobación',
			'clase_codigo' => 'Clase',
			'tipo_codigo' => 'Tipo',
			'prc_codigo' => 'Proceso',
			'uni_codigo' => 'Unidad',
			'fis_codigo' => 'Fiscalía',
			'elaborar_codigo' => 'Responsable',
			'revisar_codigo' => 'Revisor',
			'aprobar_codigo' => 'Aprobador',

			'clase_search' => 'Clase',
			'tipo_search' => 'Tipo', 
			'proceso_search' => 'Proceso', 
			
			'elaborar_search' => 'Responsable',
			'revisar_search' => 'Revisor',
			'aprobar_search' => 'Aprobador',
		);
	}

	public function search()
	{
		$criteria=new CDbCriteria;			
		if($this->clase_search){
			$criteria->with = array( 'claseNombre' );
			$criteria->compare('claseNombre.clase_nombre',$this->clase_search, true);
		}
		if($this->tipo_search){
			$criteria->with = array( 'tipoNombre' );
			$criteria->compare('tipoNombre.tipo_nombre',$this->tipo_search, true);
		} 
		if($this->proceso_search){
			$criteria->with = array( 'procesoNombre' );			
			$criteria->compare('procesoNombre.prc_nombre',$this->proceso_search, true);
		}
		$criteria->compare('doc_estado',$this->publicado);
		$criteria->compare('doc_codigo',$this->doc_codigo);
		$criteria->compare('doc_meta',$this->doc_meta,true);
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);
		$criteria->compare('doc_ruta',$this->doc_ruta,true);
		$criteria->compare('doc_estado',$this->doc_estado,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);
		$criteria->compare('clase_codigo',$this->clase_codigo, true);
		$criteria->compare('tipo_codigo',$this->tipo_codigo, true);
		$criteria->compare('prc_codigo',$this->prc_codigo, true);
		$criteria->compare('uni_codigo',$this->uni_codigo);
		$criteria->compare('fis_codigo',$this->fis_codigo);
		$criteria->compare('elaborar_codigo',$this->elaborar_codigo);
		$criteria->compare('revisar_codigo',$this->revisar_codigo);
		$criteria->compare('aprobar_codigo',$this->aprobar_codigo);

		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'pagination'=>array('pageSize'=>6),
			'sort'=>array(
		        'attributes'=>array(
		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchWork()
	{
		$criteria=new CDbCriteria;	
		
		$criteria->with = array('revisarNombre', 'elaborarNombre', 'aprobarNombre');
   	    $criteria->together = true;

   	    if(Yii::app()->user->getState('nombre'))			
			$criteria->compare('elaborarNombre.fun_rut', Yii::app()->user->id);
			
		$criteria->compare('doc_codigo',$this->doc_codigo);
		$criteria->addCondition('doc_estado<>"Publicado"');
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		//$criteria->compare('doc_estado',$this->doc_estado,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);			
		$criteria->compare('revisarNombre.funcionario.fun_nombre',$this->revisar_search, true);
		$criteria->compare('aprobarNombre.funcionario.fun_nombre',$this->aprobar_search, true);	

		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchRev()
	{
		$criteria=new CDbCriteria;	
		
		$criteria->with = array('revisarNombre', 'elaborarNombre');
   	    $criteria->together = true;

   	    if(Yii::app()->user->getState('nombre'))			
			$criteria->compare('revisarNombre.fun_rut', Yii::app()->user->id);
			
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->enRev,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);			
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);			

		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchAp()
	{
		$criteria=new CDbCriteria;	
		
		$criteria->with = array('aprobarNombre', 'elaborarNombre', 'revisarNombre');
   	    $criteria->together = true;

   	    if(Yii::app()->user->getState('nombre'))			
			$criteria->compare('aprobarNombre.fun_rut', Yii::app()->user->id);
			
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->enAp,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);			
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);
		$criteria->compare('revisarNombre.funcionario.fun_nombre',$this->revisar_search, true);			

		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchGe()
	{
		$criteria=new CDbCriteria;		   
		$criteria->with = array('elaborarNombre', 'revisarNombre','aprobarNombre');
   	    $criteria->together = true;	
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->porPublicar,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);						
		$criteria->compare('revisarNombre.funcionario.fun_nombre',$this->revisar_search, true);
		$criteria->compare('aprobarNombre.funcionario.fun_nombre',$this->aprobar_search, true);
		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchRevTodas()
	{
		$criteria=new CDbCriteria;		   
		$criteria->with = array('elaborarNombre', 'revisarNombre');
   	    $criteria->together = true;	
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->enRev,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);						
		$criteria->compare('revisarNombre.funcionario.fun_nombre',$this->revisar_search, true);
		
		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchApTodas()
	{
		$criteria=new CDbCriteria;		   
		$criteria->with = array('elaborarNombre', 'aprobarNombre');
   	    $criteria->together = true;	
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->enAp,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);						
		$criteria->compare('aprobarNombre.funcionario.fun_nombre',$this->aprobar_search, true);
		
		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function searchDespublicado()
	{
		$criteria=new CDbCriteria;		   
		$criteria->with = array('elaborarNombre');
   	    $criteria->together = true;	
		$criteria->compare('doc_codigo',$this->doc_codigo);		
		$criteria->compare('doc_nombre',$this->doc_nombre,true);
		$criteria->compare('doc_descripcion',$this->doc_descripcion,true);		
		$criteria->compare('doc_estado',$this->despublicado,true);
		$criteria->compare('doc_fecha_publicacion',$this->doc_fecha_publicacion,true);
		$criteria->compare('elaborarNombre.funcionario.fun_nombre',$this->elaborar_search, true);						
		
		return new CActiveDataProvider($this, array( 
			'criteria'=>$criteria,
			'sort'=>array(
		        'attributes'=>array(

		        	'doc_nombre'=>array(
		                'asc'=>'doc_nombre ASC','desc'=>'doc_nombre DESC',
		            ),
		         ),
		    ),
		));
	}

	public function getDbConnection()
	{
		return Yii::app()->db_gd;
	}
	
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
}
