protected CalculoCreditoBase(SolicitacaoCredito solicitacao)
 {
     this.Solicitacao           = solicitacao;
     _dataMinPrimeiroVencimento = DateTime.Now.AddDays(15);
     _dataMaxPrimeiroVencimento = DateTime.Now.AddDays(40);
     ValidacaoEntradas();
 }
        public static SolicitacaoCredito MapToEntity(this SolicitacaoCreditoDTO dto)
        {
            SolicitacaoCredito entity = new SolicitacaoCredito
            {
                DataPrimeiroVencimento = dto.DataPrimeiroVencimento,
                QtdeParcelas           = dto.QtdeParcelas,
                TipoCredito            = dto.TipoCredito,
                ValorCredito           = dto.ValorCredito
            };

            return(entity);
        }
Beispiel #3
0
        private void ConfirmarGeracaoCredito(SolicitacaoCredito solicitacaoConfirmada)
        {
            var evento = new SolicitacaoCreditoConfirmada(solicitacaoConfirmada);

            DomainEventNotifier.Raise(evento);

            if (evento.Processado)
            {
                var solicitacao = _repository.Localizar(solicitacaoConfirmada.Id);
                solicitacao.ConfirmarCreditoGerado();
                _repository.Salvar(solicitacao);
            }
        }
Beispiel #4
0
        public async Task <IActionResult> SolicitarCredito([FromBody] SolicitacaoCreditoDTO model)
        {
            try
            {
                SolicitacaoCredito credito = model.MapToEntity();

                LinhaCredito linhaCredito = await _uow.LinhasCreditos.GetByIdAsync(credito.TipoCredito);

                credito.PercentualTaxa = linhaCredito.PorcentoMes > 0 ? linhaCredito.PorcentoMes : linhaCredito.PorcentoAno;


                SolicitacaoCreditoStatus statusSolicitacao = null;

                if (credito.TipoCredito == 1)
                {
                    statusSolicitacao = credito.ProcessarSolicitacaoCreditoDireto();
                }
                else if (credito.TipoCredito == 2)
                {
                    statusSolicitacao = credito.ProcessarSolicitacaoCreditoConsignado();
                }
                else if (credito.TipoCredito == 3)
                {
                    statusSolicitacao = credito.ProcessarSolicitacaoCreditoPessoaJuridica();
                }
                else if (credito.TipoCredito == 4)
                {
                    statusSolicitacao = credito.ProcessarSolicitacaoCreditoPessoaFisica();
                }
                else if (credito.TipoCredito == 5)
                {
                    statusSolicitacao = credito.ProcessarSolicitacaoCreditoImobiliario();
                }

                return(Ok(new ApiOkResponse(statusSolicitacao)
                {
                    Message = statusSolicitacao.StatusCredito
                }));
            }
            catch
            {
                return(BadRequest(new ApiBadRequestResponse(new List <string> {
                    "Erro ao tentar solicitar o crédito"
                })));
            }
        }
Beispiel #5
0
        static void PrintResultado(SolicitacaoCredito s)
        {
            Console.WriteLine("Tipo: " + s.TipoCreditoSolicitado + "\n");
            Console.WriteLine("Valor: " + s.ValorCredito + "\n");
            Console.WriteLine("Parcelas: " + s.QtdParcelas + "\n");
            Console.WriteLine("Data primeiro vencimento: " + s.DataPrimeiroVencimento + "\n");

            Console.WriteLine("Status " + (s.StatusAprovacao.Value ? "Aprovado" : "Reprovado") + "\n");
            if (!s.StatusAprovacao.Value)
            {
                Console.WriteLine("Motivo Negacao " + s.MotivoNegacao + "\n");
            }


            if (s.StatusAprovacao.Value)
            {
                Console.WriteLine("Total com Juros: " + s.ValorTotalComJuros + "\n");
                Console.WriteLine("Valor Juros: " + s.ValorJuros + "\n");
            }
            Console.WriteLine("\n\n-------------------------------------------------------------------------------------\n");
        }
        public ICalculoCredito GetCalculo(SolicitacaoCredito solicitacao)
        {
            switch (solicitacao.TipoCreditoSolicitado)
            {
            case Enum.TipoCreditoEnum.CreditoDireto:
                return(new CreditoDireto(solicitacao));

            case Enum.TipoCreditoEnum.CreditoConsignado:
                return(new CreditoConsignado(solicitacao));

            case Enum.TipoCreditoEnum.CreditoImobiliario:
                return(new CreditoImobiliario(solicitacao));

            case Enum.TipoCreditoEnum.CreditoPessoaFisica:
                return(new CreditoPessoaFisica(solicitacao));

            case Enum.TipoCreditoEnum.CreditoPessoaJuridica:
                return(new CreditoPessoaJuridica(solicitacao));

            default:
                throw new Exception("Tipo de crédito não identificado");
            }
        }
 public SolicitacaoCreditoConfirmada(SolicitacaoCredito solicitacaoCredito)
 {
     SolicitacaoCredito = solicitacaoCredito;
 }
 public AutorizacaoCreditoPolicy(SolicitacaoCredito solicitacao)
 {
     Solicitacao = solicitacao;
 }
Beispiel #9
0
 public CreditoConsignado(SolicitacaoCredito solicitacao)
     : base(solicitacao)
 {
     this._taxa = 1;
 }
Beispiel #10
0
 public CreditoDireto(SolicitacaoCredito solicitacao)
     : base(solicitacao)
 {
     this._taxa = 2;
 }
 public CreditoImobiliario(SolicitacaoCredito solicitacao)
     : base(solicitacao)
 {
     this._taxa = 9;
 }
Beispiel #12
0
 public void Salvar(SolicitacaoCredito solicitacao)
 {
     Chamado = true;
     return;
 }
 public SolicitacaoCreditoPolicy(SolicitacaoCredito solicitacao)
 {
     Solicitacao = solicitacao;
 }
Beispiel #14
0
 public CreditoPessoaFisica(SolicitacaoCredito solicitacao)
     : base(solicitacao)
 {
     this._taxa = 3;
 }
 public CreditoPessoaJuridica(SolicitacaoCredito solicitacao)
     : base(solicitacao)
 {
     this._taxa = 5;
 }
Beispiel #16
0
 public static bool SolictacaoBaixoRisco(this SolicitacaoCredito solicitacao)
 {
     return(solicitacao.Avaliacao.Risco == Enums.TipoRisco.Baixo &&
            solicitacao.ValorAutorizado <= 20000);
 }
Beispiel #17
0
 public SolicitacaoCreditoPolicy(SolicitacaoCredito solicitacao)
 {
     Solicitacao = solicitacao;
 }
Beispiel #18
0
 public AutorizacaoCreditoPolicy(SolicitacaoCredito solicitacao)
 {
     Solicitacao = solicitacao;
 }
Beispiel #19
0
 public abstract DadosRetornoSolicitacao CalcularTaxaCredito(SolicitacaoCredito solicitacaoCredito);
Beispiel #20
0
 public SolicitacaoCreditoConfirmada(SolicitacaoCredito solicitacaoCredito)
 {
     SolicitacaoCredito = solicitacaoCredito;
 }