public async Task <IEnumerable <IEmissaoDeRemuneracao> > AdicionarEmissoesAsync(IEnumerable <IEmissaoDeRemuneracao> emissoes, ILogDeOperacaoDeRemuneracao informacaoDeAuditoria = null) { ConcurrentQueue <EmissaoDeRemuneracaoBD> emissoesBD = new ConcurrentQueue <EmissaoDeRemuneracaoBD>(); foreach (IEmissaoDeRemuneracao emissao in emissoes) { EmissaoDeRemuneracaoBD emissaoBD = new EmissaoDeRemuneracaoBD(emissao) { ContaExecutoraDaEmissao = _contextoDeConexao.IdContaUsuario, Remuneracao_Paga = false }; emissoesBD.Enqueue(emissaoBD); } using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { context.RemuneracoesEmitidas.AddRange(emissoesBD.SelectMany(emiss => emiss.RemuneracoesEmitidas).ToArray()); await context.SaveChangesAsync(); context.Emissoes.AddRange(emissoesBD); await context.SaveChangesAsync(); } IEnumerable <IEmissaoDeRemuneracao> emissaoSalva = emissoesBD.Select(emissBD => emissBD.ConverteParaModelo()); return(emissaoSalva); }
public async Task PagarRemuneracao(IRemuneracaoPaga remuneracao, ILogDeOperacaoDeRemuneracao informacaoDeAuditoria = null) { RemuneracoesPagasBD remuneracaoBD = new RemuneracoesPagasBD(remuneracao); EmissaoDeRemuneracaoBD emissao = remuneracaoBD.EmissaoDeRemuneracao; using (RemuneracaoContext context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { emissao.Remuneracao_Paga = true; context.Emissoes.Update(emissao); context.RemuneracoesPagas.Add(remuneracaoBD); await context.SaveChangesAsync(); } }