<?php
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Habitaciones_Model extends CI_Model
{
    //Constructor 
    function __construct()
    {
        parent::__construct();
        //$this->load->library('encryption');
    }

	//Registrar Correos
    public function saveHabitaciones($data)
    {
         //Inicio transaccion    
         $this->db->trans_begin();  

         //recorrer el data. 
         $Opcion         = '1';      
         $IdEstablecimiento = $data['IdEstablecimiento'];        
         $NumeroHabitacion  = $data['NumeroHabitacion'];        
         $IdEstado          = $data['IdEstado'];        
         $Disponibilidad    = $data['Disponibilidad'];        
         $IdTipoHabitacion  = $data['IdTipoHabitacion'];         
 
         //Llamo al procedimiento almacenado
         $misql='EXEC spInsertHabitacion @Opcion            = '.$Opcion.', 
                                         @IdEstablecimiento = '.$IdEstablecimiento.',  
                                         @NumeroHabitacion  = '.$NumeroHabitacion.', 
                                         @IdEstado          = '.$IdEstado.', 
                                         @Disponibilidad    = '.$Disponibilidad.', 
                                         @IdTipoHabitacion  = '.$IdTipoHabitacion.'';
                                              
         //Envio el procedimiento y los parametros
         $result=$this->db->query($misql); 
         
         //Control de transacciones 
         if ($this->db->trans_status() === false) {
             $this->db->trans_rollback();
             return false;
         } else {
             $this->db->trans_commit();
             return true;
         }
    }

    //Tiempo Correos
    public function updateHabitaciones($data)
    {
        //Inicio transaccion    
	  	$this->db->trans_begin();  

	  	//recorrer el data.
	  	$Opcion            = $data['Opcion'];
	  	$IdHabitacion      = $data['IdHabitacion'];        
	  	$IdEstablecimiento = $data['IdEstablecimiento'];        
	  	$NumeroHabitacion  = $data['NumeroHabitacion'];        
	  	$IdTipoHabitacion  = $data['IdTipoHabitacion'];        
	  	$IdEstado          = $data['IdEstado'];        
	  	$Disponibilidad    = $data['Disponibilidad'];  

		//Llamo al procedimiento almacenado
	  	$misql='EXEC spUpdateHabitacion @Opcion            = '.$Opcion.',
									    @IdHabitacion      = '.$IdHabitacion.',
									    @IdEstablecimiento = '.$IdEstablecimiento.',  
									    @NumeroHabitacion  = '.$NumeroHabitacion.', 
									    @IdTipoHabitacion  = '.$IdTipoHabitacion.', 
									    @IdEstado          = '.$IdEstado.', 
									    @Disponibilidad    = '.$Disponibilidad.'' ;

		//Envio el procedimiento y los parametros
	  	$result=$this->db->query($misql); 
	  
	  	//Control de transacciones 
	  	if ($this->db->trans_status() === false)
		{
		  	$this->db->trans_rollback();
		  	return false;
	  	} else 
		{
		  	$this->db->trans_commit();
		  	return true;
	  	}
    }

	public function updateHabitacionesDisponibilidad($data)
	{
	    //Inicio transaccion    
        $this->db->trans_begin();  

        //recorrer el data.
        $Opcion            = $data['Opcion'];
        $IdHabitacion      = $data['IdHabitacion'];     
        $Disponibilidad    = $data['Disponibilidad'];  

        //Llamo al procedimiento almacenado
        $misql='EXEC spUpdateHabitacion @Opcion            = '.$Opcion.',
                                        @IdHabitacion      = '.$IdHabitacion.',
                                        @Disponibilidad    = '.$Disponibilidad.'' ;

        //Envio el procedimiento y los parametros
        $result=$this->db->query($misql); 
    
        //Control de transacciones 
        if ($this->db->trans_status() === false){
            $this->db->trans_rollback();
            return false;
        }else{
            $this->db->trans_commit();
            return true;
        }
	}

    // //Buscar Correos por codigo
    // public function getHabitacion($data)
    // {
    //     //Utilizar la libreria
    //     $id=$data['Codigo_habitacion'];
    //     //$id=$data[0];
    //     $this->db->select('*');
    //     $this->db->from('habitacion');
    //     $this->db->where('Codigo_habitacion', $id);
    //     $query = $this->db->get();
    //     return $query;

    // }
    //Buscar RutasPlan por parametros === OK
 	public function getHabitacionforParameter($limit=false,$offset=false,$data)
 	{

        $limit ? $this->db->limit($limit, $offset):'';

        $this->load->library('Consultar');
        $conn = $this->CI_Consultar->conexion(APP_SERVERNAME,APP_DBNAME,APP_USER,APP_PASS);
     
        $misql = "EXEC spGetHabitaciones @Opcion            = ".$data[0].",
                                         @IdEstablecimiento = ".$data[1].",
                                         @IdHabitacion      = ".$data[2].",
                                         @Disponibilidad    = ".$data[3].",
                                         @IdClaseMatricula  = ".$data[4].",
                                         @IdTipoOcupacion   = ".$data[5].",
                                         @NumHabitacion     = ".$data[6].",
                                         @IdTipoHabitacion  = ".$data[7]."";
        // print_r($misql); die();
        $results=$this->CI_Consultar->consultarsp($misql,$conn);
        $results = mb_convert_encoding($results ,'UTF-8', 'HTML-ENTITIES');
        return $results;

    
		// //Utilizado para la paginacion?
        // $limit ? $this->db->limit($limit, $offset):'';

		// //Utilizar la libreria
        // $opcion            = $data[0];
        // $establecimiento   = $data[1];
        // $habitacion        = $data[2];
        // $disponibilidad    = $data[3];
        // $IdHabitacion      = $data[4];
        
        // switch (intval($opcion))
		// {
        //     case 1: //Consultar todos los datos de todos los habitacion
        //         $this->db->select('h.*,e.Nombre as NombreEst');
        //         $this->db->from('habitacion as h');
        //         $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //     	break;
            
        //     case 2://Consultar por id de habitacion
        //         $this->db->select('h.*,e.Nombre as NombreEst');
        //         $this->db->from('habitacion as h');
        //         $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //         $this->db->where('h.IdHabitacion', $IdHabitacion);
        //     	break;

        //     case 3: //Seleccionar habitacion por parametros de busqueda
        //         if($estado!='null' and $fechaini!='null' and $nombres!='null'){
                   
        //             $this->db->select( 'h.*,
		// 								CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,
		// 								CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,
		// 								e.Nombre as NombreEst',
		// 								FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('h.Estado', $estado);
        //             $this->db->where('o.FechaIni BETWEEN "'.$fechaini.'" AND "'. $fechafin.'"');
        //             $this->db->like('h.Nombres', $nombres);
        //         }

        //         if($estado=='null' and $fechaini!='null' and $nombres!='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('o.FechaIni BETWEEN "'.$fechaini.'" AND "'. $fechafin.'"');
        //             $this->db->like('h.Nombres', $nombres);
        //         }

        //         if($estado=='null' and $fechaini=='null' and $nombres!='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->like('h.Nombres', $nombres);
        //         }
                
        //         if($estado=='null' and $fechaini=='null' and $nombres=='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //         }

        //         if($estado!='null'and $fechaini=='null' and $nombres=='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('h.Estado', $estado);
        //         }

        //         if($estado!='null' and $fechaini!='null' and $nombres=='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('h.Estado', $estado);
        //             $this->db->where('o.FechaIni BETWEEN "'.$fechaini.'" AND "'. $fechafin.'"');
        //         }

        //         if($estado!='null' and $fechaini=='null' and $nombres!='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('h.Estado', $estado);
        //             $this->db->like('h.Nombres', $nombres);
        //         }

        //         if($estado=='null' and $fechaini!='null' and $nombres=='null'){
        //             $this->db->select('h.*,CASE h.Estado WHEN "A" THEN "Activo" else "Inactivo" end as Estado,CASE h.Disponibilidad WHEN "S" THEN "Disponible" else "Ocupada" end as Disponibilidad,e.Nombre as NombreEst',FALSE);
        //             $this->db->from('habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //             $this->db->join('ocupaciones_habitacion as oh','oh.IdHabitacion = h.IdHabitacion','left');
        //             $this->db->join('ocupaciones as o','o.IdOcupacion = oh.IdOcupacion','left');
        //             $this->db->where('o.FechaIni BETWEEN "'.$fechaini.'" AND "'. $fechafin.'"');
        //         }
        //         break;
                
        //     case 4://Validar la habitacion
		// 		$this->db->select("h.Codigo_habitacion, h.Codigo_establecimiento, h.Numero_habitacion, h.Nombres, h.Capacidad_maxima, CASE WHEN h.Estado='A' THEN 'Activo' ELSE 'Inactivo' END as Estado, h.FechaInicial, h.FechaFinal, h.Descripcion, h.Codigo_habitacion as Id ");
		// 		$this->db->from('habitacion as h');
		// 		$this->db->join('establecimientos as e', 'e.IdEstablecimiento= h.IdEstablecimiento');
		// 		$this->db->where('h.NumeroHabitacion', $numero_habitacion);
        //         break;

        //     case 5://Validar si la habitación ya existe y es diferente de la habitación a actualizar 
		// 		$this->db->select("h.Codigo_habitacion, h.Codigo_establecimiento, h.Numero_habitacion, h.Nombres, h.Capacidad_maxima, CASE WHEN h.Estado='A' THEN 'Activo' ELSE 'Inactivo' END as Estado, h.FechaInicial, h.FechaFinal, h.Descripcion, h.Codigo_habitacion as Id ");
		// 		$this->db->from('habitacion as h');
		// 		$this->db->join('establecimientos as e', 'e.IdEstablecimiento= h.IdEstablecimiento');
		// 		$this->db->where('h.Numero_habitacion', $numero_habitacion);
        //         break;

        //     case 6://Validar si la habitación ya existe y es de la habitación a actualizar
		// 		$this->db->select( 'h.IdHabitacion,
		// 							h.NumeroHabitacion,
		// 							h.Nombres as NomHabitacion,
		// 							h.Capacidad,
		// 							h.Descripcion,
		// 							h.Disponibilidad,
		// 							e.IdEstablecimiento,
		// 							e.Nombre as Establecimiento');
		// 		$this->db->from(' habitacion as h');
		// 		$this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
		// 		$this->db->where('h.IdHabitacion', $habitacion);
        //         break;

        //     case 7:// Validar si la habitación ya existe diferente a la habitación a actualizar
		// 		$this->db->select( "h.Codigo_habitacion, 
		// 							h.Codigo_establecimiento, 
		// 							h.Numero_habitacion, 
		// 							h.Nombres, 
		// 							h.Capacidad_maxima, 
		// 							CASE WHEN h.Estado='A' THEN 'Activo' ELSE 'Inactivo' END as Estado, 
		// 							h.FechaInicial, 
		// 							h.FechaFinal, 
		// 							h.Descripcion, 
		// 							h.Codigo_habitacion as Id ");
		// 		$this->db->from('habitacion as h');
		// 		$this->db->join('establecimientos as e', 'e.IdEstablecimiento= h.IdEstablecimiento');
		// 		$this->db->where('h.Nombres', $nombres);
		// 		$this->db->where('h.IdHabitacion<>', $id);
        //         break;

		// 	case 8:// Validar si la habitación ya existe diferente a la habitación a actualizar
		// 		$this->db->select('h.Codigo_habitacion, h.Codigo_establecimiento,  h.Numero_habitacion, h.Nombres, h.Capacidad_maxima, h.Estado, h.FechaInicial, h.FechaFinal, h.Descripcion');
		// 		$this->db->from('habitacion as h');
		// 		$this->db->where('h.Nombres', $Nombres);
		// 		$this->db->where('h.Codigo_habitacion<>', $id);
		// 		//$query = $this ->db->get();
		// 		break;

		// 	case 9://Validar si la habitación ya existe diferente a la habiatción a actualizar
		// 		$this->db->select( 'h.IdHabitacion,
		// 							h.NumeroHabitacion,
		// 							h.Nombres as NomHabitacion,
		// 							h.Capacidad,
		// 							h.Descripcion,
		// 							h.Disponibilidad,
		// 							e.IdEstablecimiento,
		// 							e.Nombre as Establecimiento');
		// 		$this->db->from('habitacion as h');
		// 		$this->db->where('h.Numero_habitacion', $Numero_habitacion);
		// 		break;

        //     case 10: //Consultar todos los datos de todos los habitacion
        //         $this->db->select('h.*,e.Nombre as NombreEst');
        //         $this->db->from('habitacion as h');
        //         $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
        //         $this->db->where('h.Estado = "A"');
        //         $this->db->where('h.Disponibilidad  <> "O"');
        //         break;

        //     case 11: //Consultar todos los datos de todos los habitacion
        //         if($establecimiento =='null' and $habitacion =='null' and $disponibilidad =='null'){
        //             $this->db->select( 'h.IdHabitacion,
        //                                 h.NumeroHabitacion,
        //                                 h.Nombres as NomHabitacion,
        //                                 h.Capacidad,
        //                                 h.Descripcion,
        //                                 h.Disponibilidad,
        //                                 e.IdEstablecimiento,
		// 								e.Nombre as NombreEst,
        //                                 e.Nombre as Establecimiento');
        //             $this->db->from(' habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
        //         }

        //         if($establecimiento !='null' and $habitacion =='null' and $disponibilidad =='null'){
        //             $this->db->select( 'h.IdHabitacion,
        //                                 h.NumeroHabitacion,
        //                                 h.Nombres as NomHabitacion,
        //                                 h.Capacidad,
        //                                 h.Descripcion,
        //                                 h.Disponibilidad,
        //                                 e.IdEstablecimiento,
		// 								e.Nombre as NombreEst,
        //                                 e.Nombre as Establecimiento');
        //             $this->db->from(' habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
        //             $this->db->where('e.IdEstablecimiento',$establecimiento);
        //         }

        //         if($establecimiento =='null' and $habitacion !='null' and $disponibilidad =='null'){
        //             $this->db->select( 'h.IdHabitacion,
        //                                 h.NumeroHabitacion,
        //                                 h.Nombres as NomHabitacion,
        //                                 h.Capacidad,
        //                                 h.Descripcion,
        //                                 h.Disponibilidad,
        //                                 e.IdEstablecimiento,
		// 								e.Nombre as NombreEst,
        //                                 e.Nombre as Establecimiento');
        //             $this->db->from(' habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
        //             $this->db->where('h.NumeroHabitacion',$habitacion);
        //         }

        //         if($establecimiento =='null' and $habitacion =='null' and $disponibilidad !='null'){
        //             $this->db->select( 'h.IdHabitacion,
        //                                 h.NumeroHabitacion,
        //                                 h.Nombres as NomHabitacion,
        //                                 h.Capacidad,
        //                                 h.Descripcion,
        //                                 h.Disponibilidad,
        //                                 e.IdEstablecimiento,
		// 								e.Nombre as NombreEst,
        //                                 e.Nombre as Establecimiento');
        //             $this->db->from(' habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
        //             $this->db->where('h.Disponibilidad',$disponibilidad);
        //         }
        //         if($establecimiento !='null' and $habitacion =='null' and $disponibilidad !='null'){
        //             $this->db->select( 'h.IdHabitacion,
        //                                 h.NumeroHabitacion,
        //                                 h.Nombres as NomHabitacion,
        //                                 h.Capacidad,
        //                                 h.Descripcion,
        //                                 h.Disponibilidad,
        //                                 e.IdEstablecimiento,
		// 								e.Nombre as NombreEst,
        //                                 e.Nombre as Establecimiento');
        //             $this->db->from(' habitacion as h');
        //             $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
        //             $this->db->where('h.Disponibilidad',$disponibilidad);
        //             $this->db->where('e.IdEstablecimiento',$establecimiento);
        //         }
                
        //     break;

		// 	case 12://sacar el ultimo registro
		// 		$this->db->select('MAX(IdHabitacion) as IdHabitacion');
		// 		$this->db->from('habitacion');
		// 	break;

		// 	case 13://Validar si existe habitacion para el establecimiento
		// 		$this->db->select( 'h.IdHabitacion,
		// 							h.NumeroHabitacion,
		// 							h.Nombres as NomHabitacion,
		// 							h.Capacidad,
		// 							h.Descripcion,
		// 							h.Disponibilidad,
		// 							e.IdEstablecimiento,
		// 							e.Nombre as Establecimiento');
		// 		$this->db->from(' habitacion as h');
		// 		$this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento','left');
		// 		$this->db->where('e.IdEstablecimiento',$establecimiento); 
		// 		$this->db->where('h.NumeroHabitacion',$habitacion);
		// 	break;

		// 	case 14: //Consultar todos los datos de todos los habitacion
        //         $this->db->select('h.*,e.Nombre as NombreEst');
        //         $this->db->from('habitacion as h');
        //         $this->db->join('establecimientos as e','e.IdEstablecimiento = h.IdEstablecimiento');
		// 		$this->db->where('h.Disponibilidad',$disponibilidad);
        //     break;
        // } 
        // $query= $this->db->get();
	    // return $query->result();
                     
    }

    //Buscar RutasPlan por parametros === OK
 	public function getHabitacionDiponible($limit=false,$offset=false,$data)
 	{
        $limit ? $this->db->limit($limit, $offset):'';

        $this->load->library('Consultar');
        $conn = $this->CI_Consultar->conexion(APP_SERVERNAME,APP_DBNAME,APP_USER,APP_PASS);
     
        $misql = "EXEC spGetHabitacionesDisponibles @Opcion            = ".$data[0].",
                                                    @IdEstablecimiento = ".$data[1].",
                                                    @Fecha             = ".$data[2].",
                                                    @Hora              = ".$data[3]."";
        // print_r($misql); die();
        $results=$this->CI_Consultar->consultarsp($misql,$conn);
        $results = mb_convert_encoding($results ,'UTF-8', 'HTML-ENTITIES');
        return $results;  
    }

    //Buscar todos los habitacion
    public function getHabitacionesAll($data)
    {
        //Utilizar la libreria
        $this->db->select('*');
        $this->db->from('habitacion');
        $query = $this->db->get();
        return $query;
        
    }

	//Borrar Habitaciones
    public function deleteHabitaciones($Data)
    {
        //Inicio transaccion    
        $this->db->trans_begin();  
        //recorrer el data.
        $id=$data['Codigo_habitacion']; 
        $this->db->where('Codigo_habitacion', $id);
        $this->db->delete('habitacion');
        
        //Control de transacciones 
        if ($this->db->trans_status() === false) {
            $this->db->trans_rollback();
            return false;
        } else {
            $this->db->trans_commit();
            return true;
        }

    }
}
?>
