public ViewResult ViewCrud(DescriptorDeCrud <TElemento> descriptor) { if (NegociosDeSe.NegocioDeUnDto(typeof(TElemento).FullName) != enumNegocio.No_Definido) { descriptor.negocioDtm = GestorDeNegocios.LeerNegocio(GestorDeElementos.Contexto, NegociosDeSe.NegocioDeUnDto(typeof(TElemento).FullName)); } var gestorDeVista = GestorDeVistaMvc.Gestor(GestorDeElementos.Contexto, GestorDeElementos.Mapeador); var vista = gestorDeVista.LeerVistaMvc($"{descriptor.Controlador}.{descriptor.Vista}"); descriptor.Creador.AbrirEnModal = vista.MostrarEnModal; descriptor.Editor.AbrirEnModal = vista.MostrarEnModal; ApiController.CumplimentarDatosDeUsuarioDeConexion(GestorDeElementos.Contexto, GestorDeElementos.Mapeador, HttpContext); descriptor.GestorDeUsuario = GestorDeUsuarios.Gestor(GestorDeElementos.Contexto, GestorDeElementos.Mapeador); descriptor.UsuarioConectado = descriptor.GestorDeUsuario.LeerRegistroCacheado(nameof(UsuarioDtm.Login), DatosDeConexion.Login, errorSiNoHay: true, errorSiHayMasDeUno: true, aplicarJoin: false); var destino = $"{(descriptor.RutaBase.IsNullOrEmpty() ? "" : $"../{descriptor.RutaBase}/")}{descriptor.Vista}";
public static void Exportacion(EntornoDeTrabajo entorno) { Dictionary <string, object> parametros = entorno.TrabajoDeUsuario.Parametros.ToDiccionarioDeParametros(); if (!parametros.ContainsKey(nameof(ElementoDto))) { GestorDeErrores.Emitir("No se ha indicado el ElementoDto de exportación"); } if (!parametros.ContainsKey(nameof(Registro))) { GestorDeErrores.Emitir("No se ha indicado el Registro de exportación"); } var gestor = NegociosDeSe.CrearGestor(entorno.contextoDelProceso, parametros[nameof(Registro)].ToString(), parametros[nameof(ElementoDto)].ToString()); var cantidad = !parametros.ContainsKey(ltrFiltros.cantidad) ? -1 : parametros[ltrFiltros.cantidad].ToString().Entero(); var posicion = !parametros.ContainsKey(ltrFiltros.posicion) ? 0 : parametros[ltrFiltros.posicion].ToString().Entero(); List <ClausulaDeFiltrado> filtros = !parametros.ContainsKey(ltrFiltros.filtro) || parametros[ltrFiltros.filtro].ToString().IsNullOrEmpty() ? new List <ClausulaDeFiltrado>() : JsonConvert.DeserializeObject <List <ClausulaDeFiltrado> >(parametros["filtro"].ToString()); List <ClausulaDeOrdenacion> orden = !parametros.ContainsKey(ltrFiltros.orden) || parametros[ltrFiltros.orden].ToString().IsNullOrEmpty() ? new List <ClausulaDeOrdenacion>() : JsonConvert.DeserializeObject <List <ClausulaDeOrdenacion> >(parametros["orden"].ToString()); var opcionesDeMapeo = new Dictionary <string, object>(); opcionesDeMapeo.Add(ltrParametrosDto.DescargarGestionDocumental, false); Type clase = gestor.GetType(); MethodInfo metodo = clase.GetMethod(nameof(GestorDeElementos <ContextoSe, Registro, ElementoDto> .LeerElementos)); dynamic elementos = metodo.Invoke(gestor, new object[] { posicion, cantidad, filtros, orden, opcionesDeMapeo }); var ficheroConRuta = GenerarExcel(entorno.contextoDelProceso, elementos); GestorDeCorreos.CrearCorreoPara(entorno.contextoDelProceso , new List <string> { parametros[ltrFltCorreosDto.receptores].ToString() } , "Exportación solicitada" , "Se le adjunta el fichero con la exportación solicitada" , new List <TipoDtoElmento>() , new List <string>() { ficheroConRuta } ); }
public bool NegocioActivo(enumNegocio negocio) { if (negocio == enumNegocio.No_Definido) { return(true); } if (!NegociosDeSe.UsaSeguridad(negocio)) { return(true); } var registro = LeerRegistroCacheado(nameof(NegocioDtm.Nombre), negocio.ToNombre(), false, true, false); if (registro == null) { GestorDeErrores.Emitir($"El negocio de {NegociosDeSe.ToNombre(negocio)} no está definido, y se ha indicado por programa que usa seguridad, defínalo como negocio"); } return(registro.Activo); }
/// <summary> /// END-POINT: Desde CrudBase.ts /// llama al metodo del controlador CargarLista y en función de la claseElemento obtiene que elementos ha de cargar /// </summary> /// <param name="claseElemento">Indica la lista de elementos que se quiere cargar</param> /// <returns></returns> public JsonResult epCargarLista(string claseElemento, string negocio, string filtro) { var r = new Resultado(); dynamic elementos; try { ApiController.CumplimentarDatosDeUsuarioDeConexion(GestorDeElementos.Contexto, GestorDeElementos.Mapeador, HttpContext); List <ClausulaDeFiltrado> filtros = filtro == null ? new List <ClausulaDeFiltrado>() : JsonConvert.DeserializeObject <List <ClausulaDeFiltrado> >(filtro); elementos = CargarLista(claseElemento, NegociosDeSe.ToEnumerado(negocio, nullValido: true), filtros); r.Datos = elementos; r.Estado = enumEstadoPeticion.Ok; } catch (Exception e) { ApiController.PrepararError(e, r, "No se ha podido leer los datos."); } return(new JsonResult(r)); }
public bool TienePermisos(UsuarioDtm usuarioConectado, enumModoDeAccesoDeDatos permisosNecesarios, enumNegocio negocio) { if (!NegociosDeSe.UsaSeguridad(negocio)) { return(true); } var estaActivo = NegocioActivo(negocio); if (!estaActivo && (permisosNecesarios == enumModoDeAccesoDeDatos.Administrador || permisosNecesarios == enumModoDeAccesoDeDatos.Gestor)) { return(false); } if (usuarioConectado.EsAdministrador) { return(true); } if (negocio == enumNegocio.Variable) { switch (permisosNecesarios) { case enumModoDeAccesoDeDatos.Consultor: return(true); case enumModoDeAccesoDeDatos.Administrador: return(Contexto.DatosDeConexion.EsAdministrador); case enumModoDeAccesoDeDatos.Gestor: return(Contexto.DatosDeConexion.EsAdministrador); default: throw new Exception($"Al elemto variable no se le puede acceder con el tipo de permiso: '{permisosNecesarios}'"); } } var negocioDtm = LeerRegistroCacheado(nameof(NegocioDtm.Nombre), negocio.ToNombre(), errorSiNoHay: true, errorSiHayMasDeUno: true, aplicarJoin: false); var cache = ServicioDeCaches.Obtener($"{nameof(GestorDeNegocios)}.{nameof(TienePermisos)}"); var indice = $"{usuarioConectado.Id}.{negocioDtm.Id}.{permisosNecesarios}"; if (!cache.ContainsKey(indice)) { var gestor = GestorDePermisosDeUnUsuario.Gestor(Contexto, Mapeador); var filtros = new List <ClausulaDeFiltrado> { new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdUsuario), Criterio = CriteriosDeFiltrado.igual, Valor = usuarioConectado.Id.ToString() } }; if (permisosNecesarios == enumModoDeAccesoDeDatos.Administrador) { filtros.Add(new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.igual, Valor = negocioDtm.IdPermisoDeAdministrador.ToString() }); } if (permisosNecesarios == enumModoDeAccesoDeDatos.Gestor) { filtros.Add(new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.esAlgunoDe, Valor = $"{negocioDtm.IdPermisoDeGestor},{negocioDtm.IdPermisoDeAdministrador}" }); } if (permisosNecesarios == enumModoDeAccesoDeDatos.Consultor) { filtros.Add(new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.esAlgunoDe, Valor = $"{negocioDtm.IdPermisoDeConsultor},{negocioDtm.IdPermisoDeGestor},{negocioDtm.IdPermisoDeAdministrador}" }); } cache[indice] = gestor.Contar(filtros) > 0; } return((bool)cache[indice]); }
protected virtual enumModoDeAccesoDeDatos LeerModoDeAccesoAlElemento(TElemento elemento) { return(GestorDeNegocios.LeerModoDeAccesoAlElemento(Contexto, NegociosDeSe.NegocioDeUnDto(elemento.GetType().FullName), elemento.Id)); }
//END-POINT: Desde CrudMantenimiento.ts /// <summary> /// Devuelve el modo de acceso a los datos del negocio del usuario conectado /// </summary> /// <param name="negocio">negocio del que se quiere saber el modo de acceso del usuario conectado</param> /// <returns>modo de acceso a los datos del negocio</returns> public JsonResult epLeerModoDeAccesoAlNegocio(string negocio) { var r = new Resultado(); try { ApiController.CumplimentarDatosDeUsuarioDeConexion(Contexto, Mapeador, HttpContext); var modoDeAcceso = LeerModoAccesoAlNegocio(DatosDeConexion.IdUsuario, NegociosDeSe.ToEnumerado(negocio)); r.ModoDeAcceso = modoDeAcceso.Render(); r.consola = $"El usuario {DatosDeConexion.Login} tiene permisos de {modoDeAcceso}"; r.Estado = enumEstadoPeticion.Ok; } catch (Exception e) { ApiController.PrepararError(e, r, $"Error al obtener los permisos sobre el negocio {negocio} para el usuario {DatosDeConexion.Login}."); } return(new JsonResult(r)); }
public JsonResult epLeerModoDeAccesoAlElemento(string negocio, int id) { var r = new Resultado(); try { var modoDeAcceso = enumModoDeAccesoDeDatos.SinPermiso; ApiController.CumplimentarDatosDeUsuarioDeConexion(GestorDeElementos.Contexto, GestorDeElementos.Mapeador, HttpContext); var opcionesDeMapeo = new Dictionary <string, object>(); opcionesDeMapeo.Add(ltrParametrosDto.DescargarGestionDocumental, false); var elemento = GestorDeElementos.LeerElementoPorId(id, opcionesDeMapeo); modoDeAcceso = GestorDeElementos.LeerModoDeAccesoAlElemento(DatosDeConexion.IdUsuario, NegociosDeSe.ToEnumerado(negocio), id); if (modoDeAcceso == enumModoDeAccesoDeDatos.SinPermiso) { GestorDeErrores.Emitir("El usuario conectado no tiene acceso al elemento solicitado"); } r.Datos = elemento; r.ModoDeAcceso = modoDeAcceso.Render(); r.consola = $"El usuario {DatosDeConexion.Login} tiene permisos de {modoDeAcceso} sobre el elemento seleccionado"; r.Estado = enumEstadoPeticion.Ok; } catch (Exception e) { ApiController.PrepararError(e, r, $"Error al obtener los permisos sobre el elemento {id} del {negocio} para el usuario {DatosDeConexion.Login}."); } return(new JsonResult(r)); }
private List <Dictionary <string, object> > ElementosLeidos(List <TElemento> elementos) { var listaDeElementos = new List <Dictionary <string, object> >(); if (elementos.Count > 0) { PropertyInfo[] propiedades = elementos[0].GetType().GetProperties(); foreach (TElemento elemento in elementos) { var registro = new Dictionary <string, object>(); foreach (PropertyInfo propiedad in propiedades) { object valor = elemento.GetType().GetProperty(propiedad.Name).GetValue(elemento); registro[propiedad.Name] = valor == null ? "" : valor; } var ma = GestorDeElementos.LeerModoDeAccesoAlElemento(DatosDeConexion.IdUsuario, NegociosDeSe.NegocioDeUnDto(elemento.GetType().FullName), registro[nameof(ElementoDto.Id)].ToString().Entero()); registro[nameof(Resultado.ModoDeAcceso)] = ma.Render(); listaDeElementos.Add(registro); } } return(listaDeElementos); }