public ContratoDeRemuneracaoBD ConverterDe(IContratoDeRemuneracao contrato)
        {
            ContratoDeRemuneracaoBD contratoConvertido = new ContratoDeRemuneracaoBD(TipoDeContratoDeRemuneracaoBancoDeDados.Padrao);

            if (!(contrato is ContratoDeRemuneracao))
            {
                throw new ArgumentException();
            }

            var contratoPadrao = contrato as ContratoDeRemuneracao;

            contratoConvertido.Id      = contrato.Id;
            contratoConvertido.Nome    = contrato.NomePrincipal;
            contratoConvertido.Deleted = contrato.Deleted;
            if (contrato.Favorecimento != null)
            {
                contratoConvertido.Favorecimento = TipoDeFavorecimentoBD.Get(contrato.Favorecimento.Tipo.Id).ConverteDe(contrato.Favorecimento, contrato.Id, Definicoes.ID_VINCULO_FAVORECIMENTO_CONTRATO);
            }

            if (contrato.Regras != null)
            {
                contratoConvertido.Regras = contrato.Regras.Select(reg => TipoDeRegraBD.Get(reg.Tipo.Id).ConverteDe(reg));
            }

            contratoConvertido.Vigencia = contratoPadrao.Vigencia;



            return(contratoConvertido);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> PutAsync([FromBody] JObject ContratoJson, int id)
        {
            IContratoDeRemuneracao Contrato = ConverteJsonParaContrato(ContratoJson.ToString());

            try
            {
                await _gerenciadorDeRequisicoesDeContrato.AtualizarContratoAsync(Contrato, id);
            }
            catch (UserException e)
            {
                EncapsuladorDeResposta <bool> encapsuladorDeResposta = new EncapsuladorDeResposta <bool>(false);
                encapsuladorDeResposta.Success          = false;
                encapsuladorDeResposta.ExceptionMessage = e.Message;
                return(Ok(encapsuladorDeResposta));
            }
            catch (Exception ex)
            {
                BadRequest(ex);
            }

            EncapsuladorDeResposta <bool> enc = new EncapsuladorDeResposta <bool>(true);

            enc.Success = true;
            return(Ok(enc));
        }
Exemplo n.º 3
0
        public void Deve_Carregar_Lista_De_Regras_Para_Contratos_Retornados()
        {
            //Arrange
            Mock <IContratoDeRemuneracao> contrato1 = ContratoMock(1, 2, 3);

            IEnumerable <IContratoDeRemuneracao> contratos = new List <IContratoDeRemuneracao>()
            {
                contrato1.Object
            };
            Mock <IRepositorioDeContratoDeRemuneracao> contratoRepositorio = new Mock <IRepositorioDeContratoDeRemuneracao>();

            contratoRepositorio.Setup(cont => cont.ListarVigentesEm(It.IsAny <Competencia[]>())).ReturnsAsync(contratos);
            Mock <IRegraDeRemuneracao>  regra1           = new Mock <IRegraDeRemuneracao>();
            Mock <IRegraDeRemuneracao>  regra2           = new Mock <IRegraDeRemuneracao>();
            Mock <IRegraDeRemuneracao>  regra3           = new Mock <IRegraDeRemuneracao>();
            Mock <IRepositorioDeRegras> regraRepositorio = new Mock <IRepositorioDeRegras>();
            //regraRepositorio.Setup(reg => reg.ObterAsync(new int[] { 1 })).ReturnsAsync(new IRegraDeRemuneracao[] { regra1.Object });
            //regraRepositorio.Setup(reg => reg.ObterAsync(new int[] { 2 })).ReturnsAsync(new IRegraDeRemuneracao[] { regra2.Object });
            //regraRepositorio.Setup(reg => reg.ObterAsync(new int[] { 3 })).ReturnsAsync(new IRegraDeRemuneracao[] { regra3.Object });
            DescobridorDeContratos descobridor = null;// new DescobridorDeContratos(contratoRepositorio.Object, regraRepositorio.Object);

            //Act
            var task = descobridor.DescobrirContratosDeRemuneracaoAsync(new Competencia[] { new Mock <Competencia>().Object });

            task.Wait();
            var result = task.Result;

            //Assert
            IContratoDeRemuneracao contrato = result.ToArray()[0];

            Assert.AreEqual(regra1.Object, contrato.Regras.ToArray()[0]);
            Assert.AreEqual(regra2.Object, contrato.Regras.ToArray()[1]);
            Assert.AreEqual(regra3.Object, contrato.Regras.ToArray()[2]);
        }
Exemplo n.º 4
0
        private async Task VerificaSeRegraEstaNaVigenciaDoContrato(RegraDeRemuneracaoBD regra)
        {
            IContratoDeRemuneracao contratoDaRegra = (await _repositorioDeContratos.ObterAsync(new int[] { regra.IdContrato })).First();

            PeriodoSimples vigenciaDoContrato = new PeriodoSimples(contratoDaRegra.Vigencia.Inicio.Date, contratoDaRegra.Vigencia.Fim.Date.AddDays(1));
            PeriodoSimples vigenciaDaRegra    = new PeriodoSimples(regra.Vigencia.Inicio.Date, regra.Vigencia.Fim.Date);

            if (!vigenciaDoContrato.Contem(vigenciaDaRegra))
            {
                throw new UserException("A vigência da regra deve estar dentro da vigência do contrato");
            }
        }
        public async Task <int> InserirAsync(IContratoDeRemuneracao modelo)
        {
            var tipo = TipoDeContratoDeRemuneracaoBancoDeDados.Parse(modelo.Tipo.Name);
            ContratoDeRemuneracaoBD contratoBD = tipo.ConverteDe(modelo);

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                EntityEntry <ContratoDeRemuneracaoBD> contratoInserido = await context.AddAsync(contratoBD);

                await context.SaveChangesAsync();

                return(contratoInserido.Entity.Id);
            }
        }
Exemplo n.º 6
0
        private async Task VerificaSeJaExisteRegraComMesmoTipoNoContrato(RegraDeRemuneracaoBD regra)
        {
            IContratoDeRemuneracao contratoDaRegra = (await _repositorioDeContratos.ObterAsync(new int[] { regra.IdContrato })).First();

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                var existeRegra = await context.Regras.Where(r => !r.Deleted && r.IdContrato == regra.IdContrato && r.Tipo == regra.Tipo && r.Vigencia.IntersectaIntervaloFechado(regra.Vigencia) && r.Id != regra.Id).ToListAsync();

                if (existeRegra.Count() > 0)
                {
                    throw new UserException("Não foi possível inserir esta regra. Este contrato já possui uma regra do mesmo tipo nesta vigência, tente alterar a vigência da regra.");
                }
            }
        }
        public async Task <int> UpdateAsync(IContratoDeRemuneracao modelo, int id)
        {
            var tipo = TipoDeContratoDeRemuneracaoBancoDeDados.Parse(modelo.Tipo.Name);
            ContratoDeRemuneracaoBD contratoBD = tipo.ConverteDe(modelo);

            contratoBD.Id = id;

            using (var context = _fabricaDeContextos.CriaContextoDe <RemuneracaoContext>(TipoDeConexao.Remuneracao))
            {
                context.Contratos.Update(contratoBD);
                await context.SaveChangesAsync();

                return(contratoBD.Id);
            }
        }
Exemplo n.º 8
0
        public async Task VerificaSeExisteRegraForaDaNovaVigenciaDoContrato(IContratoDeRemuneracao contrato, int id)
        {
            IEnumerable <ParametrosDeRegraDeRemuneracao> regras = await ListaRegras(id);

            PeriodoSimples vigenciaDoContrato = new PeriodoSimples(contrato.Vigencia.Inicio.Date, contrato.Vigencia.Fim.Date.AddDays(1));

            foreach (ParametrosDeRegraDeRemuneracao regra in regras)
            {
                PeriodoSimples vigenciaDaRegra = new PeriodoSimples(regra.Vigencia.Inicio.Date, regra.Vigencia.Fim.Date);
                if (!vigenciaDoContrato.Contem(vigenciaDaRegra))
                {
                    throw new UserException("Existem regras com vigência fora da nova vigência do contrato, favor alterá-las antes de alterar o contrato");
                }
            }
        }
Exemplo n.º 9
0
        public async Task <IActionResult> GetObtemAsync(int id)
        {
            //context = await ConfiguraGerenciador(context, _gerenciadorDeRequisicoesDeContrato);
            IContratoDeRemuneracao Contrato = null;

            try
            {
                Contrato = await _gerenciadorDeRequisicoesDeContrato.RequisicaoObtemContratoAsync(id);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }

            return(Ok(Contrato));
        }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jsonObject = JObject.Load(reader);

            var                    mee          = nameof(IContratoDeRemuneracao.Tipo);
            var                    bii          = nameof(IContratoDeRemuneracao.Vigencia);
            var                    jobjTipo     = jsonObject[mee];
            var                    jobjVigencia = jsonObject[nameof(IContratoDeRemuneracao.Vigencia)];
            string                 idTipo       = jobjTipo.Value <string>();
            PeriodoSimples         vigencia     = (PeriodoSimples)serializer.ContractResolver.ResolveContract(typeof(PeriodoSimples)).Converter.ReadJson(jobjVigencia.CreateReader(), typeof(PeriodoSimples), null, serializer);
            IContratoDeRemuneracao contrato     = TipoDeContrato.Get <TipoDeContrato>(idTipo).CriarContrato(vigencia);

            serializer.Populate(jsonObject.CreateReader(), contrato);

            return(contrato);
        }
        private static Task <IEnumerable <IContratoDeRemuneracao> > ConverteContratosDoBDParaDominioAsync(ContratoDeRemuneracaoBD[] contratosBD)
        {
            ConcurrentQueue <IContratoDeRemuneracao> queueContratos = new ConcurrentQueue <IContratoDeRemuneracao>();

            var task = Task.Factory.StartNew <IEnumerable <IContratoDeRemuneracao> >(() =>
            {
                Parallel.ForEach(contratosBD, cont =>
                {
                    IContratoDeRemuneracao contrato = cont.ConvertePara();
                    queueContratos.Enqueue(contrato);
                });

                return(queueContratos);
            });

            return(task);
        }
Exemplo n.º 12
0
        public async Task <IActionResult> PostAsync([FromBody] JObject ContratoJson)
        {
            //context = await ConfiguraGerenciador(context, _gerenciadorDeRequisicoesDeContrato);

            int id = 0;

            IContratoDeRemuneracao Contrato = ConverteJsonParaContrato(ContratoJson.ToString());

            try
            {
                id = await _gerenciadorDeRequisicoesDeContrato.SalvaContratoAsync(Contrato);
            }
            catch (Exception ex)
            {
                BadRequest(ex);
            }

            return(Ok(id));
        }