public async Task <IEnumerable <IMetaDeRemuneracao> > DescobrirMetasAplicaveisAsync(Competencia[] competencias) { IEnumerable <ParametrosDeMetas> parametros = (await _repositorio.ListarMetasVigentesEm(competencias)).Select(par => (ParametrosDeMetas)par); ConcurrentQueue <IMetaDeRemuneracao> metasDeRemuneracao = new ConcurrentQueue <IMetaDeRemuneracao>(); Parallel.ForEach(parametros, (parametro) => { IMetaDeRemuneracao limite = ConstruirMeta(parametro); if (limite != null) { metasDeRemuneracao.Enqueue(limite); } }); return(metasDeRemuneracao); }
public async Task <IEnumerable <IMetaDeRemuneracao> > ObtemMetasAsync(int[] idsMetas) { IEnumerable <ParametrosDeMetas> parametros = (await _repositorio.ObtemMetasAsync(idsMetas)).Select(par => (ParametrosDeMetas)par); ConcurrentQueue <IMetaDeRemuneracao> metasDeRemuneracao = new ConcurrentQueue <IMetaDeRemuneracao>(); Parallel.ForEach(parametros, (parametro) => { IMetaDeRemuneracao limite = ConstruirMeta(parametro); if (limite != null) { metasDeRemuneracao.Enqueue(limite); } }); return(metasDeRemuneracao); }