public async Task <IEnumerable <EntregaDeSaldoFuncionario> > ObterEntregasDeSaldoDosFuncionariosDaRegra(ParametrosDeRegraDeRemuneracao modelo) { var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverterDe(modelo); ParametrosDeFavorecimento fav = new ParametrosDeFavorecimento(); using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { ContratoDeRemuneracaoBD contrato = await context.Contratos .Include(c => c.Favorecimento) .Where(x => x.Id == regra.IdContrato).FirstOrDefaultAsync(); if (contrato.Favorecimento == null) { return(new List <EntregaDeSaldoFuncionario>()); } fav = contrato.Favorecimento.ConverterPara(); } using (var context = _fabricaDeContextos.CriaContextoDe <EntregaContext>(TipoDeConexao.Entrega)) { IEnumerable <EntregaDeSaldoFuncionarioBD> entregas = await context.EntregasSaldoFuncionario //.Include(c=>c.Regra) .Where(x => fav.IdsDasEntidadesFavorecidas.Contains(x.IdFuncionario)).ToArrayAsync(); IEnumerable <EntregaDeSaldoFuncionario> retorno = ConversorEntregaBSFuncionario.ConverteParaDominio(entregas); return(retorno); } }
public async Task UpdateAsync(ParametrosDeRegraDeRemuneracao modelo) { var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverterDe(modelo); await VerificaSeRegraEstaNaVigenciaDoContrato(regra); await VerificaSeJaExisteRegraComMesmoTipoNoContrato(regra); using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { context.Update(regra); await context.SaveChangesAsync(); } }
public async Task <int> InserirAsync(IRegraDeRemuneracao modelo) { var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverteDe(modelo); using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { EntityEntry <RegraDeRemuneracaoBD> insertedObject = await context.Regras.AddAsync(regra); await context.SaveChangesAsync(); return(insertedObject.Entity.Id); } }
public async Task <int> InserirAsync(ParametrosDeRegraDeRemuneracao modelo) { var tipoDaRegra = TipoDeRegraBD.Get(modelo.Tipo.Id); RegraDeRemuneracaoBD regra = tipoDaRegra.ConverterDe(modelo); await VerificaSeRegraEstaNaVigenciaDoContrato(regra); await VerificaSeJaExisteRegraComMesmoTipoNoContrato(regra); using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao)) { EntityEntry <RegraDeRemuneracaoBD> insertedObject = await context.Regras.AddAsync(regra); await context.SaveChangesAsync(); return(insertedObject.Entity.Id); } }
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); } }