<?php

/**
 * This is the model class for table "retiro.retiro_parcial_solicitudes_log".
 *
 * The followings are the available columns in table 'retiro.retiro_parcial_solicitudes_log':
 * @property integer $id
 * @property boolean $aperturado
 * @property string $id_usuario
 * @property string $observacion
 * @property string $fecha_registro
 * @property integer $tiempo_extra
 * @property string $hora_cierre
 * @property boolean $actual
 * @property boolean $asociado
 */
class RetiroParcialSolicitudesLog extends CActiveRecord
{
	public $datosUsuario;
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'retiro.retiro_parcial_solicitudes_log';
	}

	/**
	 * @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('tiempo_extra', 'required','on'=>'Apertura'),
			array('observacion', 'required'),
			array('aperturado, id_usuario, observacion, tiempo_extra,fecha_registro, hora_cierre, actual, asociado', 'safe'),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('id, aperturado, id_usuario, observacion, fecha_registro, tiempo_extra, hora_cierre, actual, asociado', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @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(
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'aperturado' => 'Aperturado',
			'id_usuario' => 'Usuario',
			'observacion' => 'Observación',
			'fecha_registro' => 'Fecha Registro',
			'tiempo_extra' => 'Tiempo extra',
			'hora_cierre' => 'Hora de cierre',
			'actual' => 'Actual',
			'asociado' => 'Asociado',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search($asociado = true)
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('aperturado',$this->aperturado);
		$criteria->compare('id_usuario',$this->id_usuario,true);
		$criteria->compare('observacion',$this->observacion,true);
		$criteria->compare('fecha_registro',$this->fecha_registro,true);
		$criteria->compare('tiempo_extra',$this->tiempo_extra);
		$criteria->compare('hora_cierre',$this->hora_cierre,true);
		$criteria->compare('actual',$this->actual);
		$criteria->compare('asociado',$asociado);
		$criteria->order = 'id  Desc';

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}



	public static function validarAperturaCierreSolicitud($asociado){
		$respuesta = '';
		$modelConfiguracion = ConfRetiroParcial::model()->find();
		// date_default_timezone_set('America/Caracas');

		$dia_semana = date('w');
		$hora_Actual = date('H:i');
		// echo date('d-m-Y h:s:i');exit;
		$validacion = json_decode($modelConfiguracion->solicitudes_apertura_cierre,true);
		$solicitudes = $validacion[$dia_semana];

		if($modelConfiguracion->restriccion_solicitud_hora){
			if($asociado){
				###################################### VERIFICAR QUE EXISTE REGISTRO DE HOY ####################################
				$model = self::model()->find('actual = true AND asociado = true AND fecha_registro::DATE = to_char(current_timestamp, \'YYYY-MM-DD\')::DATE');
				if($model){
					if($model->aperturado){
						if($hora_Actual > $model->hora_cierre){
							$respuesta = 'En estos momentos no esta aperturado las solicitudes de retiro parcial, el proceso fue cerrado';
							self::model()->updateAll(['actual'=>false],'asociado = true');
							$model = new self;
							$model->id_usuario = NULL;
							$model->asociado = true;
							$model->aperturado = false;
							$model->observacion = 'El sistema fué cerrado por no estar en la hora de solicitud';
							$model->save();
						}
					}
					else{
						$respuesta = 'En estos momentos no esta aperturado las solicitudes de retiro parcial, el proceso fue cerrado';
					}
				}
				else{
					$hora_apertura = date('H:i',strtotime($solicitudes['h_apertura_asociado']));
					$hora_cierre = date('H:i',strtotime($solicitudes['h_cierre_asociado']));
					if(	$hora_Actual >= $hora_apertura  && $hora_Actual <= $hora_cierre  ){
							self::model()->updateAll(['actual'=>false],'asociado = true');
							$model = new self;
							$model->id_usuario = NULL;
							$model->asociado = true;
							$model->aperturado = true;
							$model->hora_cierre = $hora_cierre;
							$model->observacion = 'El sistema fué abierto por estar en la hora de solicitud';
							$model->save();
						}
						else{
							$respuesta = 'En estos momentos  no esta aperturado las solicitudes de retiro parcial '.$hora_Actual;
						}
				}
			}
			else{
				###################################### VERIFICAR QUE EXISTE REGISTRO DE HOY ####################################
				$model = self::model()->find('actual = true AND asociado = false AND fecha_registro::DATE = to_char(current_timestamp, \'YYYY-MM-DD\')::DATE');
				if($model){
					if($model->aperturado){
						if($hora_Actual > $model->hora_cierre){
							$respuesta = 'En estos momentos no esta aperturado las solicitudes de retiro parcial, el proceso fue cerrado';
							self::model()->updateAll(['actual'=>false],'asociado = false');
							$model = new self;
							$model->id_usuario = NULL;
							$model->asociado = false;
							$model->aperturado = false;
							$model->observacion = 'El sistema fué cerrado por no estar en la hora de solicitud';
							$model->save();
						}
					}
					else{
						$respuesta = 'En estos momentos no esta aperturado las solicitudes de retiro parcial, el proceso fue cerrado';
					}
				}
				else{
					$hora_apertura = date('H:i',strtotime($solicitudes['h_apertura_adm']));
					$hora_cierre = date('H:i',strtotime($solicitudes['h_cierre_adm']));
					if(	$hora_Actual >= $hora_apertura  && $hora_Actual <= $hora_cierre  ){
							self::model()->updateAll(['actual'=>false],'asociado = false');
							$model = new self;
							$model->id_usuario = NULL;
							$model->asociado = false;
							$model->aperturado = true;
							$model->hora_cierre = $hora_cierre;
							$model->observacion = 'El sistema fué abierto por estar en la hora de solicitud';
							$model->save();
						}
					else{
							$respuesta = 'En estos momentos no esta aperturado las solicitudes de retiro parcial';
						}
				}
			}
		}
		return $respuesta;
	}
	public function afterFind(){
        if($this->id_usuario!=''){
            $model = CrugeUserI::model()->findByPk($this->id_usuario);
            if($model){
                $this->datosUsuario= $model->nombres.' '.$model->apellidos;
            }
        }
        else
        	$this->datosUsuario='SISTEMA';


        return parent::afterFind();
    }

    public function beforeSave(){
    	/*if($this->id_usuario==''){
            $this->id_usuario= Yii::app()->user->id;
        }*/
        if($this->tiempo_extra =='')
        	$this->tiempo_extra=NULL;

        if($this->hora_cierre =='')
        	$this->hora_cierre=NULL;

         return parent::beforeSave();
    }

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