Ejemplo n.º 1
0
        private async Task VerificaSeTipoLimiteJaExiste(ParametrosDeLimites limite)
        {
            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                ParametrosDeLimitesBD limiteBD = new ParametrosDeLimitesBD(limite);

                //TODO: Talvez tenha que mudar maneira de pegar idsDosContextosDeAplicacao quando tiver mais de um contexto.

                PeriodoSimples periodoLimite = new PeriodoSimples(limite.DataInicio, limite.DataFim.Value.Date.AddDays(1));

                IEnumerable <int> idsVinculos = await context.VinculosLimites.Where(x => x.IdVinculo == limite.IdsDosContextosDeAplicacao.First()).Select(l => l.IdLimite).ToListAsync();

                IEnumerable <ParametrosDeLimitesBD> limiteEncontrado = await context.Limites.Where(
                    l => l.TipoDeLimite == limiteBD.TipoDeLimite &&
                    l.Deleted == false &&
                    new PeriodoSimples(l.DataInicio, l.DataFim.Value.AddDays(1)).Intersecta(periodoLimite) &&
                    idsVinculos.Contains(l.Id) &&
                    l.Id != limite.Id).ToListAsync();

                if (limiteEncontrado.Count() > 0)
                {
                    throw new UserException("Não foi possível inserir o limite. Esta regra já possui um " + limite.Tipo.Name + " nesta vigência.");
                }
            }
        }
Ejemplo n.º 2
0
        public async Task UpdateAsync(ParametrosDeLimites limite)
        {
            var limiteBDNew = new ParametrosDeLimitesBD(limite);

            await VerificaSeTipoLimiteJaExiste(limite);
            await VerificaSeLimiteEstaNaVigenciaDaRegra(limite);

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                var limiteBD = context.Limites.FirstOrDefault(x => x.Id == limite.Id);

                if (limiteBD != null)
                {
                    var vinculos = context.VinculosLimites.Where(x => x.IdLimite == limiteBD.Id);

                    foreach (VinculoDeContextoDeLimiteBD vinculo in vinculos)
                    {
                        context.Entry(vinculo).State = EntityState.Deleted;
                    }

                    await context.SaveChangesAsync();

                    limiteBD.Atualizar(limite);

                    context.Update(limiteBD);

                    await context.SaveChangesAsync();
                }
            }
        }
Ejemplo n.º 3
0
        public async Task RemoveAsync(int id)
        {
            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                ParametrosDeLimitesBD limite = await context.Limites.FindAsync(id);

                limite.Deleted = true;
                context.Update(limite);
                await context.SaveChangesAsync();
            }
        }
Ejemplo n.º 4
0
        public async Task <object> InserirLimite(ParametrosDeLimites limite)
        {
            ParametrosDeLimitesBD limiteBD = new ParametrosDeLimitesBD(limite);

            await VerificaSeTipoLimiteJaExiste(limite);
            await VerificaSeLimiteEstaNaVigenciaDaRegra(limite);

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                EntityEntry <ParametrosDeLimitesBD> limiteInserido = await context.Limites.AddAsync(limiteBD);

                await context.SaveChangesAsync();

                return(limiteInserido.Entity.Id);
            }
        }