<?php

class ConfLiquidacionController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
                        array('CrugeAccessControlFilter')
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('@'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update','periodicidad'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('@'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
                $model = ConfLiquidacion::model()->find('blnborrado= false');
                if($model){
                    $this->redirect(array('update'));
                }
		$model=new ConfLiquidacion;
                $modelPeriodicidad[] = new PeriodicidadLiquidacion();
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['ConfLiquidacion']))
		{   
                    unset($modelPeriodicidad);$modelPeriodicidad=array();
                    $valido = TRUE;
                    $scenario = '';

                    $model->attributes=$_POST['ConfLiquidacion'];
                       //echo "<pre>";print_r($_POST);exit;
                    $valido=$model->validate()&&$valido;
                    if(isset($_POST['PeriodicidadLiquidacion'])){   
                        if($model->periodicidad==1){
                          $scenario = 'Diarias';
                        } //Semanal
                        elseif($model->periodicidad==2){
                            $scenario = 'Semanal';
                        }
                        else{ //Monto
                            $scenario = 'Monto';
                        }
                        foreach($_POST['PeriodicidadLiquidacion'] as $iSolicitud=>$dataSolicitud){
                            $item = new PeriodicidadLiquidacion($scenario);
                            $item->attributes=$dataSolicitud;
                            $item->numeroDia = $iSolicitud;

                            $valido =$item->validate()&&$valido;
                            $modelPeriodicidad[] = $item;

                            unset($item);
                        }                                 
                        
                    }
                    if($valido){
                        $transaction = Yii::app()->db->beginTransaction();
                        try {
                                $model->save();                                
                                if($model->periodicidad!=''){
                                    foreach($modelPeriodicidad as $keySolicitudes=>$valueSolicitudes) {
                                        if($valueSolicitudes->dia ==1 || $valueSolicitudes->cantidad_peticiones!='' ||$valueSolicitudes->monto_ofertado !=''){
                                            $valueSolicitudes->id_conf_liquidacion =$model->id;
                                            $valueSolicitudes->id_periodicidad = $model->periodicidad;
                                            $valueSolicitudes->dia = $valueSolicitudes->numeroDia;
                                            $valueSolicitudes->save(); 
                                        }
                                    }   
                                }
                                $transaction->commit();
                                $this->redirect(array('admin'));
                            } catch (Exception $e){
				throw new CHttpException(400,$e->getMessage());
				$transaction->rollBack();

                            }
				//$this->redirect(array('view','id'=>$model->id));
                        }
		}

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

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
    {
        $model = ConfLiquidacion::model()->find('blnborrado= false');

        if (isset($model->solicitudes[0])) {
            $model->periodicidad = $model->solicitudes[0]->id_periodicidad;
            if ($model->periodicidad == 1) {
                $items = 6;
            } else {
                $items = 0;
            }

            for ($i = 0; $i <= $items; $i++) {
                $modelPeriodicidad[$i] = new PeriodicidadLiquidacion();
            }

            foreach ($model->solicitudes as $keySolicitudes => $valueSolicitudes) {
                $modelPeriodicidad[$valueSolicitudes->dia]->cantidad_peticiones = $valueSolicitudes->cantidad_peticiones;
                $modelPeriodicidad[$valueSolicitudes->dia]->monto_ofertado = $valueSolicitudes->monto_ofertado;
                $modelPeriodicidad[$valueSolicitudes->dia]->dia = 1;
            }
        } else {
            $modelPeriodicidad[] = new PeriodicidadRetiroParcial();
        }

        if (isset($_POST['ConfLiquidacion'])) {
            unset($modelPeriodicidad);
            $modelPeriodicidad = [];
            $valido = true;
            $scenario = '';
            $model->attributes = $_POST['ConfLiquidacion'];
            $model->setGastoAdministrativo($_POST['ConfLiquidacion']);
            $model->setComisionBancaria($_POST['ConfLiquidacion']);

            $valido = $model->validate() && $valido;

            if (isset($_POST['PeriodicidadLiquidacion'])) {
                if ($model->periodicidad == 1) {
                    $scenario = 'Diarias';
                } //Semanal
                elseif ($model->periodicidad == 2) {
                    $scenario = 'Semanal';
                } else { //Monto
                    $scenario = 'Monto';
                }
                foreach ($_POST['PeriodicidadLiquidacion'] as $iSolicitud => $dataSolicitud) {
                    $item = new PeriodicidadLiquidacion($scenario);
                    $item->attributes = $dataSolicitud;
                    $item->numeroDia = $iSolicitud;

                    $valido = $item->validate() && $valido;
                    $modelPeriodicidad[] = $item;

                    unset($item);
                }
            }

            if ($valido) {
                $transaction = Yii::app()->db->beginTransaction();
                try {
                    $model->save();
                    if ($model->periodicidad != '') {
                        PeriodicidadLiquidacion::model()->deleteAll('id_conf_liquidacion=:id_conf_liquidacion', [':id_conf_liquidacion' => $model->id]);
                        foreach ($modelPeriodicidad as $keySolicitudes => $valueSolicitudes) {
                            if ($valueSolicitudes->dia == 1 || $valueSolicitudes->cantidad_peticiones != '' || $valueSolicitudes->monto_ofertado != '') {
                                $modelPeriodicidadActualizada = new PeriodicidadLiquidacion();
                                $modelPeriodicidadActualizada->id_periodicidad = $model->periodicidad;
                                $modelPeriodicidadActualizada->cantidad_peticiones = $valueSolicitudes->cantidad_peticiones;
                                $modelPeriodicidadActualizada->id_conf_liquidacion = $model->id;
                                $modelPeriodicidadActualizada->dia = $valueSolicitudes->numeroDia;
                                $modelPeriodicidadActualizada->save();
                            }
                        }
                    }

                    $transaction->commit();
                    $this->redirect(['admin']);
                } catch (Exception $e) {
                    $transaction->rollBack();
                    throw new CHttpException(400, $e->getMessage());
                }
            }
        }

        $this->render('update', [
            'model' => $model,
            'modelPeriodicidad' => $modelPeriodicidad,
        ]);
    }

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$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'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('ConfLiquidacion');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new ConfLiquidacion('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['ConfLiquidacion']))
			$model->attributes=$_GET['ConfLiquidacion'];

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

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=ConfLiquidacion::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='conf-liquidacion-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
        public function actionPeriodicidad(){
        
            if(isset($_POST['periodicidad']) && $_POST['periodicidad']!=''){
                $id= $_POST['periodicidad'];
                $items = 0;
                if($id==1){
                  $scenario = 'Diarias';
                  $items = 6;
                } //Semanal
                elseif($id==2){
                    $scenario = 'Semanal';
                }
                else{ //Monto
                    $scenario = 'Monto';
                }
                
                for($i=0;$i<=$items;$i++){
                  $model[$i]= new PeriodicidadLiquidacion($scenario);
                }  
                $this->renderPartial('_form_periodicidad',array(
			'model'=>$model,
                        'id'=>$id
		)); 
               
          
            }
            
        }
}
