public static bool ClientePossuiDinheiroSuficienteNoFundoSelecionado(MovimentacaoRequestDTO dto, List <Movimentacao> movimentacoesCliente) { var movimentacoes = movimentacoesCliente.Where(x => x.IdFundo == Guid.Parse(dto.IdFundo)); var dinheiroDisponivelNoFundo = RetornarValorAplicadoNoFundo(movimentacoes); return(dinheiroDisponivelNoFundo >= dto.ValorMovimentacao); }
public bool Resgatar(MovimentacaoRequestDTO dto) { ValidarResgate(dto); var movimentacao = new Movimentacao(dto, TipoMovimentacao.Resgate); return(_movimentacaoRepository.CriarMovimentacao(movimentacao)); }
public Movimentacao(MovimentacaoRequestDTO dto, TipoMovimentacao tipoMovimentacao) { Id = Guid.NewGuid(); IdTipoMovimentacao = (int)tipoMovimentacao; IdFundo = Guid.Parse(dto.IdFundo); CPFCliente = dto.CPFCliente; ValorMovimentacao = dto.ValorMovimentacao; DataMovimentacao = DateTime.Now; }
public async Task <IActionResult> Resgatar([FromBody] MovimentacaoRequestDTO movimentacao) { try { return(Ok(_fundoService.Resgatar(movimentacao))); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
private bool ValidarResgate(MovimentacaoRequestDTO dto) { var movimentacoesCliente = _movimentacaoRepository.ListarMovimentacoesCliente(dto.CPFCliente); if (!ClientePossuiDinheiroAplicadoNoFundo(dto, movimentacoesCliente)) { throw new Exception("O Cliente não possui dinheiro investido no fundo selecionado."); } if (!ClientePossuiDinheiroSuficienteNoFundoSelecionado(dto, movimentacoesCliente)) { throw new Exception("O valor informado para resgate é maior do que o cliente possui investido."); } return(true); }
public static bool ClientePossuiDinheiroAplicadoNoFundo(MovimentacaoRequestDTO dto, List <Movimentacao> movimentacoesCliente) { return(movimentacoesCliente.Any(x => x.IdFundo == Guid.Parse(dto.IdFundo))); }
public bool Aplicar(MovimentacaoRequestDTO dto) { var movimentacao = new Movimentacao(dto, TipoMovimentacao.Aplicacao); return(_movimentacaoRepository.CriarMovimentacao(movimentacao)); }