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);
            }
        }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
            }
        }