<?php
/**
* Descripción del Controlador UsuariosApi
*
* usuario
*
* Licenciado bajo la Licencia Apache, Versión 2.0;
* Usted no puede usar este archivo excepto en conformidad con la Licencia.
* Usted puede obtener una copia de la Licencia en:
* http://www.php.net/license/3_01.txt.
* A menos que sea requerido por la ley aplicable o acordado por escrito, el software
* Distribuido bajo la licencia se distribuye en una "AS IS" o "COMO ESTA" BASE,
* SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
* Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
*
* @package Usuarios\Controladores
* @author LUIS ANTONIO MONTOYA CONTRERAS <lmontoya@ccsm.org.co>
* @author SICAM 20171025 <sicam32@ccsm.org.co>
* @copyright 2017 Cámara de Comercio de Santa Marta para el Magdalena
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version 201712181018
* @link http://sicam.ccsm.org.co/docs/usuarios/UsuariosApi
*/
class UsuariosApiControlador extends Controladores {
/**
* Vista que se encarga de mostrar todos los detalles/datos asociados a
* los registros de Usuarios.
* @return HTML Datos e información de Usuarios.
*/
function verDetalles() {
$usuario = UsuariosApi::datos($this->usuarioID);
Vistas::mostrar('usuarios', 'usuariosapi/ver-detalles', array('usuario' => $usuario));
}
/**
* Vista que se encarga de organizar la forma de presentar
* los registros de Usuarios al usuario.
* @return HTML Listado de Usuarios.
*/
function mostrarActivos() {
Vistas::mostrar('usuarios', 'usuariosapi/lst-todos');
}
/**
* Permite mostrar en forma de tabla los registros de UsuariosApi.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaListadoActivos() {
$usuarios = UsuariosApi::todos(UsuariosApi::ACTIVO);
var_dump($usuarios);
Vistas::mostrar('usuarios', 'usuariosapi/tbl-todos-activos',
array( 'usuarios' => $usuarios)
);
}
/**
* Vista que se encarga de organizar la forma de presentar
* los registros de Usuarios al usuario.
* @return HTML Listado de Usuarios.
*/
function mostrarTodos() {
Vistas::mostrar('usuarios', 'usuariosapi/lst-todos');
}
/**
* Permite mostrar en forma de tabla los registros de UsuariosApi.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaListado() {
$usuarios = UsuariosApi::todos();
Vistas::mostrar('usuarios', 'usuariosapi/tbl-todos',
array( 'usuarios' => $usuarios)
);
}
/**
* Responde con el formulario de UsuariosApi vacio, solo datos necesarios.
* LLama a la función que devuleve el formulario pero
* sin enviarle los datos de UsuariosApi.
* Esta función se crea para poder gestionar el permiso de NUEVO UsuariosApi
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function mostrarFormularioNuevo() {
$this->mostrarFormulario();
}
/**
* Función que toma los datos enviados y crea un nuevo registro
* @return RespuestasSistema
*/
private function guardarNuevo() {
$creadoID = UsuariosApi::guardar($this->aplicaconID, $this->usuarioNOMBRE, $this->usuarioCLAVE, $this->usuariosESTADO, $this->usuarioADMINISTRADOR);
if ($creadoID) {
UsuariosApi::guardarApi($creadoID, $this->apiCLAVESECRETA, $this->apiIP);
$operaciones = isset($this->operacionID) ? $this->operacionID : array();
$roles = isset( $this->rolID) ? $this->rolID : array();
if($this->asignarPermiso($creadoID, $operaciones )){
if($this->asignarRoles($creadoID, $roles)){
return RespuestasSistema::exito("", UsuariosApi::datos($creadoID));
}else{
return RespuestasSistema::fallo("Se creo el usuario pero hubo error al momento de asignar permiso, contacte con el Centro TICS.");
}
}else{
return RespuestasSistema::fallo("Se creo el usuario pero hubo error al momento de asignar permiso, contacte con el Centro TICS.");
}
} else {
return RespuestasSistema::fallo("No se pudo CREAR el nuevo UsuariosApi. Si vuelve a suceder, contacte con el Centro TICS.");
}
}
private function asignarPermiso($usuarioID, $operaciones){
$operacionTotal = 0;
if(!empty($operaciones)){
foreach($operaciones as $operacion):
$permiso = Usuarios::asignarPermiso($operacion, $usuarioID);
if(!empty($permiso) and $permiso){
$operacionTotal++;
}
endforeach;
if($operacionTotal!=count($operaciones)){
return false;
}
}
return true;
}
private function asignarRoles($usuarioID, $roles){
$operacionTotal = 0;
if(!empty($roles)){
foreach($roles as $rol):
$permiso = Usuarios::asignarRol($rol, $usuarioID);
if(!empty($permiso) and $permiso){
$operacionTotal++;
}
endforeach;
if($operacionTotal!=count($roles)){
return false;
}
}
return true;
}
/**
* Recibe el ID del UsuariosApi y obtiene sus datos para ser enviados
* al formulario, y asi cargar los datos en los inputs.
* Esta función se crea para poder gestionar el permiso de EDITAR UsuariosApi
* @return HTML Formulario con los datos del UsuariosApi a editar.
*/
function mostrarFormularioEditar() {
$usuarios = UsuariosApi::datos($this->usuarioID);
$this->mostrarFormulario($usuarios);
}
/**
* Función que toma los datos enviados y actualiza el registro
* @return RespuestasSistema
*/
private function guardarCambios() {
$UsuariosApi = UsuariosApi::datosCompletos($this->usuarioID);
$actualizado = UsuariosApi::actualizar(
$this->usuarioID, $this->aplicaconID,
$this->usuarioNOMBRE, $this->usuarioADMINISTRADOR
);
if (!is_null($actualizado)) {
if($this->usuarioCLAVE != $UsuariosApi->usuarioCLAVE):
Usuarios::actualizarClave($this->usuarioCLAVE,$this->usuarioID);
endif;
if($this->usuariosESTADO == 'ACTIVO' and $UsuariosApi->usuarioESTADO != 'ACTIVO' ):
Usuarios::activar($this->usuarioID);
endif;
if($this->usuariosESTADO == 'DESACTIVO' and $UsuariosApi->usuarioESTADO != 'DESACTIVO' ):
Usuarios::desactivar($this->usuarioID);
endif;
$roles = isset( $this->rolID) ? $this->rolID : array();
$operaciones = isset($this->operacionID) ? $this->operacionID : array();
$this->asignarPermiso($this->usuarioID, $operaciones );
$this->asignarRoles($this->usuarioID, $roles );
if(!empty($this->operacionesID)):
$this->eliminarPermiso($UsuariosApi, $this->operacionesID);
else:
$this->eliminarPermiso($UsuariosApi);
endif;
if(!empty($this->rolesID)):
$this->eliminarRol($UsuariosApi, $this->rolesID);
else:
$this->eliminarRol($UsuariosApi);
endif;
return RespuestasSistema::exito("", UsuariosApi::datos($this->usuarioID));
} else {
return RespuestasSistema::fallo("No se actualizó el UsuariosApi. Verifique los datos, o contacte al Centro TICS.");
}
}
private function eliminarPermiso($UsuariosApi, $operaciones = array()){
if(isset($UsuariosApi->permisos) and !empty($UsuariosApi->permisos)){
foreach($UsuariosApi->permisos as $permiso):
if(!in_array($permiso->operacionID, $operaciones)):
Usuarios::eliminarPermiso($permiso->operacionID, $UsuariosApi->usuarioID);
endif;
endforeach;
}
}
private function eliminarRol($UsuariosApi, $roles = array()){
if(isset($UsuariosApi->roles) and !empty($UsuariosApi->roles)){
foreach($UsuariosApi->roles as $rol):
if(!in_array($rol->rolID, $roles)):
Usuarios::eliminarRol($rol->rolID, $UsuariosApi->usuarioID);
endif;
endforeach;
}
}
/**
* Muestra el Formulario procesado para ser mostrado al usuario.
* Se le envian unos datos inciales para la carga de la vista, y
* se envia los datos del UsuariosApi cuando se esta editando.
* @return HTML Vista del Formulario de UsuariosApi
*/
private function mostrarFormulario($UsuariosApi = null) {
Vistas::mostrar('usuarios', 'usuariosapi/form-UsuariosApi', array(
'Aplicaciones' => Aplicaciones::todas(),
'Operaciones' => ControlOperaciones::todos(),
'Roles' => Roles::todos(),
'UsuariosApi' => $UsuariosApi
));
}
/**
* Guardar Datos Recibidos, bien sea como un registro nuevo, o como una actualización.
* Despues imprime las Respuesta del Sistema a la ejecución de la operacion
*/
function guardarDatos() {
if (empty($this->usuarioID)) {
echo $this->guardarNuevo();
} else {
echo $this->guardarCambios();
}
}
}
// Generado el 2017-12-18 10:18:50:000000