<?php


class Cliente extends CActiveRecord
{
        public $fecha_desde;
        public $fecha_hasta;
        public $zona;
        public $distrito;
        public $gestor;
        public $empleo;
        public $captador;


        public function tableName()
	{
		return 'cliente';
	}

	public function rules()
	{
		
		return array(
                    
                        array('dni, nombre, apellido,id_distrito,id_empleo, celular, direccion, mz, lt, id_zona, id_cliente, id_gestor,id_captador', 'required','on'=> 'create,update'),
                        array(
                                "nombre,apellido",
                                "match",
                                "pattern" => "/^[a-zA-Z ñÑáéíóúüç]*$/",
                                "message"=>"Solo puede utilizar letras"
                            ),
                        array('dni','validar_create','on'=> 'create'),
                        array('dni','validar_update','on'=> 'update'), 
			array('id_zona, id_distrito, id_gestor', 'numerical', 'integerOnly'=>true),
			array('dni, nombre, apellido, celular, direccion, mz, lt, foto_cliente, foto_local, foto_dni', 'length', 'max'=>100),
			array('borrado', 'length', 'max'=>1),
			array('id_cliente,captador,distrito,empleo,gestor,fecha_desde,id_cptador,fecha_hasta, dni,id_distrito, nombre, apellido, celular, direccion, mz, lt, id_zona,  id_gestor, foto_cliente, foto_local, foto_dni, gps, borrado', 'safe', 'on'=>'search'),
		);
	}

	public function validar_create($attributes,$params){
            $reg=Cliente::model()->find('dni=? and borrado="0"',array(htmlspecialchars(addslashes(stripslashes(strip_tags(trim($this->dni)))))));
            if($reg != NULL){
                 $this->addError('dni','DNI ya esta registrado en el sistema.'); 
            }
        }

        public function validar_update($attributes,$params){
            $reg=Cliente::model()->find('dni=? and borrado="0" and  id_cliente<>?',array(htmlspecialchars(addslashes(stripslashes(strip_tags(trim($this->dni))))),htmlspecialchars(addslashes(stripslashes(strip_tags(trim($this->id_cliente)))))));
            if($reg != NULL){
                 $this->addError('dni','DNI ya esta registrado en el sistema.');
            }
        }
	public function relations()
	{
		return array(
		);
	}


	public function attributeLabels()
	{
		return array(
			'id_cliente' => 'ID',
			'dni' => 'DNI',
			'nombre' => 'Nombres',
			'apellido' => 'Apellidos',
			'celular' => 'Celular',
			'direccion' => 'Dirección',
                        'id_empleo'=>'Empleo',
			'mz' => 'MZ',
			'lt' => 'LT',
			'id_zona' => 'Zona',
			'id_distrito' => 'Distrito',
			'id_gestor' => 'Gestor',
			'foto_cliente' => 'Foto del Cliente',
			'foto_local' => 'Foto del Local',
			'foto_dni' => 'Foto del  DNI',
			'foto_recibo' => 'Recibo de Servicio',
			'gps' => 'GPS',
                        'recibir_prestamo'=> 'BLOQUEAR/HABILITAR PRESTAMOS ',
                        'observacion'=>'Observacion',
                        'id_usuario_creador' => 'Usuario Registró',
			'id_usuario_modificador' => 'Usuario Modificó',
			'id_usuario_eliminador' => 'Usuario Eliminó',
			'fecha_creacion' => 'Fecha de Registro',
			'fecha_modificacion' => 'Fecha de Modificación',
			'fecha_eliminaacion' => 'Fecha de Eliminación',
                        'id_captador'=>'Captdor',
			'borrado' => 'Borrado',
		);
	}


	public function search()
	{       $criteria=new CDbCriteria;
		
                $criteria->select=array('t.id_cliente,t.id_captador,t.observacion, t.dni,t.id_empleo, t.nombre, t.apellido, t.celular, t.direccion, '
                    . 't.mz, t.lt,'
                    . 't.id_zona,t.id_distrito,  t.id_gestor, t.foto_cliente, t.foto_local, t.foto_dni, t.gps, t.borrado,  '
                    . 'a.descripcion as zona,'
                    . 'b.descripcion as gestor,'
                    . 'c.descripcion as distrito,'
                    . 'd.descripcion as empleo'
          
                    
                );
                
                $criteria->join=""
                        . " inner join zona AS a on  a.id_zona=t.id_zona "
                        . " inner join gestor AS b on  b.id_gestor=t.id_gestor"
                        . " inner join distrito AS c on  c.id_distrito=t.id_distrito"
                        . " inner join empleo AS d on  d.id_empleo=t.id_empleo"
               
                        ;
         
		$criteria->compare('id_cliente',$this->id_cliente);
		$criteria->compare('dni',$this->dni,true);
		$criteria->compare('LOWER(nombre)',strtolower($this->nombre),true);
		$criteria->compare('LOWER(apellido)',strtolower($this->apellido),true);
                
		$criteria->compare('celular',$this->celular,true);
		$criteria->compare('direccion',$this->direccion,true);
		$criteria->compare('mz',$this->mz,true);
		$criteria->compare('lt',$this->lt,true);
		$criteria->compare('t.id_zona',$this->id_zona);
                $criteria->compare('t.id_captador',$this->id_captador);
		$criteria->compare('id_cliente',$this->id_cliente);
		$criteria->compare('t.id_gestor',$this->id_gestor);
		$criteria->compare('foto_cliente',$this->foto_cliente,true);
		$criteria->compare('foto_local',$this->foto_local,true);
		$criteria->compare('foto_dni',$this->foto_dni,true);
		$criteria->compare('gps',$this->gps,true);
		$criteria->compare('t.borrado',0,true);
		$sort = new CSort();
                $sort->defaultOrder = 'id_cliente DESC';
                $sort->attributes=array(
                    'id_cliente'=>array(
                        'asc'=>'id_cliente ASC',
                        'desc'=>'id_cliente DESC',
                    ),
                    'cedula'=>array(
                        'asc'=>'cedula ASC',
                        'desc'=>'cedula DESC',
                    ),
                    'nombre'=>array(
                        'asc'=>'nombre ASC',
                        'desc'=>'nombre DESC',
                    ),
                     'dni'=>array(
                        'asc'=>'dni ASC',
                        'desc'=>'dni DESC',
                    ),
                     'apellido'=>array(
                        'asc'=>'apellido ASC',
                        'desc'=>'apellido DESC',
                    ),
                    
                     'zona'=>array(
                        'asc'=>'zona ASC',
                        'desc'=>'zona DESC',
                    ),
                    'distrito'=>array(
                        'asc'=>'distrito ASC',
                        'desc'=>'distrito DESC',
                    ),
                    'gestor'=>array(
                        'asc'=>'gestor ASC',
                        'desc'=>'gestor DESC',
                    ),  'captador'=>array(
                        'asc'=>'captador ASC',
                        'desc'=>'captador DESC',
                    ),
                );
		$data = new CActiveDataProvider($this, array(
                    'criteria' => $criteria,
                    'pagination' => array(
                        'pageSize' => Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']),
                    ),
                    'sort' => $sort,
                ));
                $session=new CHttpSession;
		$session->open();
                $session['cliente'] = new CActiveDataProvider($this, array(
                    'criteria' => $criteria,
                    'sort' => $sort,
                    "pagination" => false
                ));
                
                return $data;
	}


	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
        
        
        public static function add() {
        date_default_timezone_set("America/Lima");
        $fecha = time(); 
        $fecha=date ("Y-m-d H:i:s",$fecha);    
         
        $insert = Yii::app()->db->createCommand()->
                insert("cliente", array(
                "dni" =>$_POST['Cliente']['dni']!=NULL?Utility::minuscula($_POST['Cliente']['dni']):'', 
                "nombre" =>$_POST['Cliente']['nombre']!=NULL?Utility::mayuscula($_POST['Cliente']['nombre']):'', 
                "apellido" =>$_POST['Cliente']['apellido']!=NULL?Utility::mayuscula($_POST['Cliente']['apellido']):'', 
                "celular" =>$_POST['Cliente']['celular']!=NULL?Utility::minuscula($_POST['Cliente']['celular']):'',  
                "direccion" =>$_POST['Cliente']['direccion']!=NULL?Utility::mayuscula($_POST['Cliente']['direccion']):'',  
                "mz" =>$_POST['Cliente']['mz']!=NULL?Utility::mayuscula($_POST['Cliente']['mz']):'',  
                "lt" =>$_POST['Cliente']['lt']!=NULL?Utility::mayuscula($_POST['Cliente']['lt']):'',  
                "id_zona" =>$_POST['Cliente']['id_zona']!=NULL?Utility::minuscula($_POST['Cliente']['id_zona']):'',  
                "id_distrito" =>$_POST['Cliente']['id_distrito']!=NULL?Utility::minuscula($_POST['Cliente']['id_distrito']):'', 
                "id_empleo" =>$_POST['Cliente']['id_empleo']!=NULL?Utility::minuscula($_POST['Cliente']['id_empleo']):'', 
                "id_gestor" =>$_POST['Cliente']['id_gestor']!=NULL?Utility::minuscula($_POST['Cliente']['id_gestor']):'',  
                "id_captador" =>$_POST['Cliente']['id_captador']!=NULL?Utility::minuscula($_POST['Cliente']['id_captador']):'',  
                
                "foto_cliente" =>$_POST['Cliente']['foto_cliente'],    
                "foto_local" =>$_POST['Cliente']['foto_local'],    
                "foto_dni" =>$_POST['Cliente']['foto_dni'], 
                "foto_recibo" =>$_POST['Cliente']['foto_recibo'], 
                "gps" =>$_POST['Cliente']['gps'],   
                "recibir_prestamo" =>$_POST['Cliente']['recibir_prestamo'],
                "observacion" =>$_POST['Cliente']['observacion']!=NULL?Utility::mayuscula($_POST['Cliente']['observacion']):'',    
                "id_usuario_creador" => Yii::app()->user->id,
                "fecha_creacion" =>$fecha,  
                "borrado"=>"0"    
            ));
            return $insert;
        }
        
        public static function edit($id) {
            
             date_default_timezone_set("America/Lima");
             $fecha = time(); 
             $fecha=date ("Y-m-d H:i:s",$fecha); 
            
            $update = Yii::app()->db->createCommand()->
                update("cliente", array(   
                "dni" =>$_POST['Cliente']['dni']!=NULL?Utility::minuscula($_POST['Cliente']['dni']):'', 
                "nombre" =>$_POST['Cliente']['nombre']!=NULL?Utility::mayuscula($_POST['Cliente']['nombre']):'', 
                "apellido" =>$_POST['Cliente']['apellido']!=NULL?Utility::mayuscula($_POST['Cliente']['apellido']):'', 
                "celular" =>$_POST['Cliente']['celular']!=NULL?Utility::minuscula($_POST['Cliente']['celular']):'',  
                "direccion" =>$_POST['Cliente']['direccion']!=NULL?Utility::mayuscula($_POST['Cliente']['direccion']):'',  
                "mz" =>$_POST['Cliente']['mz']!=NULL?Utility::mayuscula($_POST['Cliente']['mz']):'',  
                "lt" =>$_POST['Cliente']['lt']!=NULL?Utility::mayuscula($_POST['Cliente']['lt']):'',  
                "id_zona" =>$_POST['Cliente']['id_zona']!=NULL?Utility::minuscula($_POST['Cliente']['id_zona']):'', 
                "foto_recibo" =>$_POST['Cliente']['foto_recibo'],
                "id_distrito" =>$_POST['Cliente']['id_distrito']!=NULL?Utility::minuscula($_POST['Cliente']['id_distrito']):'',
                "id_empleo" =>$_POST['Cliente']['id_empleo']!=NULL?Utility::minuscula($_POST['Cliente']['id_empleo']):'', 
                "id_gestor" =>$_POST['Cliente']['id_gestor']!=NULL?Utility::minuscula($_POST['Cliente']['id_gestor']):'',  
                "id_captador" =>$_POST['Cliente']['id_captador']!=NULL?Utility::minuscula($_POST['Cliente']['id_captador']):'',  
                
                "foto_cliente" =>$_POST['Cliente']['foto_cliente'],    
                "foto_local" =>$_POST['Cliente']['foto_local'],    
                "foto_dni" =>$_POST['Cliente']['foto_dni'], 
                "gps" =>$_POST['Cliente']['gps'],  
                "recibir_prestamo" =>$_POST['Cliente']['recibir_prestamo'],
                "observacion" =>$_POST['Cliente']['observacion']!=NULL?Utility::mayuscula($_POST['Cliente']['observacion']):'',      
                "id_usuario_modificador" => Yii::app()->user->id,
                "fecha_modificacion" =>$fecha     
                ), "id_cliente=$id");
            return $update;
        }
           public static function borrar($id) {
             date_default_timezone_set("America/Lima");
             $fecha = time(); 
             $fecha=date ("Y-m-d H:i:s",$fecha);    
            $update = Yii::app()->db->createCommand()->
                update("cliente", array(   
                "borrado" =>'1',  
                "id_usuario_eliminador" => Yii::app()->user->id,
                "fecha_eliminacion" =>$fecha    
                    
                    
                ), "id_cliente=$id");
            return $update;
        }  

        public function getConcatened(){
            return    $this->dni. '  ' .$this->nombre . '  ' . $this->apellido.' / GESTOR: '.Gestor::descripcion($this->id_gestor).'  / '.'NUM. PRESTAMOS: '.Prestamo::numPrestamos($this->id_cliente);
        }
        
        public static function lista(){
           $lista=  CHtml::listData(Cliente::model()->findAll(array("order"=>"dni","condition"=>"borrado=0")), 'id_cliente', 'concatened');
           return $lista;
        }
        
    
        
        public static function detalle($id){
            $sql="Select t.observacion, t.id_cliente, t.dni,t.id_empleo, t.nombre, t.apellido, t.celular, t.direccion,t.mz, t.lt,"
               . " t.id_zona,t.id_distrito,  t.id_gestor, t.foto_cliente, t.foto_local, t.foto_dni, t.foto_recibo, t.gps, t.borrado,"
               . " a.descripcion as zona,b.descripcion as gestor,c.descripcion as distrito,d.descripcion as empleo from cliente as t"
               . " inner join zona AS a on  a.id_zona=t.id_zona inner join gestor AS b on  b.id_gestor=t.id_gestor "
               . " inner join distrito AS c on  c.id_distrito=t.id_distrito inner join empleo AS d on  d.id_empleo=t.id_empleo where t.id_cliente=".$id ;
            $reg=  Yii::app()->db->createCommand($sql)->queryRow();
            
            return $reg;
            
        }
        
        public static function descripcion($id){
           $descripcion='';
            if(!empty($id)){
            $row= Cliente::model()->find('id_cliente=?',array($id));
            if(!empty($row)){
               $descripcion=$row->dni.' '.$row->nombre.' '.$row->apellido ; 
            }
            }
           return $descripcion;  
       }
        
       public static function porcentaje($parcial,$total){
            $p=0;
            
            if($total>0 and $parcial>=0){
                $p=round($parcial/$total*100,2);
            }
            return $p;
        } 
        
      public static function buscarDNI($dni){
        $cuota=0;
        $dni=htmlspecialchars(addslashes(stripslashes(strip_tags(trim($dni)))));
        $sql="SELECT * FROM cliente where dni=".$dni." and borrado=0 ";
        $p=  Yii::app()->db->createCommand($sql)->queryRow();
        return $p;
   }
        
   
   
          
        public static function captador($id,$n) {
            date_default_timezone_set("America/Lima");
            $fecha = time(); 
            $fecha=date ("Y-m-d H:i:s",$fecha); 
            $update = Yii::app()->db->createCommand()->
                update("cliente", array(   
                "id_captador" =>$n,  
                "id_usuario_modificador" => Yii::app()->user->id,
                "fecha_modificacion" =>$fecha     
                ), "id_cliente=$id");
            return $update;
        }
   
         public static function actualizar(){
        $sql="SELECT * FROM prestamo where borrado=0 ";
              $prestamo=  Yii::app()->db->createCommand($sql)->queryAll();
              if(!empty($prestamo)){
                for ($i = 0; $i<count($prestamo); $i++) {
                    $n=$prestamo[$i]['num'];
                    $id=  $prestamo[$i]['id_cliente'];
                    if($n>0){
                        Cliente::captador($id,$n);
                        
                    }else{
                        Cliente::captador($id,$n);
                        
                    }
                        
                 
               }
            }
        }
        
        
   
}
