public PuestoDeTrabajoController(GestorDePuestosDeTrabajo gestorDePuesto, GestorDeErrores gestorDeErrores)
     : base
     (
         gestorDePuesto,
         gestorDeErrores
     )
 {
 }
        protected override dynamic CargaDinamica(string claseElemento, int posicion, int cantidad, List <ClausulaDeFiltrado> filtros)
        {
            if (claseElemento == nameof(UsuarioDto))
            {
                return(GestorDeUsuarios.Gestor(GestorDeElementos.Contexto, GestorDeElementos.Mapeador).LeerUsuarios(posicion, cantidad, filtros));
            }

            if (claseElemento == nameof(PuestoDto))
            {
                return(GestorDePuestosDeTrabajo.Gestor(GestorDeElementos.Contexto, GestorDeElementos.Mapeador).LeerPuestos(posicion, cantidad, filtros));
            }

            return(base.CargaDinamica(claseElemento, posicion, cantidad, filtros));
        }
        private static void ValidarParametrosDeCorreo(ContextoSe contexto, Dictionary <string, object> parametros)
        {
            if (!parametros.ContainsKey(ltrParamCorreos.usuarios) && !parametros.ContainsKey(ltrParamCorreos.puestos))
            {
                GestorDeErrores.Emitir("Debe indicar algún receptor");
            }

            var usuarios = parametros.ContainsKey(ltrParamCorreos.usuarios) ? parametros[ltrParamCorreos.usuarios].ToString().JsonToLista <int>() : new List <int>();
            var puestos  = parametros.ContainsKey(ltrParamCorreos.puestos) ? parametros[ltrParamCorreos.puestos].ToString().JsonToLista <int>() : new List <int>();

            if (usuarios.Count == 0 && puestos.Count == 0)
            {
                GestorDeErrores.Emitir("Debe indicar algún receptor");
            }

            var receptores = "";

            foreach (var idUsuario in usuarios)
            {
                receptores = $"{receptores};{GestorDeUsuarios.LeerUsuario(contexto, idUsuario).eMail}";
            }
            foreach (var idPuesto in puestos)
            {
                List <UsuarioDtm> usuariosDeUnPuesto = GestorDePuestosDeTrabajo.LeerUsuarios(contexto, idPuesto);
                foreach (var usuario in usuariosDeUnPuesto)
                {
                    receptores = $"{receptores};{GestorDeUsuarios.LeerUsuario(contexto, usuario.Id).eMail}";
                }
            }

            parametros[ltrParamCorreos.receptores] = receptores.Substring(1).ToLista <string>();

            if (((string)parametros[ltrParamCorreos.asunto]).IsNullOrEmpty())
            {
                GestorDeErrores.Emitir("Debe indicar el asunto");
            }
            if (((string)parametros[ltrParamCorreos.cuerpo]).IsNullOrEmpty())
            {
                GestorDeErrores.Emitir("Debe indicar el cuerpo");
            }

            if (parametros.ContainsKey(ltrParamCorreos.adjuntos))
            {
                //var lista = new List<TipoDtoElmento>();
                var elementosDto = parametros[ltrParamCorreos.adjuntos].ToString().JsonToLista <TipoDtoElmento>();
                //foreach (var elementoDto in elementosDto)
                //{
                //    var partes = elementoDto.Split("#:#");

                //    if (partes.Length != 3)
                //        GestorDeErrores.Emitir($"Intenta enviar un correo adjuntando un elemento mal definido. debe indicar el tipoDto, el IdElemento y la referencia, sólo se han indicado {partes.Length} parámetros");


                //    if(partes[0].IsNullOrEmpty() || partes[2].IsNullOrEmpty() || partes[1].Entero() == 0)
                //    {
                //        GestorDeErrores.Emitir($"Intenta enviar un correo adjuntando un elemento mal definido. debe indicar el tipoDto, el IdElemento y la referencia, el sistema ha indicado {partes[0]}:{partes[1]}:{partes[2]}");
                //    }

                //    var elemento = new TipoDtoElmento { TipoDto = partes[0], IdElemento = partes[1].Entero(), Referencia = partes[2]};
                //    lista.Add(GestorDeNegocios.ValidarElementoDto(elemento));
                // }

                parametros[ltrParamCorreos.adjuntos] = elementosDto; // lista;
            }

            //TODO: Validar que las rutas de los archivos o los Ids de los archivos existen
        }