private DateTime NovaDataDePagamento(PlanoDePagamento planoDePagamento)
 {
     return(planoDePagamento switch
     {
         PlanoDePagamento.Mensal => DateTime.Now.AddMonths(1).Date,
         PlanoDePagamento.Anual => DateTime.Now.AddMonths(12).Date
     });
        private decimal ObterLimiteDeCredito(PlanoDePagamento planoDePagamento)
        {
            switch (planoDePagamento)
            {
            case PlanoDePagamento.PrePago:
                return(0);

            case PlanoDePagamento.RecargaAutomatica:
            case PlanoDePagamento.PlanoMensalidade:
            case PlanoDePagamento.ValorVariavel:
                return(ObterSaldoMinimoNegativo() * -1);

            case PlanoDePagamento.PrePagoEmpresarial:
            case PlanoDePagamento.PosPagoEmpresarial:
                return(0);
            }

            throw new DomainException("Plano não configurado.");
        }
Пример #3
0
        public async Task <ResponseDto> SalvarNovoPagamento(Guid clienteId, PlanoDePagamento planoDoCliente)
        {
            var ultimoPagamento = await BuscarUltimoPagamentoDoCliente(clienteId);

            if (planoDoCliente == PlanoDePagamento.Mensal &&
                (ultimoPagamento.Month == DateTime.Now.Month &&
                 ultimoPagamento.Year == DateTime.Now.Year))
            {
                return(new ResponseDto
                {
                    Sucesso = false,
                    Mensagem = InformacoesPagamentoMensagens.PAGAMENTO_JA_REALIZADO
                });
            }
            else if (planoDoCliente == PlanoDePagamento.Anual && DateTime.Now.Date < ultimoPagamento.AddDays(360).Date)
            {
                return(new ResponseDto
                {
                    Sucesso = false,
                    Mensagem = InformacoesPagamentoMensagens.PAGAMENTO_JA_REALIZADO
                });
            }

            var novoPagamento = new InformacoesPagamento
            {
                ClienteId     = clienteId,
                DataPagamento = DateTime.Now.Date
            };

            await _informacoesPagamentoRepositorio.Add(novoPagamento);

            return(new ResponseDto
            {
                Sucesso = true,
                Mensagem = InformacoesPagamentoMensagens.PAGAMENTO_SALVO
            });
        }
        public async Task <IActionResult> AlterarPlanoDePagamento(Guid id, PlanoDePagamento planoDePagamento)
        {
            var resultado = await _clienteServico.MudarPlanoDePagamentoDoCliente(new MudarPlanoDePagamentoRequestDto
            {
                ClienteId        = id,
                PlanoDePagamento = planoDePagamento
            });

            var cliente = await _clienteServico.BuscarClientePorId(id);

            var ultimoPagamento = await _pagamentoServico.BuscarUltimoPagamentoDoCliente(id);

            var informacoesPagamentoModelo = new InformacoesPagamentoModel
            {
                Sucesso          = resultado.Sucesso,
                Mensagens        = MontarListaMensagens(resultado.Mensagem),
                IdCliente        = cliente.Id,
                ProximoPagamento = cliente.VencimentoPagamento,
                UltimoPagamento  = ultimoPagamento,
                PlanoDePagamento = cliente.PlanoDePagamento
            };

            return(PartialView("_informacoesDePagamento", informacoesPagamentoModelo));
        }