<?php 
defined('BASEPATH') OR exit('No direct script access allowed');
header('Access-Control-Allow-Origin: *');

class Permisos extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    
        //cargar la base de datos
        $this->load->database();
        //parser de json y xml
        $this->load->library("parser");

        //$this->load->model('Sesion_Model');
        $this->load->library('form_validation');
        //$this->load->library("Form_validation");
        $this->load->helper("url");
        $this->load->helper('form');
        $this->load->helper('text');
        
        //Cargando los modelos para gestion de la data sistema pena
        $this->load->model('Permisos_Model');
        $this->load->model('PerfilesHotel_Model');
        $this->load->model('Modulos_Model');
		$this->load->model('Bitacora_Model');
    }
    
    //Listar Permisos
    public function listPermisos($offset = 0)
    {
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        }

		//Cargar Modulos
        $this->load->model('Permisos_Model');
		$this->load->model('PerfilesHotel_Model');
        $this->load->model('Modulos_Model');

		//Configurando el array para consulta de permisos
		$dato = array('1','null','null','null'); 
        $query = $this->Permisos_Model->getPermisosforParameter(null,null,$dato);
		
		//Configurando el array para consulta de Perfiles
		$dato = array('1','null','null'); 
        $perfiles = $this->PerfilesHotel_Model->getPerfilesHotelforParameter(null,null,$dato);

		//Configurando el array para consulta de Modulos
		$datom = array('1','null','null');
        $modulos=$this->Modulos_Model->getModulosforParameter(null,null,$datom);
		
		//envio el arreglo
		$data['permiso']  = $query;
		$data['perfiles'] = $perfiles;
		$data['modulos']  = $modulos;
        $data['titulo']   = 'Permisos';
		$data['sidebar']  = 'Lista de Permisos';

       //Cargar los permisos
	   $this->load->model('Security_Model');
	   $profile = $this->session->userdata('profile');
	   $modulo  = "all";
	   $datos   = array('1', $profile, $modulo); 
	   $permiso = $this->Security_Model->getAllSecurityProfile($datos);
	   $data['permisos'] = $permiso;

		$this->load->view('admin/permisos/list', $data);
    }

    //Buscar permisos por parametro
    public function searchPermisos($offset = 0)
    {
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        }

		//Cargar Modelos
        $this->load->model('Permisos_Model');
        
		//capturar los datos de busqueda
        $Opcion = $this->input->post('Opcion')==''?'null':$this->input->post('Opcion');
        $IdPerfil = $this->input->post('IdPerfil')==''?'null':$this->input->post('IdPerfil');
        $IdModulo = $this->input->post('IdModulo')==''?'null':$this->input->post('IdModulo');
        
		//Configurndo el array para consulta de permisos
		$dato = array('2','null',$IdPerfil,$IdModulo); 
        $query = $this->Permisos_Model->getPermisosforParameter(null,null,$dato);
        
		//retornar los valores
        echo json_encode($query);
       
    }
    
    // //Crear Nuevo Permiso
    // public function newPermisos()
    // {
    //     if ($this->session->userdata('iduser')=='') {
    //         redirect(base_url().'/admin');
    //     }

	// 	//Cargar Modelos
    //     $this->load->model('PerfilesHotel_Model');
    //     $this->load->model('Permisos_Model');
    //     $this->load->model('Modulos_Model');

    //     //Configurndo el array para consulta de perfiles
    //     $datop = array('1','null','null','null');
    //     $perfiles=$this->PerfilesHotel_Model->getPerfilesHotel($datop);
              
    //     //Configurndo el array para consulta de Modulos
    //     $datom = array('1','null','null');
    //     $modulos=$this->Modulos_Model->getModulos($datom);

	// 	//envio el arreglo
    //     $data['modulos']  = $modulos;
    //     $data['perfiles'] = $perfiles;
    //     $data['titulo']   = 'Nuevo Permiso';
    //     $data['sidebar']  = 'Permisos';
         
	// 	//Cargar los permisos
    //     $this->load->model('Security_Model');
    //     $profile = $this->session->userdata('profile');
    //     $modulo  = "all";
    //     $datos   = array('1', $profile, $modulo); 
	// 	$permiso = $this->Security_Model->getAllSecurityProfile($datos);
    //     $data['permisos'] = $permiso;

    //     $this->load->view('admin/Permisos/new', $data);
    // }

    //Editar Permiso
    public function editPermisos($idpermiso)
    {            
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        } 

		//Cargar Modal
        $this->load->model('Permisos_Model');
		$this->load->model('PerfilesHotel_Model');
        $this->load->model('Modulos_Model');

        //Armando el arreglo del dato
		$dato = array('2',$idpermiso,'null','null','null','null'); 
        $permiso = $this->Permisos_Model->getPermisosforParameter(null,null,$dato);
  
        //Configurndo el array para consulta de Permisos
        $datop = array('1','null','null','null');
        $perfiles=$this->PerfilesHotel_Model->getPerfilesHotelforParameter(null,null,$datop);
               
        //Configurndo el array para consulta de Modulos
        $datom = array('1','null','null');
        $modulos=$this->Modulos_Model->getModulos($datom);
		
		//envio el arreglo
        $data["permiso"]  = $permiso;
        $data["perfiles"] = $perfiles;
        $data["modulos"]  = $modulos;
        $data["titulo"]   = 'Editar Permiso';
        $data["sidebar"]  = 'Permisos';

        //Cargar los permisos
        $this->load->model('Security_Model');
        $profile = $this->session->userdata('profile');
        $modulo  = "all";
        $datos   = array('1', $profile, $modulo); 
		$pmtotal = $this->Security_Model->getAllSecurityProfile($datos);
        $data['permisos'] = $pmtotal;
       
        $this->load->view('admin/Permisos/edit', $data);
    }

    //Guardar Permisos
    public function insertPermisos()
    {
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        } 

		date_default_timezone_set("America/Bogota");
        setlocale(LC_ALL,"es_CO");

        $meses = array("01","02","03","04","05","06","07","08","09","10","11","12");
        $Date = (date('Y')."-".$meses[date('n')-1]."-".date('d'));  
        $Time = (date('H').":".date('i').":".date('s'));  

		//Cargar Modal
        $this->load->model('Permisos_Model');
        $this->load->model('Bitacora_Model');
        
        //Solo los datos validos  
        $Opcion     = $this->input->post('Opcion')==''?false:$this->input->post('Opcion');
        $IdPerfil   = $this->input->post('IdPerfil')==''?false:$this->input->post('IdPerfil');
        $IdModulo   = $this->input->post('IdModulo')==''?false:$this->input->post('IdModulo');
        $Registrar  = "'".strval($this->input->post('Registrar')==''?false:$this->input->post('Registrar'))."'";
        $Actualizar = "'".strval($this->input->post('Actualizar')==''?false:$this->input->post('Actualizar'))."'";
        $Listar     = "'".strval($this->input->post('Listar')==''?false:$this->input->post('Listar'))."'";
        $Eliminar   = "'".strval($this->input->post('Eliminar')==''?false:$this->input->post('Eliminar'))."'";

        $IdUsuario = $this->session->userdata('iduser');

		//Arreglo Principal
        $data = array(
            'Opcion'    => $Opcion,
            'IdPerfil' 	=> $IdPerfil,
            'IdModulo' 	=> $IdModulo,
            'Registrar' => $Registrar,
            'Actualizar'=> $Actualizar,
            'Listar' 	=> $Listar,
            'Eliminar' 	=> $Eliminar
        );

        //Arreglo Bitacora
        $datob = array( 'IdEvento'  => '24', 
                        'Fecha'     => $Date,
                        'Hora'      => $Time, 
                        'IdUsuario' => $IdUsuario);

        //validar si existe el registro en la base de datos
        $dato=array('2','null',$IdPerfil,$IdModulo);
        $resultado=$this->Permisos_Model->getPermisosforParameter(null,null,$dato);
        
        if(count($resultado)>0)
        {
            print_r(json_encode(array("res"=>"bad","msg"=>"Permiso ya existe, intente crear otro con diferente nombre de perfil y modulo")));
        }else{
            
            $this->Permisos_Model->savePermisos($data);
			
			//Recuperar ultimo id Guardado
			$query = $this->db->query("SELECT IDENT_CURRENT('Permisos') as last_id");
			$rta = $query->result();
			$PermisoId=($rta[0]->last_id);
			
			//Arreglo Bitacora
			$datab = array( 
				'IdEvento'  => '10', 
				'Fecha'     => $Date,
				'Hora'      => $Time, 
				'IdUsuario' => $IdUsuario
			);

            $this->Bitacora_Model->saveBitacora($datab);
            print_r(json_encode(array("res"=>"ok","msg"=>"Permiso creado satisfactoriamente")));           
        }
              
    }

    //Actualizar Permisos
    public function updatePermisos()
    {     
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        } 

		date_default_timezone_set("America/Bogota");
        setlocale(LC_ALL,"es_CO");

        $meses = array("01","02","03","04","05","06","07","08","09","10","11","12");
        $Date = (date('Y')."-".$meses[date('n')-1]."-".date('d'));  
        $Time = (date('H').":".date('i').":".date('s'));  

		//Cargar Modal
        $this->load->model('Permisos_Model');
        $this->load->model('Bitacora_Model');
        
        //Solo los datos validos
        $Opcion     = $this->input->post('Opcion')==''?false:$this->input->post('Opcion');
        $IdPermiso  = $this->input->post('IdPermiso')==''?false:$this->input->post('IdPermiso');
        $IdPerfil   = $this->input->post('IdPerfil')==''?false:$this->input->post('IdPerfil');
        $IdModulo   = $this->input->post('IdModulo')==''?false:$this->input->post('IdModulo');
        $Registrar  = "'".strval($this->input->post('Registrar')==''?false:$this->input->post('Registrar'))."'";
        $Actualizar = "'".strval($this->input->post('Actualizar')==''?false:$this->input->post('Actualizar'))."'";
        $Listar     = "'".strval($this->input->post('Listar')==''?false:$this->input->post('Listar'))."'";
        $Eliminar   = "'".strval($this->input->post('Eliminar')==''?false:$this->input->post('Eliminar'))."'";

        $IdUsuario = $this->session->userdata('iduser');

		//Arreglo Principal
        $data = array(
            'Opcion'    => $Opcion,
            'IdPermiso' => $IdPermiso,
            'IdPerfil' 	=> $IdPerfil,
            'IdModulo' 	=> $IdModulo,
            'Registrar' => $Registrar,
            'Actualizar'=> $Actualizar,
            'Listar' 	=> $Listar,
            'Eliminar' 	=> $Eliminar
        );
         
		//Arreglo Bitacora
        $datab = array( 
			'IdEvento'  => '25', 
            'Fecha'     => $Date,
            'Hora'      => $Time, 
            'IdUsuario' => $IdUsuario
		);

        //validar si existe el registro en la base de datos
        $resultado=$this->Permisos_Model->updatePermisos($data);
                
        if($resultado)
        {   
            $this->Bitacora_Model->saveBitacora($datab);
            print_r(json_encode(array("res"=>"ok","msg"=>"Permiso actualizado satisfactoriamente")));
             
        }else{
            
            print_r(json_encode(array("res"=>"bad","msg"=>"Permiso no existe")));
             
        }
    }

    //Eliminar Permiso
    public function deletePermisos()
    {            
        if ($this->session->userdata('iduser')=='') {
            redirect(base_url().'/admin');
        } 

		date_default_timezone_set("America/Bogota");
        setlocale(LC_ALL,"es_CO");

        $meses = array("01","02","03","04","05","06","07","08","09","10","11","12");
        $Date = (date('Y')."-".$meses[date('n')-1]."-".date('d'));  
        $Time = (date('H').":".date('i').":".date('s'));  
        
		//Cargar Modal
        $this->load->model('Permisos_Model');
        $this->load->model('Bitacora_Model');
        
        $IdUsuario = $this->session->userdata('iduser');
        $IdPermiso = $this->input->post('IdPermiso')==''?false:$this->input->post('IdPermiso');
        
		//Arreglo Bitacora
        $datab = array( 
			'IdEvento'  => '26', 
            'Fecha'     => $Date,
            'Hora'      => $Time, 
            'IdUsuario' => $IdUsuario
		);
        
        //Llamar el Procedimiento
        $permisos = $this->Permisos_Model->deletePermisos($IdPermiso);
    
        if($permisos)
        {   
            $this->Bitacora_Model->saveBitacora($datab);
            print_r(json_encode(array("res"=>"ok","msg"=>"Permiso elimindo satisfactoriamente")));
             
        }else{
            
            print_r(json_encode(array("res"=>"bad","msg"=>"Permiso no se pudo eliminar")));
              
        }
    
    }
                     
}
