public DescriptorDePuestoDeTrabajo(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , nameof(PuestoDeTrabajoController), nameof(PuestoDeTrabajoController.CrudPuestoDeTrabajo), modo, "Seguridad")
        {
            AnadirOpciondeRelacion(Mnt
                                   , controlador: nameof(UsuariosDeUnPuestoController)
                                   , vista: nameof(UsuariosDeUnPuestoController.CrudUsuariosDeUnPuesto)
                                   , relacionarCon: nameof(UsuarioDto)
                                   , navegarAlCrud: DescriptorDeMantenimiento <UsuariosDeUnPuestoDto> .NombreMnt
                                   , nombreOpcion: "Usuarios"
                                   , propiedadQueRestringe: nameof(PuestoDto.Id)
                                   , propiedadRestrictora: nameof(UsuariosDeUnPuestoDto.IdPuesto)
                                   , "Incluir usuarios en el puesto seleccionado");

            AnadirOpciondeRelacion(Mnt
                                   , controlador: nameof(RolesDeUnPuestoController)
                                   , vista: nameof(RolesDeUnPuestoController.CrudRolesDeUnPuesto)
                                   , relacionarCon: nameof(RolDto)
                                   , navegarAlCrud: DescriptorDeMantenimiento <RolesDeUnPuestoDto> .NombreMnt
                                   , nombreOpcion: "Roles"
                                   , propiedadQueRestringe: nameof(PuestoDto.Id)
                                   , propiedadRestrictora: nameof(RolesDeUnPuestoDto.IdPuesto)
                                   , "Añadir roles al puesto seleccionado");

            var modalDePermisos = new ModalDeConsultaDeRelaciones <PuestoDto, PermisosDeUnPuestoDto>(mantenimiento: Mnt
                                                                                                     , tituloModal: "Permisos de un Puesto"
                                                                                                     , crudModal: new DescriptorDePermisosDeUnPuesto(contexto, ModoDescriptor.Consulta)
                                                                                                     , propiedadRestrictora: nameof(PermisosDeUnPuestoDto.IdPuesto));

            var mostrarPermisos = new ConsultarRelaciones(modalDePermisos.IdHtml, () => modalDePermisos.RenderControl(), "Mostrar los permisos de un puesto de trabajo");
            var opcion          = new OpcionDeMenu <PuestoDto>(Mnt.ZonaMenu.Menu, mostrarPermisos, $"Permisos", enumModoDeAccesoDeDatos.Consultor);

            Mnt.ZonaMenu.Menu.Add(opcion);
        }
        public DescriptorDeRolesDeUnPermiso(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , nameof(RolesDeUnPermisoController), nameof(RolesDeUnPermisoController.CrudRolesDeUnPermiso), modo, "Seguridad")
        {
            var fltGeneral = Mnt.Filtro.ObtenerBloquePorEtiqueta(ltrBloques.General);

            new RestrictorDeFiltro <RolesDeUnPermisoDto>(bloque: fltGeneral
                                                         , etiqueta: "Permiso"
                                                         , propiedad: nameof(RolesDeUnPermisoDto.IdPermiso)
                                                         , ayuda: "buscar por permiso"
                                                         , new Posicion {
                fila = 0, columna = 0
            });

            BuscarControlEnFiltro(ltrFiltros.Nombre).CambiarAtributos("Rol", nameof(RolesDeUnPermisoDto.Rol), "Buscar por 'rol'");

            var modalDeRoles = new ModalDeRelacionarElementos <RolesDeUnPermisoDto, RolDto>(mantenimiento: Mnt
                                                                                            , tituloModal: "Seleccione los roles a relacionar"
                                                                                            , crudModal: new DescriptorDeRol(contexto, ModoDescriptor.Relacion)
                                                                                            , propiedadRestrictora: nameof(RolesDeUnPermisoDto.IdPermiso));
            var relacionarRoles = new RelacionarElementos(modalDeRoles.IdHtml, () => modalDeRoles.RenderControl(), "Seleccionar los roles donde incluir el permiso");
            var opcion          = new OpcionDeMenu <RolesDeUnPermisoDto>(Mnt.ZonaMenu.Menu, relacionarRoles, $"Roles", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcion);

            AnadirOpciondeRelacion(Mnt
                                   , controlador: nameof(PuestosDeUnRolController)
                                   , vista: nameof(PuestosDeUnRolController.CrudPuestosDeUnRol)
                                   , relacionarCon: nameof(PuestoDto)
                                   , navegarAlCrud: DescriptorDeMantenimiento <PuestosDeUnRolDto> .NombreMnt
                                   , nombreOpcion: "Puestos"
                                   , propiedadQueRestringe: nameof(PuestosDeUnRolDto.IdRol)
                                   , propiedadRestrictora: nameof(PuestosDeUnRolDto.IdRol)
                                   , ayuda: "Incluir el rol a los puestos seleccionados");
        }
예제 #3
0
        public DescriptorDeCpsDeUnMunicipio(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , nameof(CpsDeUnMunicipioController), nameof(CpsDeUnMunicipioController.CrudCpsDeUnMunicipio), modo, rutaBase: "Callejero")
        {
            var fltGeneral = Mnt.Filtro.ObtenerBloquePorEtiqueta(ltrBloques.General);

            new RestrictorDeFiltro <CpsDeUnMunicipioDto>(bloque: fltGeneral
                                                         , etiqueta: "Municipio"
                                                         , propiedad: nameof(CpsDeUnMunicipioDto.IdMunicipio)
                                                         , ayuda: "buscar por municipio"
                                                         , new Posicion {
                fila = 0, columna = 0
            });

            BuscarControlEnFiltro(ltrFiltros.Nombre).CambiarAtributos("Código postal", nameof(CpsDeUnMunicipioDto.CodigoPostal), "Buscar por 'código postal'");

            var modalDePuestos = new ModalDeRelacionarElementos <CpsDeUnMunicipioDto, CodigoPostalDto>(mantenimiento: Mnt
                                                                                                       , tituloModal: "Seleccione los códigos postales a relacionar"
                                                                                                       , crudModal: new DescriptorDeCodigosPostales(contexto, ModoDescriptor.Relacion)
                                                                                                       , propiedadRestrictora: nameof(CpsDeUnMunicipioDto.IdMunicipio));
            var relacionarCps = new RelacionarElementos(modalDePuestos.IdHtml, () => modalDePuestos.RenderControl(), "Añadir códigos postales a la municipio");
            var opcion        = new OpcionDeMenu <CpsDeUnMunicipioDto>(Mnt.ZonaMenu.Menu, relacionarCps, $"C.P.", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcion);

            Mnt.OrdenacionInicial = $"{nameof(CpsDeUnMunicipioDto.CodigoPostal)}:CodigoPostal.Codigo:{enumModoOrdenacion.ascendente.Render()}";
        }
예제 #4
0
        internal void AnadirOpcionDeCancelarEdicion()
        {
            var cancelarEdicion = new CancelarEdicion();
            var opcion          = new OpcionDeMenu <TElemento>(Menu, cancelarEdicion, $"Cerrar", enumModoDeAccesoDeDatos.Consultor);

            Menu.Add(opcion);
        }
예제 #5
0
        internal void AnadirOpcionDeEnviareMail()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeEnviar)))
            {
                return;
            }

            var enviarElementos = new EnviarElementos();

            if (Mnt.Crud.Negocio == enumNegocio.No_Definido)
            {
                enviarElementos.NumeroMaximoEnLaMultiseleccion = 1;
            }
            else
            {
                if (Mnt.Crud.Negocio.EsUnNegocio())
                {
                    //Todo--> añadir variable de correos a enviar y variables de entidades de negocio
                    var negocioDtm = GestorDeNegocios.LeerNegocio(Mnt.Crud.Contexto, Mnt.Crud.Negocio);
                }

                enviarElementos.NumeroMaximoEnLaMultiseleccion = 5;
            }

            var opcion = new OpcionDeMenu <TElemento>(Menu, enviarElementos, $"Enviar", enumModoDeAccesoDeDatos.Consultor);

            Menu.Add(opcion);
        }
        public DescriptorDeUsuariosDeUnPuesto(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , nameof(UsuariosDeUnPuestoController), nameof(UsuariosDeUnPuestoController.CrudUsuariosDeUnPuesto), modo, "Seguridad")
        {
            var fltGeneral = Mnt.Filtro.ObtenerBloquePorEtiqueta(ltrBloques.General);

            new RestrictorDeFiltro <UsuariosDeUnPuestoDto>(bloque: fltGeneral
                                                           , etiqueta: "Puesto"
                                                           , propiedad: nameof(UsuariosDeUnPuestoDto.IdPuesto)
                                                           , ayuda: "buscar por puesto"
                                                           , new Posicion {
                fila = 0, columna = 0
            });

            BuscarControlEnFiltro(ltrFiltros.Nombre).CambiarAtributos("Usuario", nameof(UsuariosDeUnPuestoDto.Usuario), "Buscar por 'usuario'");

            var modalDePuestos = new ModalDeRelacionarElementos <UsuariosDeUnPuestoDto, UsuarioDto>(mantenimiento: Mnt
                                                                                                    , tituloModal: "Seleccione los usuarios a relacionar"
                                                                                                    , crudModal: new DescriptorDeUsuario(contexto, ModoDescriptor.Relacion)
                                                                                                    , propiedadRestrictora: nameof(UsuariosDeUnPuestoDto.IdPuesto));
            var relacionarPuestos = new RelacionarElementos(modalDePuestos.IdHtml, () => modalDePuestos.RenderControl(), "Añadir usuarios al puesto");
            var opcion            = new OpcionDeMenu <UsuariosDeUnPuestoDto>(Mnt.ZonaMenu.Menu, relacionarPuestos, $"Usuarios", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcion);
        }
예제 #7
0
        internal void AnadirOpcionDeModificarElemento()
        {
            var modificarElemento = new ModificarElemento();
            var opcion            = new OpcionDeMenu <TElemento>(Menu, modificarElemento, $"Modificar", enumModoDeAccesoDeDatos.Gestor);

            Menu.Add(opcion);
        }
예제 #8
0
        internal void AnadirOpcionDeNuevoElemento()
        {
            var nuevoElemento = new NuevoElemento();
            var opcion        = new OpcionDeMenu <TElemento>(Menu, nuevoElemento, $"Crear", enumModoDeAccesoDeDatos.Gestor);

            Menu.Add(opcion);
        }
        public DescriptorDePermisosDeUnRol(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , nameof(PermisosDeUnRolController), nameof(PermisosDeUnRolController.CrudPermisosDeUnRol), modo, "Seguridad")
        {
            var fltGeneral = Mnt.Filtro.ObtenerBloquePorEtiqueta(ltrBloques.General);

            new RestrictorDeFiltro <PermisosDeUnRolDto>(bloque: fltGeneral
                                                        , etiqueta: "Rol"
                                                        , propiedad: nameof(PermisosDeUnRolDto.IdRol)
                                                        , ayuda: "buscar por rol"
                                                        , new Posicion {
                fila = 0, columna = 0
            });

            BuscarControlEnFiltro(ltrFiltros.Nombre).CambiarAtributos("Permiso", nameof(PermisosDeUnRolDto.Permiso), "Buscar por 'permiso'");

            //Añade una opcion de menú, para relacionar permisos
            //- Abre una modal de selección
            //- Le pasa el id del elemento con el que se va a relacionar (para no mostrar los ya relacionados)
            //- Al aceptar --> llama al negocio y relaciona los id's
            //- Al cerrar no hace nada
            var modalDePermisos = new ModalDeRelacionarElementos <PermisosDeUnRolDto, PermisoDto>(mantenimiento: Mnt
                                                                                                  , tituloModal: "Seleccione los permisos a relacionar"
                                                                                                  , crudModal: new DescriptorDePermiso(Contexto, ModoDescriptor.Relacion)
                                                                                                  , propiedadRestrictora: nameof(PermisosDeUnRolDto.IdRol));

            var relacionarPermisos = new RelacionarElementos(modalDePermisos.IdHtml, () => modalDePermisos.RenderControl(), "Seleccionar permisos a relacionar con el rol");
            var opcion             = new OpcionDeMenu <PermisosDeUnRolDto>(Mnt.ZonaMenu.Menu, relacionarPermisos, $"Permisos", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcion);
        }
예제 #10
0
        internal void AnadirOpcionDeIrACrear()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeCrear)))
            {
                return;
            }

            var crearElemento = new CrearElemento();
            var opcion        = new OpcionDeMenu <TElemento>(Menu, crearElemento, $"Nuevo", enumModoDeAccesoDeDatos.Gestor);

            Menu.Add(opcion);
        }
예제 #11
0
        internal void AnadirOpcionDeIrAExportar()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeExportar)))
            {
                return;
            }

            var exportarElemento = new ExportarElementos();
            var opcion           = new OpcionDeMenu <TElemento>(Menu, exportarElemento, $"Exportar", enumModoDeAccesoDeDatos.Consultor);

            Menu.Add(opcion);
        }
        internal static void AnadirOpciondeRelacion(DescriptorDeMantenimiento <TElemento> Mnt, string controlador, string vista, string relacionarCon, string navegarAlCrud, string nombreOpcion, string propiedadQueRestringe, string propiedadRestrictora, string ayuda)
        {
            var accionDeRelacion = new AccionDeRelacionarElemenetos(
                urlDelCrud: $@"/{controlador.Replace("Controller", "")}/{vista}?origen=relacion"
                , relacionarCon: relacionarCon
                , nombreDelMnt: navegarAlCrud
                , propiedadQueRestringe: propiedadQueRestringe
                , propiedadRestrictora: propiedadRestrictora
                , ayuda);

            var opcion = new OpcionDeMenu <TElemento>(menu: Mnt.ZonaMenu.Menu, accion: accionDeRelacion, tipoAccion: TipoDeLlamada.Post, titulo: $"{nombreOpcion}", enumModoDeAccesoDeDatos.Gestor, enumCssOpcionMenu.DeElemento);

            Mnt.ZonaMenu.Menu.Add(opcion);
        }
        internal static OpcionDeMenu <TElemento> AnadirOpcionDeDependencias(DescriptorDeMantenimiento <TElemento> Mnt, string controlador, string vista, string datosDependientes, string navegarAlCrud, string nombreOpcion, string propiedadQueRestringe, string propiedadRestrictora, string ayuda)
        {
            var accionDeDependencias = new AccionDeGetionarDatosDependientes(
                urlDelCrud: $@"/{controlador.Replace("Controller", "")}/{vista}?origen=dependencia"
                , datosDependientes: datosDependientes
                , nombreDelMnt: navegarAlCrud
                , propiedadQueRestringe: propiedadQueRestringe
                , propiedadRestrictora: propiedadRestrictora
                , ayuda);

            var opcion = new OpcionDeMenu <TElemento>(menu: Mnt.ZonaMenu.Menu, accion: accionDeDependencias, tipoAccion: TipoDeLlamada.Post, titulo: $"{nombreOpcion}", enumModoDeAccesoDeDatos.Consultor, enumCssOpcionMenu.DeElemento);

            Mnt.ZonaMenu.Menu.Add(opcion);
            return(opcion);
        }
        public DescriptorDeUsuario(ContextoSe contexto, ModoDescriptor modo, string id)
            : base(contexto,
                   controlador: nameof(UsuariosController)
                   , vista: $"{nameof(UsuariosController.CrudUsuario)}"
                   , modo: modo
                   , rutaBase: "Entorno"
                   , id)
        {
            if (modo == ModoDescriptor.Mantenimiento)
            {
                var bloque = new BloqueDeFitro <UsuarioDto>(filtro: Mnt.Filtro, titulo: "Específico", dimension: new Dimension(3, 2));
                new SelectorDeFiltro <UsuarioDto, PermisoDto>(
                    padre: bloque,
                    etiqueta: "Permiso",
                    filtrarPor: UsuariosPor.Permisos,
                    ayuda: "Seleccionar Permiso",
                    posicion: new Posicion(0, 0),
                    paraFiltrar: nameof(PermisoDto.Id),
                    paraMostrar: nameof(PermisoDto.Nombre),
                    crudModal: new DescriptorDePermiso(Contexto, ModoDescriptor.SeleccionarParaFiltrar),
                    propiedadDondeMapear: ltrFiltros.Nombre.ToString());

                new ListasDinamicas <UsuarioDto>(bloque: bloque,
                                                 etiqueta: "Puesto de trabajo",
                                                 filtrarPor: nameof(PuestosDeUnUsuarioDto.IdPuesto),
                                                 ayuda: "usuarios de este puesto",
                                                 seleccionarDe: nameof(PuestoDto),
                                                 buscarPor: nameof(PuestoDto.Nombre),
                                                 mostrarExpresion: nameof(PuestoDto.Nombre),
                                                 criterioDeBusqueda: CriteriosDeFiltrado.contiene,
                                                 posicion: new Posicion(1, 0),
                                                 controlador: nameof(PuestoDeTrabajoController),
                                                 restringirPor: "").LongitudMinimaParaBuscar = 1;


                new ListasDinamicas <UsuarioDto>(bloque: bloque,
                                                 etiqueta: "Roles",
                                                 filtrarPor: nameof(RolesDeUnPuestoDto.IdRol),
                                                 ayuda: "usuarios de un rol",
                                                 seleccionarDe: nameof(RolDto),
                                                 buscarPor: nameof(RolDto.Nombre),
                                                 mostrarExpresion: nameof(RolDto.Nombre),
                                                 criterioDeBusqueda: CriteriosDeFiltrado.contiene,
                                                 posicion: new Posicion(2, 0),
                                                 controlador: nameof(RolController),
                                                 restringirPor: "").LongitudMinimaParaBuscar = 1;



                new ListasDinamicas <UsuarioDto>(bloque: bloque,
                                                 etiqueta: "Permisos",
                                                 filtrarPor: nameof(PermisosDeUnUsuarioDto.IdPermiso),
                                                 ayuda: "permisos de un usuario",
                                                 seleccionarDe: nameof(PermisoDto),
                                                 buscarPor: nameof(PermisoDto.Nombre),
                                                 mostrarExpresion: nameof(PermisoDto.Nombre),
                                                 criterioDeBusqueda: CriteriosDeFiltrado.comienza,
                                                 posicion: new Posicion(3, 0),
                                                 controlador: nameof(PermisosController),
                                                 restringirPor: "").LongitudMinimaParaBuscar = 3;
            }
            BuscarControlEnFiltro(ltrFiltros.Nombre).CambiarAtributos("Usuario", UsuariosPor.NombreCompleto, "Buscar por 'apellido, nombre'");

            var modalDePermisos = new ModalDeConsultaDeRelaciones <UsuarioDto, PermisosDeUnUsuarioDto>(mantenimiento: Mnt
                                                                                                       , tituloModal: "Permisos de un usuario"
                                                                                                       , crudModal: new DescriptorDePermisosDeUnUsuario(Contexto, ModoDescriptor.Consulta)
                                                                                                       , propiedadRestrictora: nameof(PermisosDeUnUsuarioDto.IdUsuario));

            var mostrarPermisos = new ConsultarRelaciones(modalDePermisos.IdHtml, () => modalDePermisos.RenderControl(), "Mostrar los permisos de un usuario");
            var opcion          = new OpcionDeMenu <UsuarioDto>(Mnt.ZonaMenu.Menu, mostrarPermisos, $"Permisos", enumModoDeAccesoDeDatos.Consultor);

            Mnt.ZonaMenu.Menu.Add(opcion);

            AnadirOpciondeRelacion(Mnt
                                   , controlador: nameof(PuestosDeUnUsuarioController)
                                   , vista: nameof(PuestosDeUnUsuarioController.CrudPuestosDeUnUsuario)
                                   , relacionarCon: nameof(PuestoDto)
                                   , navegarAlCrud: DescriptorDeMantenimiento <PuestosDeUnUsuarioDto> .NombreMnt
                                   , nombreOpcion: "Puestos"
                                   , propiedadQueRestringe: nameof(UsuarioDto.Id)
                                   , propiedadRestrictora: nameof(PuestosDeUnUsuarioDto.IdUsuario)
                                   , "Añadir puestos al usuario seleccionado");

            Mnt.OrdenacionInicial = @$ "{nameof(UsuarioDto.NombreCompleto)}:nombre:{enumModoOrdenacion.ascendente.Render()}";
        }
예제 #15
0
        internal static BodegasContext GenerarOpcionesDeMenu(this BodegasContext db)
        {
            if (db.OpcionesDeMenu.Any())
            {
                return(db);
            }

            Log.Debug("Generando las opciones de menú por defecto.");

            var opcionDashboard = new OpcionDeMenu
            {
                Titulo = "Dashboard",
                Icono  = "fa-dashboard",
                Ruta   = "Dashboard"
            };

            var opcionGestiones = new OpcionDeMenu
            {
                Titulo   = "Gestiones",
                Icono    = "fa-cogs",
                Opciones = new []
                {
                    new OpcionDeMenu
                    {
                        Titulo = "Ingresos",
                        Ruta   = "IngresosListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Egresos",
                        Ruta   = "EgresosListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Traslados",
                        Ruta   = "TrasladosListado"
                    }
                }
            };

            var opcionManteminientos = new OpcionDeMenu
            {
                Titulo   = "Mantenimientos",
                Icono    = "fa-database",
                Opciones = new[]
                {
                    new OpcionDeMenu
                    {
                        Titulo = "Bodegas",
                        Ruta   = "BodegasListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Productos",
                        Ruta   = "ProductosListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Listas",
                        Ruta   = "ListasListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Proveedores",
                        Ruta   = "ProveedoresListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Marcas",
                        Ruta   = "MarcasListado"
                    },
                    new OpcionDeMenu
                    {
                        Titulo = "Unidades De Medida",
                        Ruta   = "UnidadesDeMedidaListado"
                    }
                }
            };

            var opcionSeguridad = new OpcionDeMenu
            {
                Titulo   = "Seguridad",
                Icono    = "fa-lock",
                Opciones = new[]
                {
                    new OpcionDeMenu
                    {
                        Titulo = "Usuarios",
                        Ruta   = "UsuariosListado"
                    }
                }
            };

            db.OpcionesDeMenu.Add(opcionDashboard);
            db.OpcionesDeMenu.Add(opcionGestiones);
            db.OpcionesDeMenu.Add(opcionManteminientos);
            db.OpcionesDeMenu.Add(opcionSeguridad);
            db.SaveChanges();
            return(db);
        }
예제 #16
0
 internal void Add(OpcionDeMenu <TElemento> opcion)
 {
     OpcionesDeMenu.Add(opcion);
 }
        public DescriptorDeTrabajosDeUsuario(ContextoSe contexto, ModoDescriptor modo)
            : base(contexto: contexto
                   , controlador: nameof(TrabajosDeUsuarioController)
                   , vista: $"{nameof(TrabajosDeUsuarioController.CrudDeTrabajosDeUsuario)}"
                   , modo: modo
                   , rutaBase: "TrabajosSometido")
        {
            var opcion = new OpcionDeMenu <TrabajoDeUsuarioDto>(Mnt.ZonaMenu.Menu, AccionesDeTu.Iniciar, $"Ejecutar", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcion);

            var opcionBloquear = new OpcionDeMenu <TrabajoDeUsuarioDto>(Mnt.ZonaMenu.Menu, AccionesDeTu.Bloquear, $"Bloquear", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcionBloquear);

            var opcionDesbloquear = new OpcionDeMenu <TrabajoDeUsuarioDto>(Mnt.ZonaMenu.Menu, AccionesDeTu.Desbloquear, $"Desbloquear", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcionDesbloquear);

            var opcionResometer = new OpcionDeMenu <TrabajoDeUsuarioDto>(Mnt.ZonaMenu.Menu, AccionesDeTu.Resometer, $"Resometer", enumModoDeAccesoDeDatos.Gestor);

            Mnt.ZonaMenu.Menu.Add(opcionResometer);

            AnadirOpcionDeDependencias(Mnt
                                       , controlador: nameof(TrazasDeUnTrabajoController)
                                       , vista: nameof(TrazasDeUnTrabajoController.CrudDeTrazasDeUnTrabajo)
                                       , datosDependientes: nameof(TrazaDeUnTrabajoDto)
                                       , navegarAlCrud: DescriptorDeMantenimiento <TrazaDeUnTrabajoDto> .NombreMnt
                                       , nombreOpcion: "Traza"
                                       , propiedadQueRestringe: nameof(TrabajoDeUsuarioDto.Id)
                                       , propiedadRestrictora: nameof(TrazaDeUnTrabajoDto.IdTrabajoDeUsuario)
                                       , "Consultar la traza del trabajo de usuario");

            AnadirOpcionDeDependencias(Mnt
                                       , controlador: nameof(ErroresDeUnTrabajoController)
                                       , vista: nameof(ErroresDeUnTrabajoController.CrudDeErroresDeUnTrabajo)
                                       , datosDependientes: nameof(ErrorDeUnTrabajoDto)
                                       , navegarAlCrud: DescriptorDeMantenimiento <ErrorDeUnTrabajoDto> .NombreMnt
                                       , nombreOpcion: "Errores"
                                       , propiedadQueRestringe: nameof(TrabajoDeUsuarioDto.Id)
                                       , propiedadRestrictora: nameof(ErrorDeUnTrabajoDto.IdTrabajoDeUsuario)
                                       , "Consultar errores del trabajo de usuario");

            new FiltroEntreFechas <TrabajoDeUsuarioDto>(bloque: Mnt.BloqueComun,
                                                        etiqueta: "Planificado",
                                                        propiedad: nameof(TrabajoDeUsuarioDto.Planificado),
                                                        ayuda: "trabajos planificados entre",
                                                        posicion: new Posicion()
            {
                fila = 0, columna = 0
            });
            new FiltroEntreFechas <TrabajoDeUsuarioDto>(bloque: Mnt.BloqueComun,
                                                        etiqueta: "Ejecutado entre",
                                                        propiedad: nameof(TrabajoDeUsuarioDto.Iniciado),
                                                        ayuda: "trabajos ejecutados entre",
                                                        posicion: new Posicion()
            {
                fila = 1, columna = 0
            });

            Dictionary <string, string> opciones = typeof(enumEstadosDeUnTrabajo).ToDiccionario((x) => TrabajoSometido.EnumeradoToDtm(x));

            new ListaDeValores <TrabajoDeUsuarioDto>(Mnt.BloqueGeneral
                                                     , "Estado"
                                                     , "Seleccione el estado por el que filtrar"
                                                     , opciones
                                                     , nameof(TrabajoDeUsuarioDto.Estado)
                                                     , new Posicion()
            {
                fila = 0, columna = 1
            });

            Mnt.OrdenacionInicial = @$ "{nameof(TrabajoDeUsuarioDto.Planificado)}:planificado:{enumModoOrdenacion.descendente.Render()};
                                       {nameof(TrabajoDeUsuarioDto.Iniciado)}:iniciado:{enumModoOrdenacion.ascendente.Render()}";