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."); }
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)); }