Пример #1
0
        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);
        }
Пример #4
0
        /// <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));
        }
Пример #8
0
        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));
        }
Пример #9
0
        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);
        }