<?php
/**
* Descripción del Controlador UsuariosColaborador
*
* UsuariosColaborador
*
* 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 201712191136
* @link http://sicam.ccsm.org.co/docs/usuarios/UsuariosColaborador
*/
class UsuariosColaboradorControlador extends Controladores {
/**
* Vista que se encarga de mostrar todos los detalles/datos asociados a
* los registros de UsuariosColaborador.
* @return HTML Datos e información de UsuariosColaborador.
*/
function verDetalles() {
$usuario = Usuarios::colaborador($this->usuarioID);
Vistas::mostrar('usuarios', 'usuarioscolaborador/ver-detalles', array('usuario' => $usuario));
}
/**
* Vista que se encarga de organizar la forma de presentar
* los registros de UsuariosColaborador al usuario.
* @return HTML Listado de UsuariosColaborador.
*/
function mostrarTodos() {
Vistas::mostrar('usuarios', 'usuarioscolaborador/lst-todos');
}
/**
* Permite mostrar en forma de tabla los registros de UsuariosColaborador.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaListado() {
$UsuariosColaboradores = UsuariosColaborador::todos();
Vistas::mostrar('usuarios', 'usuarioscolaborador/tbl-todos',
array( 'UsuariosColaboradores' => $UsuariosColaboradores)
);
}
/**
* Responde con el formulario de UsuariosColaborador vacio, solo datos necesarios.
* LLama a la función que devuleve el formulario pero
* sin enviarle los datos de UsuariosColaborador.
* Esta función se crea para poder gestionar el permiso de NUEVO UsuariosColaborador
* @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() {
$usuarioNOMBRE = empty($this->usuarioNOMBRE) ? null : $this->usuarioNOMBRE;
if(empty(Usuarios::datoPorNombre($usuarioNOMBRE))){
$personaID = $this->datosGeneralesPersonas();
if($personaID>0){
$actualizar = $this->datosContactoPersonas();
$personaIDENTIFICACION = empty($this->personaIDENTIFICACION) ? null : $this->personaIDENTIFICACION;
$cargoID = empty($this->cargoID) ? null : $this->cargoID;
$puestoTrabajoID = empty($this->puestoTrabajoID) ? null : $this->puestoTrabajoID;
$tiposColaboradoresID = empty($this->tiposColaboradoresID) ? null : $this->tiposColaboradoresID;
$colaboradorESTADO = empty($this->colaboradorESTADO) ? null : $this->colaboradorESTADO;
$colaborador = Colaboradores::porCedula($personaIDENTIFICACION);
$cargo = Cargos::datos($cargoID);
if(!empty($colaborador)):
$colaboradorID = Colaboradores::porCedula($personaIDENTIFICACION)->colaboradorID;
else:
$colaboradorID = Colaboradores::guardar($cargoID, $personaID,
$puestoTrabajoID, $tiposColaboradoresID,
$usuarioNOMBRE, $colaboradorESTADO, $cargo->cargoPERMISOS);
endif;
$this->cargarFoto($personaIDENTIFICACION ,$colaboradorID);
$usuarioCLAVE = empty($this->usuarioCLAVE) ? null : $this->usuarioCLAVE;
$usuariosESTADO = empty($this->usuariosESTADO) ? null : $this->usuariosESTADO;
$usuarioADMINISTRADOR = empty($this->usuarioADMINISTRADOR) ? null : $this->usuarioADMINISTRADOR;
$creadoID = UsuariosColaborador::guardar($colaboradorID, $usuarioNOMBRE, $usuarioCLAVE, $usuariosESTADO, $usuarioADMINISTRADOR);
if ($creadoID) {
$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("", UsuariosColaborador::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 UsuariosColaborador. Si vuelve a suceder, contacte con el Centro TICS.");
}
}else{
return RespuestasSistema::error("No se pudo CREAR La Persona. Si vuelve a suceder, contacte con el Centro TICS.");
}
}
else{
return RespuestasSistema::error("El nombre de usuario ya se encuentra registrado");
}
}
private function cargarFoto($personaIDENTIFICACION ,$colaboradorID){
$urlMin = null;
$carpetaFOTO = 'colaboradores/fotos/';
if( !empty($this->colaboradorFOTO) ){
$nombreArchivo = $personaIDENTIFICACION;
$archivoMovido = Archivos::moverArchivoRecibido(
$this->colaboradorFOTO, DIR_ARCHIVOS.$carpetaFOTO, $nombreArchivo );
$urlMin = URL_ARCHIVOS.$carpetaFOTO.$nombreArchivo;
if(is_null($urlMin)) $urlMin = 'archivo/colaboradores/fotos/sin-foto.png';
Colaboradores::actualizarFOTO($urlMin, $colaboradorID);
}
}
private function datosGeneralesPersonas(){
$tipoIdentificacionID = empty($this->tipoIdentificacionID) ? null : $this->tipoIdentificacionID;
$personaIDENTIFICACION = empty($this->personaIDENTIFICACION) ? null : $this->personaIDENTIFICACION;
$personaNOMBRES = empty($this->personaNOMBRES) ? null : $this->personaNOMBRES;
$personaAPELLIDOS = empty($this->personaAPELLIDOS) ? null : $this->personaAPELLIDOS;
$personaFCHNACIMIENTO = empty($this->personaFCHNACIMIENTO) ? null : $this->personaFCHNACIMIENTO;
$personaSEXO = empty($this->personaSEXO) ? null : $this->personaSEXO;
$personaNOMBRECOMPLETO = $personaNOMBRES . " " . $personaAPELLIDOS;
return GestionPersonas::datosGenerales('1', $tipoIdentificacionID, $personaIDENTIFICACION, $personaNOMBRECOMPLETO, $personaNOMBRES, $personaAPELLIDOS, $personaFCHNACIMIENTO, $personaSEXO);
}
private function datosContactoPersonas(){
$personaIDENTIFICACION = empty($this->personaIDENTIFICACION) ? null : $this->personaIDENTIFICACION;
$telefonoNUMEROFIJO = empty($this->telefonoNUMEROFIJO) ? null : $this->telefonoNUMEROFIJO;
$telefonoNUMEROCELULAR = empty($this->telefonoNUMEROCELULAR) ? null : $this->telefonoNUMEROCELULAR;
$direccionNOMENCLATURA = empty($this->direccionNOMENCLATURA) ? null : $this->direccionNOMENCLATURA;
$correoDIRECCION = empty($this->correoDIRECCION) ? null : $this->correoDIRECCION;
$actualizacion = GestionPersonas::datosContacto($personaIDENTIFICACION, $telefonoNUMEROFIJO, $correoDIRECCION, null, $telefonoNUMEROCELULAR, $direccionNOMENCLATURA);
}
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 UsuariosColaborador 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 UsuariosColaborador
* @return HTML Formulario con los datos del UsuariosColaborador a editar.
*/
function mostrarFormularioEditar() {
$UsuariosColaboradores = UsuariosColaborador::datos($this->UsuariosColaboradorID);
$this->mostrarFormulario($UsuariosColaboradores);
}
/**
* Función que toma los datos enviados y actualiza el registro
* @return RespuestasSistema
*/
private function guardarCambios() {
$UsuariosColaborador = UsuariosColaborador::datos($this->usuarioID);
$usuarioNOMBRE = empty($this->usuarioNOMBRE) ? null : $this->usuarioNOMBRE;
if(!empty(Usuarios::datoPorNombre($usuarioNOMBRE))){
$actualizado = UsuariosColaborador::actualizar(
$this->usuarioID, $this->usuarioNOMBRE,
$this->usuarioADMINISTRADOR
);
}
$personaID = $this->datosGeneralesPersonas();
$actualizar = $this->datosContactoPersonas();
$cargoID = empty($this->cargoID) ? null : $this->cargoID;
$puestoTrabajoID = empty($this->puestoTrabajoID) ? null : $this->puestoTrabajoID;
$tiposColaboradoresID = empty($this->tiposColaboradoresID) ? null : $this->tiposColaboradoresID;
$colaboradorESTADO = empty($this->colaboradorESTADO) ? null : $this->colaboradorESTADO;
$personaIDENTIFICACION = empty($this->personaIDENTIFICACION) ? null : $this->personaIDENTIFICACION;
$colaboradorID = Colaboradores::porCedula($personaIDENTIFICACION)->colaboradorID;
Colaboradores::actualizar($colaboradorID, $cargoID, $puestoTrabajoID, $tiposColaboradoresID, $colaboradorESTADO);
$this->cargarFoto($personaIDENTIFICACION ,$colaboradorID);
if($this->usuarioCLAVE != $UsuariosColaborador->usuarioCLAVE):
Usuarios::actualizarClave($this->usuarioCLAVE,$this->usuarioID);
endif;
if($this->usuariosESTADO == 'ACTIVO' and $UsuariosColaborador->usuarioESTADO != 'ACTIVO' ):
Usuarios::activar($this->usuarioID);
endif;
if($this->usuariosESTADO == 'DESACTIVO' and $UsuariosColaborador->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($UsuariosColaborador, $this->operacionesID);
else:
$this->eliminarPermiso($UsuariosColaborador);
endif;
if(!empty($this->rolesID)):
$this->eliminarRol($UsuariosColaborador, $this->rolesID);
else:
$this->eliminarRol($UsuariosColaborador);
endif;
return RespuestasSistema::exito("", UsuariosColaborador::datos($this->usuarioID));
}
private function eliminarPermiso($UsuariosColaborador, $operaciones = array()){
if(isset($UsuariosColaborador->permisos) and !empty($UsuariosColaborador->permisos)){
foreach($UsuariosColaborador->permisos as $permiso):
if(!in_array($permiso->operacionID, $operaciones)):
Usuarios::eliminarPermiso($permiso->operacionID, $UsuariosColaborador->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 UsuariosColaborador cuando se esta editando.
* @return HTML Vista del Formulario de UsuariosColaborador
*/
private function mostrarFormulario($UsuariosColaborador = null) {
Vistas::mostrar('usuarios', 'usuarioscolaborador/form-UsuariosColaborador', array(
'Operaciones' => ControlOperaciones::todos(),
'Roles' => Roles::todos(),
'Usuario' => $UsuariosColaborador
));
}
/**
* 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-19 11:36:01:000000