<?php
/**
* Descripción del Controlador Roles
*
* Rol
*
* 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 201712040605
* @link http://sicam.ccsm.org.co/docs/usuarios/Roles
*/
class RolesControlador extends Controladores {
/**
* Vista que se encarga de mostrar todos los detalles/datos asociados a
* los registros de Roles.
* @return HTML Datos e información de Roles.
*/
function verDetalles() {
$Rol = Roles::datos($this->rolID);
Vistas::mostrar('usuarios', 'roles/ver-detalles', array('Rol' => $Rol));
}
/**
* Vista que se encarga de organizar la forma de presentar
* los registros de Roles al usuario.
* @return HTML Listado de Roles.
*/
function mostrarTodos() {
Vistas::mostrar('usuarios', 'roles/lst-todos');
}
/**
* Permite mostrar en forma de tabla los registros de Roles.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaListado() {
$Roles = Roles::todos();
Vistas::mostrar('usuarios', 'roles/tbl-todos',
array( 'Roles' => $Roles)
);
}
/**
* Permite mostrar en forma de tabla los registros de Roles.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaPermisos() {
$ControlOperaciones = null;
if(!empty($this->rolID)){
$ControlOperaciones = Roles::permisos($this->rolID);
}
Vistas::mostrar('administrador', 'controloperaciones/tbl-todos',
array( 'ControlOperaciones' => $ControlOperaciones)
);
}
/**
* Responde con el formulario de Roles vacio, solo datos necesarios.
* LLama a la función que devuleve el formulario pero
* sin enviarle los datos de Roles.
* Esta función se crea para poder gestionar el permiso de NUEVO Roles
* @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 = Roles::guardar($this->rolCODIGO, $this->rolTITULO,
$this->rolDESCRIPCION);
if ($creadoID) {
if($this->asignarPermiso($creadoID)){
return RespuestasSistema::exito("", Roles::datos($creadoID));
}else{
return RespuestasSistema::fallo("Se creo el rol pero hubo error al momento de asignar permiso, contacte con el Centro TICS.");
}
} else {
return RespuestasSistema::fallo("No se pudo CREAR el nuevo Rol. Si vuelve a suceder, contacte con el Centro TICS.");
}
}
/**
* Recibe el ID del Roles 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 Roles
* @return HTML Formulario con los datos del Roles a editar.
*/
function mostrarFormularioEditar() {
$Roles = Roles::datos($this->rolID);
$this->mostrarFormulario($Roles);
}
/**
* Función que toma los datos enviados y actualiza el registro
* @return RespuestasSistema
*/
private function guardarCambios() {
$Roles = Roles::datosCompletos($this->rolID);
$actualizado = Roles::actualizar(
$this->rolID,
$this->rolCODIGO, $this->rolTITULO,
$this->rolDESCRIPCION
);
if ($actualizado) {
$this->asignarPermiso($this->rolID);
if(!empty($this->operacionesID)):
$this->eliminarPermiso($Roles, $this->operacionesID);
else:
$this->eliminarPermiso($Roles);
endif;
return RespuestasSistema::exito("", Roles::datos($this->rolID));
} else {
return RespuestasSistema::fallo("No se actualizó el Roles. Verifique los datos, o contacte al Centro TICS.");
}
}
private function asignarPermiso($rolID){
$operacionTotal = 0;
if(!empty($this->operacionID)){
foreach($this->operacionID as $operacion):
$permiso = Roles::asignarPermiso($operacion, $rolID);
if(!empty($permiso) and $permiso){
$operacionTotal++;
}
endforeach;
if($operacionTotal!=count($this->operacionID)){
return false;
}
}
return true;
}
private function eliminarPermiso($Roles, $operaciones = array()){
if(isset($Roles->permisos) and !empty($Roles->permisos)){
foreach($Roles->permisos as $permiso):
if(!in_array($permiso->operacionID, $operaciones)):
Roles::eliminarPermiso($permiso->operacionRolID);
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 Roles cuando se esta editando.
* @return HTML Vista del Formulario de Roles
*/
private function mostrarFormulario($Roles = null) {
$operaciones = ControlOperaciones::todos();
Vistas::mostrar('usuarios', 'roles/form-Roles', array(
'operaciones' => $operaciones,
'Roles' => $Roles
));
}
/**
* 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->rolID)) {
echo $this->guardarNuevo();
} else {
echo $this->guardarCambios();
}
}
/**
* Eliminar un registro de la base de datos.
* Esta operación es irreversible.
* Si se tiene la referencia integral activada, la base de datos no va
* dejar eliminar si tiene otros registros asociados.
* @return RespuestasSistema Resultado de la Operacion que se envia al cliente
*/
function eliminar() {
$RolesParaEliminar = $this->checkRoles;
if (count($RolesParaEliminar)) {
$n = 0;
foreach ($RolesParaEliminar as $rolELIMINAR):
$Roles = Roles::datosCompletos($rolELIMINAR);
$this->eliminarPermiso($Roles);
if (Roles::eliminar($rolELIMINAR)) {
$n++;
}
endforeach;
if ($n == 0) {
echo RespuestasSistema::error('No fue posible ELIMINAR. Contacte al centro TICS.');
} else if ($n == count($RolesParaEliminar)) {
echo RespuestasSistema::exito('Se realizó la OPERACION [ELIMINAR] exitosamente!');
} else {
echo RespuestasSistema::error('Hubo un error al [ELIMINAR] alguno de los registros. Verifica los datos, o contacta al centro TICS.');
}
} else {
echo RespuestasSistema::error('No llegarón los datos para [ELIMINAR]. Contacta al centro TICS');
}
}
/**
* Cambiar el estado de un registro de la base de datos.
* Esta operacion cambia a estado ACTIVO el registro.
* @return RespuestasSistema Resultado de la Operacion
*/
function reactivar() {
$RolesParaActivar = $this->rolSELECCIONADOS;
if (count($RolesParaActivar)) {
$n = 0;
foreach ($RolesParaActivar as $rolACTIVAR):
if (Roles::activar($rolACTIVAR)) {
$n++;
}
endforeach;
if ($n == 0) {
echo RespuestasSistema::error('No fue posible REACTIVAR. Contacte al centro TICS.');
} else if ($n == count($RolesParaActivar)) {
echo RespuestasSistema::exito('Se realizó la OPERACION [REACTIVAR] exitosamente!');
} else {
echo RespuestasSistema::error('Hubo un error al [REACTIVAR] alguno de los registros. Verifica los datos, o contacta al centro TICS.');
}
} else {
echo RespuestasSistema::error('No llegarón los datos para [REACTIVAR]. Contacta al centro TICS');
}
}
/**
* Cambiar el estado de un registro de la base de datos.
* Esta operacion cambia a estado DESACTIVO / SUSPENDIDO / CANCELADO el registro.
* @return RespuestasSistema Resultado de la Operacion
*/
function desactivar() {
$RolesParaDesactivar = $this->rolSELECCIONADOS;
if (count($RolesParaDesactivar)) {
$n = 0;
foreach ($RolesParaDesactivar as $rolDESACTIVAR):
if (Roles::desactivar($rolDESACTIVAR)) {
$n++;
}
endforeach;
if ($n == 0) {
echo RespuestasSistema::error('No fue posible DESACTIVAR. Contacte al centro TICS.');
} else if ($n == count($RolesParaDesactivar)) {
echo RespuestasSistema::exito('Se realizó la OPERACION [DESACTIVAR] exitosamente!');
} else {
echo RespuestasSistema::error('Hubo un error al [DESACTIVAR] alguno de los registros. Verifica los datos, o contacta al centro TICS.');
}
} else {
echo RespuestasSistema::error('No llegarón los datos para [DESACTIVAR]. Contacta al centro TICS');
}
}
function obtenerDatos(){
$rol = Roles::datos($this->rolID);
if(!empty($rol)):
echo RespuestasSistema::exito('', $rol);
else:
echo RespuestasSistema::fallo('EL ROL NO EXITE EN EL SISTEMA');
endif;
}
}
// Generado el 2017-12-04 06:05:56:000000