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

class Usuarios 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('pagination');
		//$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('Usuarios_Model');
		$this->load->model('Generales_Model');
		$this->load->model('PerfilesHotel_Model');
	}

	//Listar Usuarios  
	public function listUsers($offset = 0)
	{
		
		if ($this->session->userdata('iduser')=='') {
			redirect(base_url().'/admin');
		}

		$this->load->model('Usuarios_Model');
		$this->load->model('Establecimientos_Model');
		$this->load->model('Tipos_Model');
		$this->load->model('PerfilesHotel_Model');

        // Obtener el ID del usuario de la sesión
	    $iduser = $this->session->userdata('iduser');

		//Configurando el array para consulta de usuarios
		$dato = array('1', 'null','null', 'null', 'null', 'null', 'null', 'null');
		$query =  $this->Usuarios_Model->getUsuarioforParameter(null, $offset, $dato);

		//Configurando el array para consulta de establecimientos
		$datoe = array('1','null', 'null', 'null');
        $establecimiento = $this->Establecimientos_Model->getEstablecimientos($datoe);

		//Configurando el array para consulta de areas
		$datoa = array('8','null');
        $areas = $this->Tipos_Model->getAreas($datoa);

		//Configurando el array para consulta de tipos documentos
		$datotd = array('1', 'null');
        $tipodoc = $this->Tipos_Model->getTipoDoc($datotd);

		//Configurando el array para consulta de perfiles
		$datop = array('1','null','null'); 
        $perfiles = $this->PerfilesHotel_Model->getPerfilesHotelforParameter(null,null,$datop);

        //Configurando el array para consulta el perfil del usuario que esta ingresando al sistema
		$datou = array('2',$iduser,'null','null','null','null','null'); 
        $usuario = $this->Usuarios_Model->getUsuarioforParameter(null,null,$datou);

        //Configurando el array para consulta de todos los usuarios
		$datout = array('8','null','null','null','null','null','null'); 
        $usuariosT = $this->Usuarios_Model->getUsuarioforParameter(null,null,$datout);
		
		//envio arreglo
		$data['usuarios']        = $query;
		$data['establecimiento'] = $establecimiento;
		$data['areas']           = $areas;
		$data['tipodoc']         = $tipodoc;
		$data['perfiles']        = $perfiles;
        $data['usuario']         = $usuario;
        $data['usuariosT']       = $usuariosT;


        $data['titulo']          = 'Usuarios';
		$data['sidebar']         = 'Lista de Usuarios';

		//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/usuarios/list', $data);
	}

	//Buscar Usuario por parametro
	public function searchUsuarios($offset = 0)
	{
		if ($this->session->userdata('iduser')=='') {
			 redirect(base_url().'/admin');
		}
 
		$this->load->model('Usuarios_Model');

		//capturar los datos de busqueda
		$Opcion         = $this->input->post('Opcion')==''?'null':$this->input->post('Opcion');
		$Identificacion = $this->input->post('identificacion')==''?'null':$this->input->post('identificacion');
		$Nombres        = $this->input->post('nombre')==''?'null':$this->input->post('nombre');
		$IdEstado       = $this->input->post('estado')==''?'null':$this->input->post('estado');
		
		//Armando el arreglo del dato
		$dato = array($Opcion,'null',$Nombres,$IdEstado,$Identificacion,'null','null','null'); 
		$query = $this->Usuarios_Model->getUsuarioforParameter(null,null,$dato);		
		
		//retornar los valores
		echo json_encode($query);
		
	}
	
	//Crear Usuario
	public function NewUsuario()
	{
		if ($this->session->userdata('iduser')=='') {
			redirect(base_url().'/admin');
		}

		$this->load->model('Usuarios_Model');
		$this->load->model('Generales_Model');
		$this->load->model('PerfilesHotel_Model');
		$this->load->model('Establecimientos_Model');
		$this->load->model('Roles_Model');
		
		$dato = array('1','null');
		$areas=$this->Generales_Model->getAreas(null,null,$dato);

		$datotd = array('1','null');
		$tipdoc = $this->Generales_Model->getTipoDoc(null,null,$datotd);

		$datop = array('1','null','null','null'); 
        $perfiles = $this->PerfilesHotel_Model->getPerfilesHotelforParameter(null,null,$datop);

		$dator = array('1','null','null','null'); 
        $roles = $this->Roles_Model->getRolesHotelforParameter(null,null,$dator);

		$datoe = array('1','null','null','null'); 
        $hotel = $this->Establecimientos_Model->getEstablecimientosforParameter(null,null,$datoe);
		
		//Enviar Arreglo
		$data['areas']    = $areas;
		$data['tipdoc']   = $tipdoc;
		$data['perfiles'] = $perfiles;
		$data['roles']    = $roles;
		$data['hotel']    = $hotel;
        $data['titulo']   = 'Nuevo Usuario';
        $data['sidebar']  = 'Usuarios';

		//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/usuarios/new', $data);
    }

	//Editar Usuarios
	public function editUsuarios($iduser)
	{           
		if ($this->session->userdata('iduser')=='') {
			redirect(base_url().'/admin');
		} 
 
		//Cargar Modelos
		$this->load->model('Usuarios_Model');
		$this->load->model('Tipos_Model');
		$this->load->model('PerfilesHotel_Model');
		$this->load->model('Perfiles_Model');
		$this->load->model('Establecimientos_Model');
		
		//Armando el arreglo del dato
		$dato = array('2',$iduser,'null','null','null','null','null'); 
	   	$usuario = $this->Usuarios_Model->getUsuarioforParameter(false,false,$dato);
		
	   	$tipodoc = $this->Tipos_Model->getTipoDoc();
		$perfil  = $this->Perfiles_Model->getPerfiles();
		$areas   = $this->Perfiles_Model->getAreas();

		$datoe = array('1','null','null','null'); 
        $hotel = $this->Establecimientos_Model->getEstablecimientosforParameter(null,null,$datoe);

		//
        $data['hotel']    = $hotel;
        $data['tipodoc']  = $tipodoc;
        $data['perfil']   = $perfil;
		$data['areas']    = $areas;
        $data['usuarios'] = $usuario;
		$data['titulo']   = 'Editar Usuarios';
		$data['sidebar']  = 'Usuarios';

		//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/Usuarios/edit', $data);
	}

	//Insertar Usuario Nuevo
	public function insertUsuarios()
	{
 			
        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 Modelos
        $this->load->model('Usuarios_Model');
        $this->load->model('Bitacora_Model');
		$this->load->model('Roles_Model');
        
        //Solo los datos validos 
		$Opcion            = $this->input->post('Opcion')==''?null:$this->input->post('Opcion');
		$Nombres           = "'".strval($this->input->post('Nombres')==''?null:$this->input->post('Nombres'))."'";
		$Apellidos         = "'".strval($this->input->post('Apellidos')==''?null:$this->input->post('Apellidos'))."'";
		$IdTipoDocumento   = $this->input->post('IdTipoDocumento')==''?null:$this->input->post('IdTipoDocumento');
		$Identificacion    = "'".strval($this->input->post('Identificacion')==''?null:$this->input->post('Identificacion'))."'";
		$Email      	   = "'".strval($this->input->post('Email')==''?null:$this->input->post('Email'))."'";
		$Celular           = "'".strval($this->input->post('Celular')==''?null:$this->input->post('Celular'))."'";
		$IdEstado          = $this->input->post('IdEstado')==''?null:$this->input->post('IdEstado');
		$Login             = "'".strval($this->input->post('Login')==''?null:$this->input->post('Login'))."'";
		$Clave             = "'".strval($this->input->post('Clave')==''?null:$this->input->post('Clave'))."'";
		$IdPerfil          = $this->input->post('IdPerfil')==''?null:$this->input->post('IdPerfil');
		$IdArea            = $this->input->post('IdArea')==''?null:$this->input->post('IdArea');
		$IdEstablecimiento = $this->input->post('IdEstablecimiento')==''?null:$this->input->post('IdEstablecimiento');		 	

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

		 $data = array( 'Opcion'		    => $Opcion,
		 				'Nombres' 	        => $Nombres,
		 				'Apellidos'	        => $Apellidos,
		 				'IdTipoDocumento'   => $IdTipoDocumento,
		 				'Identificacion'    => $Identificacion,
		 				'Email'             => $Email,
		 				'Celular' 	        => $Celular,
		 				'IdEstado' 	        => $IdEstado,
		 				'Login'             => $Login,
		 				'Clave'             => $Clave,
		 				'IdPerfil' 	        => $IdPerfil,
		 				'IdEstablecimiento' => $IdEstablecimiento,
		 				'IdArea'            => $IdArea);
		
		$datob = array( 
			'IdEvento ' => '0', 
			'Fecha'     => $Date,
			'Hora'      => $Time, 
			'IdUsuario' => $IdUsuario
		);

		
		$resultado = $this->Usuarios_Model->saveUsuarios($data);

		if($resultado)
		{
			$this->Bitacora_Model->saveBitacora($datob); 
			print_r(json_encode(array("res"=>"ok","msg"=>"Usuario creado satisfactoriamente")));  
   
		}else{
				
			print_r(json_encode(array("res"=>"ok","msg"=>"Usuario no se pudo crear"))); 	     
		}
	}

    //Update Usuarios
    public function updateUsers()
	{     
		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'));  

		$this->load->model('Usuarios_Model');
		$this->load->model('Bitacora_Model');
		$this->load->model('Roles_Model');
		   
		//Solo los datos validos 
		$Opcion            = $this->input->post('Opcion')==''?null:$this->input->post('Opcion');
		$Nombres           = "'".strval($this->input->post('Nombres')==''?null:$this->input->post('Nombres'))."'";
		$Apellidos         = "'".strval($this->input->post('Apellidos')==''?null:$this->input->post('Apellidos'))."'";
		$IdTipoDocumento   = $this->input->post('IdTipoDocumento')==''?null:$this->input->post('IdTipoDocumento');
		$Identificacion    = "'".strval($this->input->post('Identificacion')==''?null:$this->input->post('Identificacion'))."'";
		$Email      	   = "'".strval($this->input->post('Email')==''?null:$this->input->post('Email'))."'";
		$Celular           = "'".strval($this->input->post('Celular')==''?null:$this->input->post('Celular'))."'";
		$IdEstado          = $this->input->post('IdEstado')==''?null:$this->input->post('IdEstado');
		$Login             = "'".strval($this->input->post('Login')==''?null:$this->input->post('Login'))."'";
		$Clave             = "'".strval($this->input->post('Clave')==''?null:$this->input->post('Clave'))."'";
		$IdPerfil          = $this->input->post('IdPerfil')==''?null:$this->input->post('IdPerfil');
		$IdArea            = $this->input->post('IdArea')==''?null:$this->input->post('IdArea');
		$IdEstablecimiento = $this->input->post('IdEstablecimiento')==''?null:$this->input->post('IdEstablecimiento');	
		$IdUsuarioE        = $this->input->post('IdUsuario')==''?null:$this->input->post('IdUsuario');	
   
		$IdUsuario = $this->session->userdata('iduser');
   
		$data = array('Opcion'            => $Opcion,
					  'Nombres'	 	      => $Nombres,
					  'Apellidos' 	      => $Apellidos,
					  'IdTipoDocumento'   => $IdTipoDocumento,
					  'Identificacion' 	  => $Identificacion,
					  'Email'	  	      => $Email,
					  'Celular'           => $Celular,
					  'IdEstado' 	  	  => $IdEstado,
					  'Login'    	      => $Login,
					  'Clave' 	 	      => $Clave,
		   			  'IdPerfil' 	      => $IdPerfil,
		   			  'IdArea' 	          => $IdArea,
		   			  'IdEstablecimiento' => $IdEstablecimiento,
		   			  'IdUsuario' 	  	  => $IdUsuarioE);
		
		$datob = array( 'IdEvento ' => '2', 
                        'Fecha'     => $Date,
                        'Hora'      => $Time, 
                        'IdUsuario' => $IdUsuario);
   
		$resultado=$this->Usuarios_Model->updateUsuarios($data);
		   
		if($resultado)
		{
			$this->Bitacora_Model->saveBitacora($datob); 
			print_r(json_encode(array("res"=>"ok","msg"=>"Usuario actualizado satisfactoriamente"))); 
   
		}else{
				
			print_r(json_encode(array("res"=>"ok","msg"=>"Usuario no se pudo actualizar"))); 	     
		}
		
	}


	// //Inactivar Usuarios
	// public function deleteUsuarios($IdUser)
	// {
	// 	if($this->session->userdata('iduser')==''){
	// 		redirect(base_url().'/admin');
	// 	}

	// 	$this->load->model('Sucursales_Model');
	// 	$this->load->model('Bitacora_Model');

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

	// 	$datab = array(
	// 		'IdEvento'  => '1',
	// 		'IdUsuario' => $IdUsuario
	// 	);

	// 	$Usuarios = $this->Usuarios_Model->deleteUsuarios($IdUser);

	// 	if($Usuaris)
	// 	{
	// 		$this->Bitacora_Model->saveBitacora($datab);
	// 		print_r(json_encode(array("res"=>"ok","msg"=>"Usuario Inactivado Satisfactoriamente")));
	// 	}else{

	// 		print_r>(json_encode(array("res"=>"ok","msg"=>"Usuario No Inactivado")));
	// 	}
	// }

	public function BuscarUsuario($identificacion){

		if ($this->session->userdata('iduser')=='') {
			redirect(base_url().'/admin');
		}
		
		$this->load->model('Usuarios_Model');
		
		$dato = array('1',$identificacion); 
	    $query = $this->Usuarios_Model->BuscarUsuarioIdentificacion(null,null,$dato);		
	   
	    //retornar los valores
	    echo json_encode($query);
	   
	}
}
