<?php

class DocumentoController extends Controller
{
	public $layout='//layouts/column2';

	public function filters()
	{
		return array(
			'accessControl', 
			'postOnly + delete', 
		);
	}

	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view', 'inicio','MostrarFiscalia','MostrarUnidad'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update','publicar','modificar','boton','ListarFuncionarios','Despublicar'),
				'users'=>array('*'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete','general', 'Download','enviarPublicar','enviarRevisar'),
				'users'=>array('*'),
			),
		);
	}

	function actionDownload($id){
		//$filecontent=file_get_contents('http://172.17.123.45/gestor_documental/tesis/'.$name);
		$model=$this->loadModel($id);
		$src=file_get_contents('http://localhost/sistemas/inicio/'.$model->doc_ruta);                
                
                       header("Content-Type: text/plain");
					   header("Content-disposition: attachment; filename=$model->doc_ruta");
					   header("Pragma: no-cache");						  
					   echo $src;
		  			   exit;              
	}



	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}
	public function actionListarFuncionarios($term) {
		$criteria = new CDbCriteria;
		$criteria->condition = "LOWER(fun_nombre) like LOWER(:term)";
		$criteria->params = array(':term'=> '%'.$_GET['term'].'%');
		$criteria->limit = 30;
		$data = Funcionario::model()->findAll($criteria);
		$arr = array();
		foreach ($data as $item) {
			$arr[] = array(
			'id' => $item->fun_rut,			
			'value' => $item->fun_nombre." ".$item->fun_ap_paterno." ".$item->fun_ap_materno,
			'label' => $item->fun_nombre." ".$item->fun_ap_paterno." ".$item->fun_ap_materno,
			);
		}
		echo CJSON::encode($arr);
	}
	
	public function actionPublicar()
	{
		$model=new Documento;
		$model_elaborar=new ElaborarDoc;	
		$model_revisar=new RevisarDoc;
		$model_aprobar=new AprobarDoc;	

		if(isset($_POST['Documento'], $_POST['RevisarDoc'], $_POST['AprobarDoc']))
		{
			$model->attributes=$_POST['Documento'];			
			$model_revisar->attributes=$_POST['RevisarDoc'];
			$model_aprobar->attributes=$_POST['AprobarDoc'];

			$model->doc_fecha_publicacion= new CDbExpression('NOW()');
			$model->doc_ruta=yii::app()->session['file_name'];	
			yii::app()->session['file_name']='';
			$model->doc_estado='Publicado';			
			$model_elaborar->fun_rut=Yii::app()->user->id;
			$model_elaborar->elaborar_estado='Publicado';	
			$model_elaborar->elaborar_fecha= new CDbExpression('NOW()');

			$model_revisar->revisar_estado='Publicado';
			$model_revisar->revisar_fecha= new CDbExpression('NOW()');			

			if($model_elaborar->save()){
				$model->elaborar_codigo=$model_elaborar->elaborar_codigo;

				if($model_revisar->save()){
					$model->revisar_codigo=$model_revisar->revisar_codigo;

					if($model_aprobar->save()){
						$model->aprobar_codigo=$model_aprobar->aprobar_codigo;

						if($model->tipo_codigo=='1' || $model->tipo_codigo=='2' || $model->tipo_codigo=='3' || $model->tipo_codigo=='4'){
							if($model->fis_codigo==8)
							$model->doc_meta='SGC-'.$model->uniNombre->uni_sigla.'-'.$model->tipoNombre->tipo_descripcion.'-01';
							elseif($model->fis_codigo!=8)
							$model->doc_meta='SGC-'.$model->fisNombre->fis_sigla.'-'.$model->tipoNombre->tipo_descripcion.'-01';	
						}
						else $model->doc_meta=' - ';

						if($model->save()){
							Yii::app()->user->setFlash('Registro con éxito', "El documento se registro con éxito, por favor realizar búsqueda avanzada para ver detalle.!");				
							$this->redirect(array('documento/inicio'));
						}
					}					
				}							
			}
				
			
		}

		$this->render('publicar',array(
			'model'=>$model, 'model_elaborar'=>$model_elaborar, 'model_revisar'=>$model_revisar, 'model_aprobar'=>$model_aprobar,
		));
	}

	public function actionCreate()
	{
		$model=new Documento;
		$model_elaborar=new ElaborarDoc;	
		$model_revisar=new RevisarDoc;
		$model_aprobar=new AprobarDoc;	

		if(isset($_POST['Documento'], $_POST['RevisarDoc'], $_POST['AprobarDoc']))
		{
			$model->attributes=$_POST['Documento'];			
			//$model_revisar->attributes=$_POST['RevisarDoc'];
			//$model_aprobar->attributes=$_POST['AprobarDoc'];

			$model->doc_fecha_publicacion= new CDbExpression('NOW()');
			$model->doc_ruta=yii::app()->session['file_name'];	
			yii::app()->session['file_name']='';			
			$model_elaborar->fun_rut=Yii::app()->user->id;
			$model_elaborar->elaborar_estado='En Revisión';	
			$model_elaborar->elaborar_fecha= new CDbExpression('NOW()');

			//$model_revisar->revisar_estado='En Revisión';
			//$model_revisar->revisar_fecha= new CDbExpression('NOW()');			

			if($model_elaborar->save()){
				$model->elaborar_codigo=$model_elaborar->elaborar_codigo;

				
				//	$model->revisar_codigo=$model_revisar->revisar_codigo;
					//if($model_aprobar->save()){
						//$model->aprobar_codigo=$model_aprobar->aprobar_codigo;

						if($model->tipo_codigo=='1' || $model->tipo_codigo=='2' || $model->tipo_codigo=='3' || $model->tipo_codigo=='4'){
							if($model->fis_codigo==8)
							$model->doc_meta='SGC-'.$model->uniNombre->uni_sigla.'-'.$model->tipoNombre->tipo_descripcion.'-01';
							elseif($model->fis_codigo!=8)
							$model->doc_meta='SGC-'.$model->fisNombre->fis_sigla.'-'.$model->tipoNombre->tipo_descripcion.'-01';	
						}
						else $model->doc_meta=' - ';

						if($model->validate()){

							$bandera=0;
							$array=array();

							foreach($_POST['RevisarDoc'] as $clave=>$valor) {
								if ($valor!=""){
									if(strrpos($clave,"fun_rut")!==false){
										$model_revisar->fun_rut=$valor;
									}
									if ($model_revisar->fun_rut!="" ){
										$model_revisar->revisar_estado='En Revisión';
										$model_revisar->revisar_fecha= new CDbExpression('NOW()');
										$model_revisar->doc_codigo=$model->doc_codigo;
										if ($model_revisar->save()){
											$array[$bandera]=$model_revisar->revisar_codigo;
											$model->revisar_codigo=$model_revisar->revisar_codigo;
											$model_revisar=new RevisarDoc;
											$bandera++;
											}
									}
								}
							}
						
							$array2=array();
							$flag=0;

							foreach($_POST['AprobarDoc'] as $clave=>$valor) {
								if ($valor!=""){
									if(strrpos($clave,"fun_rut")!==false){
										$model_aprobar->fun_rut=$valor;
									}
									if ($model_aprobar->fun_rut!="" ){
										$model_aprobar->aprobar_estado='En Revisión';
										$model_aprobar->aprobar_fecha= new CDbExpression('NOW()');
										$model_aprobar->doc_codigo=$model->doc_codigo;
										if ($model_aprobar->save()){
											$array2[$flag]=$model_aprobar->aprobar_codigo;
											$model->aprobar_codigo=$model_aprobar->aprobar_codigo;
											$model_aprobar=new AprobarDoc;
											$flag++;
											}
									}
								}
								
						  }

						 
						  if($flag==2 and $bandera==2){
								if($model->save()){
									for($i=0; $i<=2; $i++){
										echo $array[$i];
										echo $array2[$i];
										$dato=$array[$i];
										$dato2=$array2[$i];
										$nombreBD = "bd_gd";
										$servidor = "localhost";
										$usuario = "root";
										$idconexion = mysql_connect($servidor, $usuario);
										mysql_select_db($nombreBD,$idconexion);

										$Query="update revisar_doc set doc_codigo='$model->doc_codigo' where revisar_codigo='$dato'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());

										$Query="update aprobar_doc set doc_codigo='$model->doc_codigo' where aprobar_codigo='$dato2'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());
									}
								}
								if($model->doc_estado=="Publicado"){
									Yii::app()->user->setFlash('Registro con éxito', "Realizar búsqueda avanzada para visualizar documento creado");				
									$this->redirect(array('documento/inicio'));	
									}
									else {
									Yii::app()->user->setFlash('Registro con éxito', "El documento se registro con éxito, se visualizará en su bandeja de creados");				
									$this->redirect(array('documento/admin'));
									}
							}
						 elseif($flag==1 and $bandera==1){
								if($model->save()){
									for($i=0; $i<=2; $i++){
										echo $array[$i];
										echo $array2[$i];
										$dato=$array[$i];
										$dato2=$array2[$i];
										$nombreBD = "bd_gd";
										$servidor = "localhost";
										$usuario = "root";
										$idconexion = mysql_connect($servidor, $usuario);
										mysql_select_db($nombreBD,$idconexion);

										$Query="update revisar_doc set doc_codigo='$model->doc_codigo' where revisar_codigo='$dato'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());

										$Query="update aprobar_doc set doc_codigo='$model->doc_codigo' where aprobar_codigo='$dato2'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());
									}									
								}
								if($model->doc_estado=="Publicado"){
									Yii::app()->user->setFlash('Registro con éxito', "Realizar búsqueda avanzada para visualizar documento creado");				
									$this->redirect(array('documento/inicio'));	
									}
									else {
									Yii::app()->user->setFlash('Registro con éxito', "El documento se registro con éxito, se visualizará en su bandeja de creados");				
									$this->redirect(array('documento/admin'));
									}
							}
						elseif($flag==1 and $bandera==2){
								if($model->save()){
									for($i=0; $i<=2; $i++){
										echo $array[$i];
										echo $array2[$i];
										$dato=$array[$i];
										$dato2=$array2[$i];
										$nombreBD = "bd_gd";
										$servidor = "localhost";
										$usuario = "root";
										$idconexion = mysql_connect($servidor, $usuario);
										mysql_select_db($nombreBD,$idconexion);

										$Query="update revisar_doc set doc_codigo='$model->doc_codigo' where revisar_codigo='$dato'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());

										$Query="update aprobar_doc set doc_codigo='$model->doc_codigo' where aprobar_codigo='$dato2'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());
									}									
								}
								if($model->doc_estado=="Publicado"){
									Yii::app()->user->setFlash('Registro con éxito', "Realizar búsqueda avanzada para visualizar documento creado");				
									$this->redirect(array('documento/inicio'));	
									}
									else {
									Yii::app()->user->setFlash('Registro con éxito', "El documento se registro con éxito, se visualizará en su bandeja de creados");				
									$this->redirect(array('documento/admin'));
									}
							}

							elseif($flag==2 and $bandera==2){
								if($model->save()){
									for($i=0; $i<=2; $i++){
										echo $array[$i];
										echo $array2[$i];
										$dato=$array[$i];
										$dato2=$array2[$i];
										$nombreBD = "bd_gd";
										$servidor = "localhost";
										$usuario = "root";
										$idconexion = mysql_connect($servidor, $usuario);
										mysql_select_db($nombreBD,$idconexion);

										$Query="update revisar_doc set doc_codigo='$model->doc_codigo' where revisar_codigo='$dato'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());

										$Query="update aprobar_doc set doc_codigo='$model->doc_codigo' where aprobar_codigo='$dato2'";
										$idconsulta=mysql_query($Query, $idconexion)or die(mysql_error());
									}									
								}
								if($model->doc_estado=="Publicado"){
									Yii::app()->user->setFlash('Registro con éxito', "Realizar búsqueda avanzada para visualizar documento creado");				
									$this->redirect(array('documento/inicio'));	
									}
									else {
									Yii::app()->user->setFlash('Registro con éxito', "El documento se registro con éxito, se visualizará en su bandeja de creados");				
									$this->redirect(array('documento/admin'));
									}
							}


						}
					//}					
											
			}
				
			
		}

		$this->render('create',array(
			'model'=>$model, 'model_elaborar'=>$model_elaborar, 'model_revisar'=>$model_revisar, 'model_aprobar'=>$model_aprobar,
		));
	}

	public function actionUpdate($id)
	{		
		$model=new Documento;
		$model_elaborar=new ElaborarDoc;		
		$model=$this->loadModel($id);
		
		if(isset($_POST['Documento'], $_POST['ElaborarDoc']))
		{
			$model->attributes=$_POST['Documento'];
			$model_elaborar->attributes=$_POST['ElaborarDoc'];
			$model_elaborar->elaborar_codigo=$model->elaborar_codigo;
			$model_elaborar->setIsNewRecord(false);

			if($model->save() && $model_elaborar->save())
					$this->redirect(array('view','id'=>$model->doc_codigo));			
		}

		$this->render('update',array(
			'model'=>$model, 
			'model_elaborar'=>$model_elaborar,
		));
	}

	public function actionBoton($id)
	{		
		$model=new Documento;
		$model=$this->loadModel($id);
		$model->doc_estado='Publicado';
		if($model->save()){
				Yii::app()->user->setFlash('Mensaje:', "Documento Publicado con Éxito'!");
				$this->redirect(array('documento/general'));
			}
	}

	public function actionenviarPublicar($id)
	{		
		$model=new Documento;
		$model=$this->loadModel($id);
		
			//$model->attributes=$_POST['Documento'];		
			$model->doc_estado='Por Publicar';

			if($model->save())
					$this->redirect(array('documento/admin'));			
		
	}

	public function actionenviarRevisar($id)
	{		
		$model=new Documento;
		$model=$this->loadModel($id);		
			//$model->attributes=$_POST['Documento'];		
			$model->doc_estado='En Revision';

			if($model->save())
					$this->redirect(array('documento/admin'));			
		
	}

	public function actionDespublicar($id)
	{		
		$model=new Documento;
		$model=$this->loadModel($id);			
			$model->doc_estado='Despublicado';
			if($model->save()){
				Yii::app()->user->setFlash('Registro con éxito', "Para visualizar; Seleccionar tabs 'Despublicados'!");				
				$this->redirect(array('documento/general'));
			}					
	}

	public function actionModificar($id)
	{		
		$model=new Documento;
		$model=$this->loadModel($id);		
		
		if(isset($_POST['Documento'], $_POST['RevisarDoc'], $_POST['AprobarDoc']))
		{
			$model->attributes=$_POST['Documento'];		
		
			if($model->save())
					$this->redirect(array('documento/admin'));			
		}

		$this->render('modificar',array(
			'model'=>$model, 			
		));
	}

	public function actionDelete($id)
	{
		$this->loadModel($id)->delete();

		// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
		if(!isset($_GET['ajax']))
			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
	}

	public function actionIndex()
	{
		$model=Documento::model()->findAll();


		yii::app()->request->sendFile('miarchivo.xls', $this->renderPartial('excel',array(
			'model'=>$model,
			),true)
		);
	}

	public function actionAdmin()
	{
		if(!Yii::app()->user->isGuest)
		{
		$model=new Documento('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Documento']))
			$model->attributes=$_GET['Documento'];
		}
		else $this->redirect(array('site/index'));
		$this->render('admin',array(
			'model'=>$model,
		));
	}

	public function actionGeneral()
	{
		if(!Yii::app()->user->isGuest)
		{
		$model=new Documento('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Documento']))
			$model->attributes=$_GET['Documento'];
		}
		else $this->redirect(array('site/index'));
		$this->render('general',array(
			'model'=>$model,
		));
	}

	public function actionInicio()
	{
		if(!Yii::app()->user->isGuest)
		{
		$model=new Documento('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Documento']))
			$model->attributes=$_GET['Documento'];
		}
	else $this->redirect(array('site/index'));

		$this->render('inicio',array(
			'model'=>$model,
		));
	}

	public function loadModel($id)
	{
		$model=Documento::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}
	
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='documento-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}

	public function actionMostrarFiscalia (){
		$id_fis = $_POST['Documento']['fis_codigo'];
		$lista = Unidad::model()->findAll('fis_codigo = :id_fis', array(':id_fis'=>$id_fis));
		$lista = CHtml::listData($lista,'uni_codigo','uni_descripcion');

		echo CHtml::tag('option', array('value'=>''), 'Seleccione', true);

		foreach ($lista as $valor => $fis_descripcion){
			echo CHtml::tag('option',array('value'=>$valor),CHtml::encode($fis_descripcion), true);
		}
		 
	}
	//funcion para los combos dependientes de las unidades
	public function actionMostrarUnidad (){
		$id_uni = $_POST['Documento']['uni_codigo'];
		$lista = Proceso::model()->findAll('uni_codigo = :id_uni', array(':id_uni'=>$id_uni));
		$lista = CHtml::listData($lista,'prc_codigo','prc_nombre');

		echo CHtml::tag('option', array('value'=>''), 'Seleccione', true);

		foreach ($lista as $valor => $uni_descripcion){
			echo CHtml::tag('option',array('value'=>$valor),CHtml::encode($uni_descripcion), true);
		}
		 
	}


	/** * Compara dos fechas en formato Y-m-d 
	* @param String $fecha1 Fecha 1 
	* @param String $fecha2 Fecha 2 
	* @return Int * 0: Las fechas son iguales * 1: La fecha 1 es mayor * 2: La fecha 1 es menor **/ 
	public function compararFechas($fecha1, $fecha2){ 
		if($this->_getUnix($fecha1) == $this->_getUnix($fecha2)) return 0; 
		if($this->_getUnix($fecha1) > $this->_getUnix($fecha2)) return 1; 
		if($this->_getUnix($fecha1) < $this->_getUnix($fecha2)) return 2; 
		if($this->_getUnix($fecha1) >= $this->_getUnix($fecha2)) return 0; 
	}
	/** * Retorna una fecha en formato Unix **/ 
	private function _getUnix($fecha){ 
		//separamos los valores de la fecha 
		list($dia,$mes,$año) = explode('/',$fecha); 
		//redefinimos la variable $fecha y le almacenamos el valor unix 
		return $fecha = mktime(0,0,0,$mes,$dia,$año); 
	} 
}
