<?php

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

	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view','Publicar','pdf'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update','misminutas','buscador','Insert'),
				'users'=>array('*'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete','ListarFuncionarios','Asistentes'),
				'users'=>array('*'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	public function actionPdf($id)
         { 
            $model=$this->loadModel($id);
            $model_asistente= Asistente::model()->findByAttributes(array('min_codigo'=>$id));
            $mPDF1 = Yii::app()->ePdf->mpdf('utf-8','A4','','',15,15,35,25,9,9,'P');
            $mPDF1->useOnlyCoreFonts = true;
            $mPDF1->SetTitle("Minuta");
            $mPDF1->SetAuthor("");
            $mPDF1->watermark_font = 'DejaVuSansCondensed';
            $mPDF1->watermarkTextAlpha = 0.1;
            $mPDF1->SetDisplayMode('fullpage');
            $mPDF1->WriteHTML($this->renderPartial('pdf',array(
                    'model'=>$this->loadModel($id),
                    'model_asistente'=>$model_asistente,
                ),true));
            $mPDF1->Output('Reporte_'.date('YmdHis'),'I');
            exit;
         }

	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	public function actionPublicar($id)
	{		
		$model=new Minuta;
		$model_compromiso=new Compromiso;
		$model=$this->loadModel($id);

			$model->min_estado='Publicado';
			$model->min_fecha_cierra= new CDbExpression('NOW()');
			date_default_timezone_set("America/Santiago");
			$model->min_hora_fin=date("H:i:s");
			if($model->save())
					$this->redirect(array('minuta/misminutas'));
	}

	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 actionAsistentes (){
		$id_grupo = $_POST['Grupo']['grupo_codigo'];
		$lista = AsisGrupo::model()->findAll('grupo_codigo = :id_grupo', array(':id_grupo'=>$id_grupo));
		$lista = CHtml::listData($lista,'ag_codigo','fun_rut');
				
		echo CHtml::tag('label', array('value'=>''), 'Seleccionar Funcionarios', true);
		foreach ($lista as $valor => $fun_rut){
			
			$asis = Funcionario::model()->findByAttributes(array('fun_rut'=>$fun_rut));
			$nombres=$asis->fun_nombre.' '.$asis->fun_ap_paterno.' '.$asis->fun_ap_materno;
			//var_dump($nombres);			
			echo CHtml::tag('input',array('id'=>'ytAsisGrupo_fun_'.$fun_rut, 'name'=>'AsisGrupo[fun_rut_'.$fun_rut.']', 'value'=>$fun_rut, 'type'=>'checkbox'), CHtml::encode($nombres)."<br>", true);
						
		}		 
	}

	public function actionCreate()
	{
		if(!Yii::app()->user->isGuest){
		$model=new Minuta;
		$model_agenda=new Agenda;
		$model_acuerdo=new Acuerdo;		
		$model_compromiso=new Compromiso;
		$model_revision=new Revision;
		$model_asistente= new Asistente;		
		$modelFun= Funcionario::model()->findByAttributes(array('fun_rut'=>Yii::app()->user->id));		
		$modelFunFis= FuncionarioFiscalia::model()->findByAttributes(array('fun_rut'=>Yii::app()->user->id));
		$modelFis= Fiscalia::model()->findByAttributes(array('fis_codigo'=>$modelFunFis->fis_codigo));
		$model->fun_rut=Yii::app()->user->id;
		$Grupo=new Grupo;
		$AsisGrupo=new AsisGrupo;
		$model_invitado=new Invitado;

		$this->render('create',array(
			'model'=>$model,
			'model_agenda'=>$model_agenda,
			'model_acuerdo'=>$model_acuerdo,			
			'model_compromiso'=>$model_compromiso,
			'model_revision'=>$model_revision,
			'model_asistente'=>$model_asistente,			
			'modelFis'=>$modelFis,
			'Grupo'=>$Grupo,
			'AsisGrupo'=>$AsisGrupo,
			'model_invitado'=>$model_invitado,
		));
		}
		 else $this->redirect(array('site/index'));
		
	}

	public function actionInsert(){
		$bandera=false;
		$model=new Minuta;
		$model_agenda=new Agenda;
		$model_acuerdo=new Acuerdo;		
		$model_compromiso=new Compromiso;
		$model_revision=new Revision;
		$model_asistente= new Asistente;		
		$modelFun= Funcionario::model()->findByAttributes(array('fun_rut'=>Yii::app()->user->id));		
		$modelFunFis= FuncionarioFiscalia::model()->findByAttributes(array('fun_rut'=>Yii::app()->user->id));
		$modelFis= Fiscalia::model()->findByAttributes(array('fis_codigo'=>$modelFunFis->fis_codigo));
		$model->fun_rut=Yii::app()->user->id;
		$Grupo=new Grupo;
		$AsisGrupo=new AsisGrupo;
		$model_invitado=new Invitado;


		$temp_asisGrupo = $_POST['AsisGrupo'];

			$model->attributes=$_POST['Minuta'];
			//if($model->validate()){				
				$model->fis_codigo=$modelFis->fis_codigo;
				$model->min_descripcion=' '.$model->fisNombre->fis_sigla.'-'.$model->uniNombre->uni_sigla.':2014';
				$model->min_estado='Por Publicar';
				date_default_timezone_set("America/Santiago");
				$model->min_hora_inicio=date("H:i:s");
			//}
				
				if($model->save()){
					$bandera=true;

					foreach ( $_POST['Revision'] as $clave=>$valor) {
						if ($valor!=""){
							if(strrpos($clave,"rev_detalle")!==false){
									$model_revision->rev_ruc=$valor;
							}
							if(strrpos($clave,"rev_detalle")!==false){
									$model_revision->rev_detalle=$valor;
							}
							else if(strrpos($clave,"rev_fecha_plazo")!==false){
								$model_revision->rev_fecha_plazo=$valor;
							}
							else if(strrpos($clave,"fun_rut")!==false){
								$model_revision->fun_rut=$valor;
							}
							if ($model_revision->rev_ruc!="" and $model_revision->rev_detalle!="" and  $model_revision->rev_fecha_plazo!="" and $model_revision->fun_rut!=""){
								$model_revision->rev_fecha_registro= new CDbExpression('NOW()');
								$model_revision->rev_estado= 'En Proceso'; 
								$model_revision->min_codigo=$model->min_codigo;
								if ($model_revision->save())
									$model_revision=new Revision;
							}
						}
					}
					/*foreach ($_POST['Asistente'] as $clave=>$valor) {
						$model_asistente=new Asistente;
						if ($valor!=""){
							if(strrpos($clave,"fun_rut")!==false){
								$model_asistente->fun_rut=$valor;
								$model_asistente->min_codigo=$model->min_codigo;
								if ($model_asistente->save()){
								//echo "ok";	
								}								
							}						
						}
			  		}*/
			  		foreach ( $_POST['Acuerdo'] as $clave=>$valor) {
						if ($valor!=""){
							if(strrpos($clave,"acu_titulo")!==false){
									$model_acuerdo->acu_titulo=$valor;
							}					
							if ($model_acuerdo->acu_titulo!=""){
								$model_acuerdo->min_codigo=$model->min_codigo;
								$model_acuerdo->acu_fecha= new CDbExpression('NOW()');
								if ($model_acuerdo->save())
									$model_acuerdo=new Acuerdo;
							}
						}
					}

					foreach ( $_POST['Compromiso'] as $clave=>$valor) {
						if ($valor!=""){
							if(strrpos($clave,"com_detalle")!==false){
									$model_compromiso->com_detalle=$valor;
							}
							else if(strrpos($clave,"com_fecha_plazo")!==false){
								$model_compromiso->com_fecha_plazo=$valor;
							}
							else if(strrpos($clave,"fun_rut")!==false){
								$model_compromiso->fun_rut=$valor;
							}
							if ($model_compromiso->com_detalle!="" and  $model_compromiso->com_fecha_plazo!="" and $model_compromiso->fun_rut!=""){
								$model_compromiso->com_fecha_registro= new CDbExpression('NOW()');
								$model_compromiso->com_estado= 'En Proceso'; 
								$model_compromiso->min_codigo=$model->min_codigo;
								if ($model_compromiso->save())
									$model_compromiso=new Compromiso;
							}
						}
					}

					foreach ( $_POST['Agenda'] as $clave=>$valor) {
						if ($valor!=""){
							if(strrpos($clave,"agen_detalle")!==false){
									$model_agenda->agen_detalle=$valor;
							}
							else if(strrpos($clave,"fun_rut")!==false){
								$model_agenda->fun_rut=$valor;
							}
							if ($model_agenda->fun_rut!="" and  $model_agenda->agen_detalle!=""){
								$model_agenda->min_codigo=$model->min_codigo;
								$model_agenda->agen_fecha= new CDbExpression('NOW()');
								if ($model_agenda->save())
									$model_agenda=new Agenda;
							}
						}
					}


					//invitados!!!
					foreach ($_POST['Invitado'] as $clave=>$valor) {
					$model_invitado=new Invitado;
					if ($valor!=""){
						if(strrpos($clave,"fun_rut")!==false){
								$model_invitado->fun_rut=$valor;
								$model_invitado->min_codigo=$model->min_codigo;
								if ($model_invitado->save()){
									//echo "ok";	
								}								
						}						
					}
				  }

				  //para los asistentes
						foreach($temp_asisGrupo as $clave => $rut){
							if($clave!="fun_rut"){
								$as = new Asistente;
								$as->fun_rut = $rut;
								$as->min_codigo = $model->min_codigo;
								$as->save();
							}
						}


				}
					
			
			
			if ($bandera==true){
					echo "exito";					
			}
			else{
				echo "Error, Por favor verificar campos requeridos";

			}
				
		}


	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		if(isset($_POST['Minuta']))
		{
			$model->attributes=$_POST['Minuta'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->min_codigo));
		}

		$this->render('update',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()
	{
		$dataProvider=new CActiveDataProvider('Minuta');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	public function actionAdmin()
	{
		$model=new Minuta('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Minuta']))
			$model->attributes=$_GET['Minuta'];

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

	public function actionBuscador()
	{
		$model=new Minuta('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Minuta']))
			$model->attributes=$_GET['Minuta'];

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

	public function actionMisminutas()
	{
		$model=new Minuta('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Minuta']))
			$model->attributes=$_GET['Minuta'];

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

	public function loadModel($id)
	{
		$model=Minuta::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']==='minuta-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
