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)); }
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(); }
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); }
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); }
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(); }
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); }
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(); }
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(); }
private void ObterProposta() { _proposta = PropostaBuilder.UmaProposta().Padrao().Build(); }
public void FixtureSetUp() { _proposta = PropostaBuilder.UmaProposta().ComNumeroProposta(IdentificadoresPadrao.NumeroProposta).Build(); }
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;
public ImplantacaoContext(IProposta request) : base(request) { }
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(); }
public AlteracaoContext(IProposta request) : base(request) { }