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

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

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

        //recorrer el data. 
		$Opcion     = $data['Opcion'];         
		$IdPerfil   = $data['IdPerfil'];        
		$IdModulo   = $data['IdModulo'];        
		$Registrar  = $data['Registrar'];        
		$Actualizar = $data['Actualizar'];        
		$Listar     = $data['Listar'];        
		$Eliminar   = $data['Eliminar'];         

		//Llamo al procedimiento almacenado
        $misql='EXEC spInsertPermisos @Opcion     = '.$Opcion.', 
									  @IdPerfil   = '.$IdPerfil.', 
									  @IdModulo   = '.$IdModulo.', 
									  @Registrar  = '.$Registrar.', 
									  @Actualizar = '.$Actualizar.', 
									  @Listar     = '.$Listar.', 
									  @Eliminar   = '.$Eliminar.'';
       
		//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;
		}
    }

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

		//recorrer el data.
		$Opcion     = '1';
		$IdPermiso  = $data['IdPermiso'];        
		$IdPerfil   = $data['IdPerfil'];        
		$IdModulo   = $data['IdModulo'];        
		$Registrar  = $data['Registrar'];        
		$Actualizar = $data['Actualizar'];        
		$Listar     = $data['Listar'];        
		$Eliminar   = $data['Eliminar'];        
		
		//Llamo al procedimiento almacenado
		$misql='EXEC spUpdatePermiso @Opcion     = '.$Opcion.',
									 @IdPermiso  = '.$IdPermiso.',
									 @IdPerfil   = '.$IdPerfil.',  
									 @IdModulo   = '.$IdModulo.', 
									 @Registrar  = '.$Registrar.', 
									 @Actualizar = '.$Actualizar.', 
									 @Listar     = '.$Listar.', 
									 @Eliminar   = '.$Eliminar.'';
							
		//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 Permisos por codigo
    // public function getPermisos($data)
    // {
    //     //Realizar la Busqueda
    //     $this->db->select('*');
    //     $this->db->from('permisos');
       
    //     $query = $this->db->get();
	// 	return $query->result();
    // }

    //Buscar Permiso por parametros
    public function getPermisosforParameter($limit=null,$offset=null,$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 spGetPermisos @Opcion    = ".$data[0].",
                                     @IdPermiso = ".$data[1].",
                                     @IdPerfil  = ".$data[2].",
                                     @IdModulos = ".$data[3]."";
        
        $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];
		// $Permiso   = $data[1];
        // $Perfil    = $data[2];
        // $Modulo    = $data[3];
        // $NomPerfil = $data[4];
        // $NomModulo = $data[5];

		// //realizar la consulta
        // switch (intval($Opcion))
		// {
        //     case 1: //Consultar todos los datos de todos los huesped
        //         $this->db->select( "pm.IdPermiso,
		// 							pm.IdPerfil,
		// 							pm.IdModulo, 
		// 							CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 							CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 							CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 							CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 							pf.Nombre as Perfil, 
		// 							md.Nombre as Modulo");
        //         $this->db->from('permisos as pm');
		// 		$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 		$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //     break;
            
        //     case 2://Consultar por identificacion
        //         $this->db->select( "pm.IdPermiso,
		// 							pm.IdPerfil,
		// 							pm.IdModulo, 
		// 							pm.Registrar,  
		// 							pm.Actualizar,
		// 							pm.Eliminar,
		// 							pm.Listar,
		// 							pf.Nombre as Perfil, 
		// 							md.Nombre as Modulo");
        //         $this->db->from('permisos as pm');
		// 		$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 		$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //         $this->db->where('pm.IdPermiso', $Permiso);
        //     break;

        //     case 3: //Seleccionar huesped por parametros de busqueda
		// 		//Por NomPerfil y por NomMOdulo
        //         if($NomPerfil != 'null' and $NomModulo != 'null'){
        //             $this->db->select( "pm.IdPermiso,
		// 								pm.IdPerfil,
		// 								pm.IdModulo, 
		// 								CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 								CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 								CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 								CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 								pf.Nombre as Perfil, 
		// 								md.Nombre as Modulo");
        //             $this->db->from('permisos as pm');
		// 			$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 			$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //             $this->db->like('pf.Nombre', $NomPerfil);
        //             $this->db->like('md.Nombre', $NomModulo);
        //         }
		// 		//Por NomPerfil
        //         if($NomPerfil != 'null' and $NomModulo == 'null'){
        //             $this->db->select( "pm.IdPermiso,
		// 								pm.IdPerfil,
		// 								pm.IdModulo, 
		// 								CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 								CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 								CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 								CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 								pf.Nombre as Perfil, 
		// 								md.Nombre as Modulo");
        //             $this->db->from('permisos as pm');
		// 			$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 			$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //             $this->db->like('pf.Nombre', $NomPerfil);
        //         }

		// 		//Por NomModulo
        //         if($NomPerfil == 'null' and $NomModulo != 'null'){
        //             $this->db->select( "pm.IdPermiso,
		// 								pm.IdPerfil,
		// 								pm.IdModulo, 
		// 								CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 								CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 								CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 								CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 								pf.Nombre as Perfil, 
		// 								md.Nombre as Modulo");
        //             $this->db->from('permisos as pm');
		// 			$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 			$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //             $this->db->like('md.Nombre', $NomModulo);
        //         }
                
		// 		//Recargar Pagina
        //         if($NomPerfil == 'null' and $NomModulo == 'null'){
        //             $this->db->select( "pm.IdPermiso,
		// 								pm.IdPerfil,
		// 								pm.IdModulo, 
		// 								CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 								CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 								CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 								CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 								pf.Nombre as Perfil, 
		// 								md.Nombre as Modulo");
        //         	$this->db->from('permisos as pm.');
		// 			$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 			$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //         }
        //     break;
                
        //     case 4://Validar por Modulo
        //         $this->db->select( "pm.IdPermiso,
		// 							pm.IdPerfil,
		// 							pm.IdModulo, 
		// 							CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 							CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 							CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 							CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 							pf.Nombre as Perfil, 
		// 							md.Nombre as Modulo");
        //         $this->db->from('permisos as pm');
		// 		$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 		$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
        //         $this->db->where('pm.IdModulo', $Modulo);
        //     break;
			 
		// 	case 5://Consultar perfil
		// 		$this->db->select( "pm.IdPermiso,
		// 							pm.IdPerfil,
		// 							pm.IdModulo, 
		// 							CASE pm.Registrar  WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Registrar,
		// 							CASE pm.Actualizar WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Actualizar,
		// 							CASE pm.Eliminar   WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Eliminar,
		// 							CASE pm.Listar     WHEN 'A' THEN 'ACTIVO' else 'INACTIVO' end as Listar,
		// 							pf.Nombre as Perfil, 
		// 							md.Nombre as Modulo");
		// 		$this->db->from('permisos as pm');
		// 		$this->db->join('perfiles as pf','pf.IdPerfil = pm.IdPerfil');
		// 		$this->db->join('modulos as md','md.IdModulo = pm.IdModulo', 'left');
		// 		$this->db->where('pm.IdPerfil', $Perfil);
		// 	break;
	
        // } 

        // //Enviar Respuesta
        // $query= $this->db->get();
		// $str = $this->db->last_query();
		
	    // return $query->result();
        
    }

    //Borrar Permisos
    public function deletePermisos($IdPermiso)
    {
		$this->load->library('Consultar');
        $conn = $this->CI_Consultar->conexion(APP_SERVERNAME,APP_DBNAME,APP_USER,APP_PASS);
     
        $misql = 'EXEC spDeletePermiso @IdPermiso = '.$IdPermiso.'';
       
        $results = $this->CI_Consultar->consultarsp($misql,$conn);
        if ($this->db->trans_status() === false) {
            $this->db->trans_rollback();
            return false;
        } else {
            $this->db->trans_commit();
            return true;
        }

    }
}
?>