public static CorreoDtm CrearCorreoDe(ContextoSe contexto, string parametrosJson)
        {
            Dictionary <string, object> parametros = parametrosJson.ToDiccionarioDeParametros();

            if (!parametros.ContainsKey(ltrParamCorreos.archivos))
            {
                parametros[ltrParamCorreos.archivos] = new List <string>();
            }

            ValidarParametrosDeCorreo(contexto, parametros);

            return(CrearCorreoDe(contexto
                                 , GestorDeUsuarios.LeerUsuario(contexto, contexto.DatosDeConexion.IdUsuario).eMail
                                 , (List <string>)parametros[ltrParamCorreos.receptores]
                                 , (string)parametros[ltrParamCorreos.asunto]
                                 , (string)parametros[ltrParamCorreos.cuerpo]
                                 , (List <TipoDtoElmento>)parametros[ltrParamCorreos.adjuntos]
                                 , (List <string>)parametros[ltrParamCorreos.archivos]));
        }
        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
        }