public async Task <EventoAlteracao> ToEventoAlteracao(IProposta proposta)
        {
            var historicos = new List <HistoricoCoberturaContratada>();

            foreach (var produto in proposta.Produtos)
            {
                var beneficiario = produto.Beneficiarios?.OrderByDescending(d => d.DataNascimento).FirstOrDefault();
                foreach (var cobertura in produto.Coberturas)
                {
                    var historico = new HistoricoCoberturaContratada(await _coberturas.ObterPorItemCertificado(long.Parse(cobertura.IdentificadorExterno)))
                    {
                        SexoBeneficiario           = beneficiario?.Sexo,
                        DataNascimentoBeneficiario = beneficiario?.DataNascimento,
                        PeriodicidadeId            = (short)proposta.DadosPagamento?.Periodicidade,
                        ValorBeneficio             = cobertura.ValorBeneficio,
                        ValorCapital      = cobertura.ValorCapital,
                        ValorContribuicao = cobertura.ValorContribuicao,
                    };

                    historico.InformaStatus(StatusCobertura.StatusCoberturaEnum.Activa, proposta.DataImplantacao);

                    historicos.Add(historico);
                }
            }

            return(new EventoAlteracao(proposta.Identificador, proposta.IdentificadorCorrelacao, proposta.IdentificadorNegocio, proposta.DataExecucaoEvento)
                   .ComHistorico(historicos));
        }
Пример #2
0
        public static void Validar(this IProposta proposta)
        {
            var evento = proposta.ValidarEvento();

            var proponente = proposta.Proponente.Validar(proposta.Numero);

            var dataImplantacao = Assertion.IsFalse(proposta.DataImplantacao.Equals(default(DateTime)), $"Proposta com Data de implantação inválida. Número da Proposta: {proposta.Numero}.");
            var dataAssinatura  = Assertion.IsFalse(proposta.DataAssinatura.Equals(default(DateTime)), $"Proposta com Data de assinatura inválida. Número da Proposta: {proposta.Numero}.");
            var numero          = Assertion.IsFalse(proposta.Numero.Equals(default(int)), $"Número da proposta inválido. Identificador: {proposta.Identificador}.");
            var produtosNull    = Assertion.NotNull(proposta.Produtos, $"A proposta {proposta.Numero} não tem produtos informados");
            var produtosEmpty   = produtosNull.IsValid()
                ? Assertion.IsTrue(proposta.Produtos.Any(), $"A proposta {proposta.Numero} tem lista de produtos vazia")
                : Assertion.Neutral();
            var produtos = produtosNull.IsValid()
                ? proposta.Produtos.Select(p => p.Validar()).Aggregate(Assertion.Neutral(), (x, y) => x.and(y))
                : Assertion.Neutral();

            evento.and(proponente)
            .and(dataImplantacao)
            .and(dataAssinatura)
            .and(numero)
            .and(produtosNull)
            .and(produtosEmpty)
            .and(produtos)
            .Validate();
        }
 private void CriarProposta(ImplantacaoParam param, long itemCertificadoApolice)
 {
     _proposta = PropostaBuilder.UmaProposta().Padrao().Padrao()
                 .ComIdentificador(_param.Identificador)
                 .ComDataAssinatura(_param.DataInicioVigencia.AddMonths(6))
                 .Com(DadosPagamentoBuilder.UmPagamento()
                      .ComPeriodicidade(ObterPeriodicidade(_param.Periodicidade)))
                 .Com(ProponenteBuider.UmProponente().Padrao()
                      .ComDataNascimento(_param.DataNascimento)
                      .ComMatricula(_param.Matricula)
                      .ComSexo(_param.Sexo))
                 .Com(ProdutoBuilder.UmProduto().Padrao()
                      .ComMatricula(IdentificadoresPadrao.Matricula)
                      .ComCodigo(IdentificadoresPadrao.ProdutoId)
                      .ComInscricao(_param.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario().Padrao())
                      .Com(CoberturaBuilder.UmaCobertura().Padrao()
                           .ComInicioVigencia(_param.DataInicioVigencia.AddYears(-1))
                           .ComItemCertificadoApolice(_param.IdExterno)
                           .ComItemProdutoId(_param.ItemProdutoId)
                           .ComInicioVigencia(_param.DataInicioVigencia)
                           .ComClasseRisco(_param.ClasseRiscoId)
                           .Com(ContratacaoBuilder.UmaContratacao().Padrao()
                                .ComTipoRenda(ObterTipoRenda(_param.TipoRendaId))
                                .ComTipoFormaContratacao(ObterTipoFormaContratacao(_param.TipoFormaContratacaoId))
                                ))).Build();
 }
Пример #4
0
        static void Main(string[] args)
        {
            List <Proposta> propostas = new List <Proposta> {
                new Novo(12M),
                new Portabilidade(3, 325.72M)
            };

            foreach (Proposta proposta in propostas)
            {
                Console.WriteLine($"Meu tipo de operacao é: {proposta.QualOTipoOperacao()}");
                Console.WriteLine($"Meu valor corrigido é: {((IProposta)proposta).CorrigirValor()}");
            }

            IProposta propostaNovo = (IProposta)propostas[0];

            Console.WriteLine($"Valor Total = {propostaNovo.ObterValorCorrigido()}");
            propostaNovo.AtualizarValorParcela(6M);
            Console.WriteLine($"Após atualizar o valor da parcela para 6 o novo total é = {propostaNovo.CorrigirValor()}");

            IRelatorio relatorio = (IRelatorio)propostas[1];
            Resumo     resumo    = relatorio.GerarResumo();

            Console.WriteLine(string.Format("Operação de {0} é viável? {1}", resumo.TipoOperacao, resumo.Viavel));

            Console.ReadLine();
        }
        public void Dado_uma_Proposta_com_matricula_igual_do_conjuge_deve_Adicionar_dados_do_conjuge()
        {
            _proposta = PropostaBuilder.UmaProposta()
                        .Padrao()
                        .Com(DadosPagamentoBuilder.UmPagamento())
                        .Com(ProponenteBuider.UmProponente().Padrao()
                             .Com(PessoaBuilder.UmaPessoa().ComMatricula(IdentificadoresPadrao.Matricula)))
                        .Com(ProdutoBuilder.UmProduto()
                             .ComMatricula(IdentificadoresPadrao.Matricula)
                             .ComInscricao(IdentificadoresPadrao.InscricaoId)
                             .Com(BeneficiarioBuilder.UmBeneficiario())
                             .Com(CoberturaBuilder.UmaCobertura()
                                  .ComItemCertificadoApolice(IdentificadoresPadrao.ItemCertificadoApoliceId)
                                  .ComItemProdutoId(IdentificadoresPadrao.ItemProdutoId)
                                  .ComInicioVigencia(IdentificadoresPadrao.DataInicioVigencia)
                                  .Com(ContratacaoBuilder.UmaContratacao()
                                       .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                       .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                                  )
                             ).Build();

            var eventoImplantacao = _proposta.ToEvento();

            var coberturaContratada = eventoImplantacao.Coberturas.First();

            Assert.AreEqual(_proposta.Proponente.Conjuge.Matricula, coberturaContratada.Matricula);
        }
Пример #6
0
        public static EventoImplantacao ToEvento(this IProposta proposta)
        {
            var evento = new EventoImplantacao(proposta.Identificador, proposta.IdentificadorCorrelacao, proposta.IdentificadorNegocio, proposta.DataExecucaoEvento);

            AdicionarCoberturas(evento, proposta);

            return(evento);
        }
        public static EventoAlteracao ToEventoAlteracao(this IProposta proposta)
        {
            var evento = new EventoAlteracao(proposta.Identificador, proposta.IdentificadorCorrelacao, proposta.IdentificadorNegocio, proposta.DataExecucaoEvento);

            proposta.ToHistoricoCoberturas().SafeForEach(h => evento.AdicionaHistorico(h));

            return(evento);
        }
Пример #8
0
        public static void Validar(this IProposta self)
        {
            var identificadorValidator  = Assertion.GreaterThan(self.Identificador, default(Guid), "O Identificador não pode ser nulo.");
            var dataAssinaturaValidator = Assertion.GreaterThan(self.DataAssinatura, default(DateTime), "A Data de Assinatura do Evento não pode ser nula.");
            var dataExecucaoValidator   = Assertion.GreaterThan(self.DataExecucaoEvento, default(DateTime), "A Data de Execução do Evento não pode ser nula.");
            var proponenteValidator     = Assertion.NotNull(self.Proponente, $"A Proposta não possui Proponente.");
            var produtosValidator       = Assertion.NotNull(self.Produtos, $"A Proposta não possui Produtos.");

            identificadorValidator
            .and(dataExecucaoValidator)
            .and(dataAssinaturaValidator)
            .and(produtosValidator)
            .and(proponenteValidator)
            .Validate();
        }
Пример #9
0
        public static IEnumerable <CoberturaContratada> ObterCoberturasDaProposta(this IProposta proposta)
        {
            var coberturas = new List <CoberturaContratada>();

            foreach (var produto in proposta.Produtos)
            {
                foreach (var cobertura in produto.Coberturas)
                {
                    var coberturaContratada = new CoberturaContratada(long.Parse(cobertura.IdentificadorExterno))
                    {
                        InscricaoId        = produto.InscricaoCertificado,
                        ItemProdutoId      = cobertura.CodigoItemProduto,
                        DataInicioVigencia = cobertura.InicioVigencia,
                        DataAssinatura     = proposta.DataAssinatura,
                        DataNascimento     = proposta.Proponente.DataNascimento,
                        Matricula          = proposta.Proponente.Matricula,
                        Sexo = proposta.Proponente.Sexo,
                        TipoFormaContratacaoId = (int)cobertura.Contratacao?.TipoFormaContratacao,
                        ProdutoId             = produto.Codigo,
                        ClasseRiscoId         = cobertura.ClasseRisco,
                        TipoRendaId           = (int)cobertura.Contratacao?.TipoDeRenda,
                        DataFimVigencia       = cobertura.FimVigencia,
                        PrazoPagamentoEmAnos  = cobertura.Prazos?.PagamentoEmAnos,
                        PrazoCoberturaEmAnos  = cobertura.Prazos?.CoberturaEmAnos,
                        PrazoDecrescimoEmAnos = cobertura.Prazos?.DecrescimoEmAnos,
                    };

                    if (produto.Matricula != proposta.Proponente.Matricula && proposta.Proponente.Conjuge != null)
                    {
                        if (produto.Matricula == proposta.Proponente.Conjuge.Matricula)
                        {
                            coberturaContratada.Matricula      = proposta.Proponente.Conjuge.Matricula;
                            coberturaContratada.Sexo           = proposta.Proponente.Conjuge.Sexo;
                            coberturaContratada.DataNascimento = proposta.Proponente.Conjuge.DataNascimento;
                        }
                    }

                    coberturaContratada.Historico = ObterHistorico(coberturaContratada, produto.Beneficiarios, proposta.DadosPagamento?.Periodicidade,
                                                                   cobertura.ValorBeneficio, cobertura.ValorCapital, cobertura.ValorContribuicao, proposta.DataImplantacao);

                    coberturas.Add(coberturaContratada);
                }
            }

            return(coberturas);
        }
Пример #10
0
 private void ObterProposta()
 {
     _proposta = PropostaBuilder.UmaProposta()
                 .Padrao()
                 .Com(DadosPagamentoBuilder.UmPagamento())
                 .Com(ProponenteBuider.UmProponente().Padrao())
                 .Com(ProdutoBuilder.UmProduto()
                      .ComInscricao(IdentificadoresPadrao.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario().Padrao())
                      .Com(CoberturaBuilder.UmaCobertura().Padrao()
                           .Com(PrazosBuilder.Um().Padrao())
                           .Com(ContratacaoBuilder.UmaContratacao()
                                .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                           )
                      ).Build();
 }
 private void ObterProposta()
 {
     _proposta = PropostaBuilder.UmaProposta()
                 .Padrao()
                 .Com(DadosPagamentoBuilder.UmPagamento())
                 .Com(ProponenteBuider.UmProponente().ComMatricula(20)
                      .Com(PessoaBuilder.UmaPessoa().ComMatricula(IdentificadoresPadrao.Matricula)))
                 .Com(ProdutoBuilder.UmProduto()
                      .ComMatricula(IdentificadoresPadrao.Matricula)
                      .ComInscricao(IdentificadoresPadrao.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario())
                      .Com(CoberturaBuilder.UmaCobertura()
                           .ComItemCertificadoApolice(IdentificadoresPadrao.ItemCertificadoApoliceId)
                           .ComItemProdutoId(IdentificadoresPadrao.ItemProdutoId)
                           .Com(ContratacaoBuilder.UmaContratacao()
                                .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                           )
                      ).Build();
 }
Пример #12
0
 public static void ValidarCompensacao(this IProposta proposta)
 {
     Assertion.NotNull(proposta, "Não foi possível fazer a compensação dos eventos para o contrato com parâmetros nulo.").Validate();
     Assertion.GreaterThan(proposta.Identificador, default(Guid), "Não foi possível fazer a compensação dos eventos para o contrato com parâmetros nulo.").Validate();
 }
Пример #13
0
 private void ObterProposta()
 {
     _proposta = PropostaBuilder.UmaProposta().Padrao().Build();
 }
Пример #14
0
 public void FixtureSetUp()
 {
     _proposta = PropostaBuilder.UmaProposta().ComNumeroProposta(IdentificadoresPadrao.NumeroProposta).Build();
 }
Пример #15
0
 public static void AdicionarCoberturas(EventoImplantacao evento, IProposta proposta)
 {
     proposta.ObterCoberturasDaProposta().SafeForEach(evento.Adicionar);
 }
 public void FixtureSetUp()
 {
     _proposta = PropostaBuilder.UmaProposta().Build();
 }
 public static IEnumerable <HistoricoCoberturaContratada> ToHistoricoCoberturas(this IProposta proposta)
 {
     foreach (var produto in proposta.Produtos)
     {
         var beneficiario = produto.Beneficiarios?.OrderByDescending(d => d.DataNascimento).FirstOrDefault();
         foreach (var cobertura in produto.Coberturas)
         {
             var cobContratada = new CoberturaContratada(Convert.ToInt64(cobertura.IdentificadorExterno));
             yield return(new HistoricoCoberturaContratada(cobContratada)
             {
                 SexoBeneficiario = beneficiario?.Sexo,
                 DataNascimentoBeneficiario = beneficiario?.DataNascimento,
                 PeriodicidadeId = (short)proposta.DadosPagamento.Periodicidade
             });
         }
     }
 }
 bool IAnalistaCredito.Aprovar(IProposta proposta) =>
 false;
Пример #19
0
 public ImplantacaoContext(IProposta request) : base(request)
 {
 }
Пример #20
0
 public static EventoImplantacao ToEvento(this IProposta proposta)
 {
     return(new EventoImplantacao(proposta.Identificador, proposta.IdentificadorCorrelacao, proposta.IdentificadorNegocio, proposta.DataExecucaoEvento)
            .ComCoberturas(proposta.ObterCoberturasDaProposta()));
 }
 protected void ProcessarImplatacao(bool isValid, bool ehImplantacao)
 {
     _proposta = new JsonToProposta().ObterProposta(isValid, ehImplantacao);
     GetInstance <ImplantacaoPropostaService>().Execute(_proposta).Wait();
 }
Пример #22
0
 public AlteracaoContext(IProposta request) : base(request)
 {
 }