public void Obtem_Tabelas_Validas_Em_Periodo_Valido() { //Arrange IServicoFaturamento servicoFaturamento = new ServicoFaturamentoComContexto(_context, _endpoint); PeriodoSimples periodo = new PeriodoSimples(); //Act Task <IEnumerable <ITabelaDePreco <int> > > task = servicoFaturamento.ListaTabelasDePrecoAsync(periodo); //Assert Assert.DoesNotThrow(task.Wait); IEnumerable <ITabelaDePreco <int> > tabelas = task.Result; ITabelaDePreco <int> tabela = tabelas.ElementAt(new Random().Next(0, tabelas.Count() - 1)); DateTime dataAleatoria = PegaDataAleatoria(periodo); int categoriaAleatoria = 1; Assert.DoesNotThrow(() => tabela.PrecoEm(dataAleatoria, categoriaAleatoria)); }
public async Task <bool> AtualizarEntregasDosFuncionariosDaRegra(IEnumerable <EntregaDeSaldoFuncionario> entregas, ParametrosDeRegraDeRemuneracao paramRegra, IEnumerable <ITabelaDePreco <int> > tabelasDePreco) { var idEntregas = entregas.Select(x => x.Id).Distinct(); var tipoDaRegra = TipoDeRegraBD.Get(paramRegra.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverterDe(paramRegra); var idTabelaDePreco = paramRegra.ParametrosExtras.IdTabelaDePreco.Value; ITabelaDePreco <int> tabela = tabelasDePreco.Single(x => x.Id == idTabelaDePreco); using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega)) { foreach (var idEntrega in idEntregas) { EntregaDeSaldoFuncionarioBD entrega = await context.EntregasSaldoFuncionario.FindAsync(idEntrega); Dinheiro valorHora = tabela.PrecoEm(entrega.DataFaturamento, entrega.IdCategoria, Moeda.Real); entrega.IdRegra = regra.Id; entrega.PercentualDeRemuneracao = (int)regra.Percentual; entrega.Valor = (entrega.QtdMinutos / 60) * valorHora.Valor; entrega.ValorHora = valorHora.Valor; context.EntregasSaldoFuncionario.Update(entrega); } try { await context.SaveChangesAsync(); } catch (Exception ex) { return(false); } return(true); } }