public SaqueViewModel Sacar(SaqueViewModel saqueViewModel) { var conta = _contaRepository.ObterPorId(saqueViewModel.Id); Transacoes transacoes = new Transacoes(saqueViewModel.ValorSaque, TipoTransacao.Saque, conta.Id); transacoes.Conta = conta; var contaRet = _contaService.Sacar(conta, transacoes); saqueViewModel = Mapper.Map <SaqueViewModel>(contaRet); if (contaRet.ValidationResult.IsValid) { _transacaoService.Adicionar(transacoes); } else { contaRet.ValidationResult.Message = "Ocorreu um erro ao sacar!"; return(Mapper.Map <SaqueViewModel>(contaRet)); } if (transacoes.ValidationResult.IsValid) { Commit(); contaRet.ValidationResult.Message = "Saque realizado com sucesso!"; } return(Mapper.Map <SaqueViewModel>(contaRet)); }
public async Task <CaixaViewModel> SaqueAsync(SaqueViewModel saqueViewModel, string _correlationId) { CaixaViewModel result = null; var saqueDomain = _mapper.Map <SaqueViewModel, Saque>(saqueViewModel); saqueDomain.ClienteId = await _criptografia.DecryptString(saqueDomain.ClienteId); var caixa = await _caixasRepository.CaixasAsync(saqueDomain.IdCaixa, _correlationId); var CaixaIsValid = ValidarCaixa(caixa, saqueDomain); var notasIsValid = ValidarNotas(saqueDomain.Valor, ref caixa); //var saldoIsValid = ValidarSaldo(saqueDomain); if (CaixaIsValid && notasIsValid) { var caixaComSaque = await _saquesRepository.SaqueAsync(saqueDomain, caixa, _correlationId); result = _mapper.Map <Caixa, CaixaViewModel>(caixaComSaque); } return(result); }
public ActionResult Saque(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SaqueViewModel SaqueViewModel = _contaAppService.ObterDadosSaque(id.Value); if (SaqueViewModel == null) { return(HttpNotFound()); } return(View(SaqueViewModel)); }
public ActionResult Saque(SaqueViewModel saqueViewModel) { if (!ModelState.IsValid) { return(View(saqueViewModel)); } saqueViewModel = _contaAppService.Sacar(saqueViewModel); if (saqueViewModel.ValidationResult.IsValid) { TempData["Sucesso"] = saqueViewModel.ValidationResult.Message; return(View(saqueViewModel)); } PopularModelComErros(saqueViewModel.ValidationResult); return(View(saqueViewModel)); }
public async Task <IActionResult> RealizarSaque([FromQuery] int contaId, [FromBody] SaqueViewModel saque) { try { var resultado = await _contaBancariaService.RealizarSaque(contaId, saque.Valor); if (resultado.Item1) { return(Ok("Saque realizado com sucesso!")); } else { return(BadRequest(resultado.Item2)); } } catch (Exception ex) { _logger.LogError(ex, $"SaqueController - Erro ao realizar Saque na conta {contaId} em {DateTime.Now}"); return(BadRequest("Erro ao obter o extrato. Caso o erro persista, contate o Administrador")); } }
public async Task <(bool, string)> RealizarSaque(int contaId, SaqueViewModel saqueVM) { var json = new StringContent( JsonConvert.SerializeObject(saqueVM), Encoding.UTF8, "application/json"); var response = await Client.PostAsync($"/api/ContaBancaria/RealizarSaque?contaId={contaId}", json); var responseStream = await response.Content.ReadAsStringAsync(); var mensagemDeErro = JsonConvert.DeserializeObject <string>(responseStream); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return(true, null); } else { return(false, mensagemDeErro); } }
public async Task Saque_Async_PreconditionFailed_412() { // Arrange var _correlationId = Guid.NewGuid().ToString(); var saque = new SaqueViewModel(); saque.ClienteId = "2v/Y2GtNHhwtnoTVa4lyAcDyT+IyEAbOLyMDXjRVYbA="; saque.IdCaixa = "2v/Y2GtNHhwtnoTVa4lyAcDyT+IyEAbOLyMDXjRVYbA="; saque.Valor = 2000; _mocker.GetMock <ISaquesService>() .Setup(c => c.SaqueAsync(saque, _correlationId)); // Act var result = await _saquesController.SaquesAsync(saque); var resultStatus = result as ObjectResult; // Assert Assert.NotNull(resultStatus); Assert.Equal(412, resultStatus.StatusCode); }
public async Task <IActionResult> SaquesAsync(SaqueViewModel saqueViewModel) { _stopWatch.Start(); _correlationId = Guid.NewGuid().ToString(); try { if (saqueViewModel.Valor <= VALORMINIMO || saqueViewModel.Valor > VALORMAXIMO) { //log return(StatusCode((int)HttpStatusCode.PreconditionFailed, $"O valor minimo e maximo para saques são {VALORMINIMO} e {VALORMAXIMO}")); } var caixa = await _saquesService.SaqueAsync(saqueViewModel, _correlationId); if (caixa != null) { await _caixaHub.Clients.All.SendAsync("atualizacaoCaixa", caixa); //log return(Ok("Saque Efetuado com Sucesso")); } else { //log return(BadRequest("Saque invalido")); } } catch (Exception ex) { //log throw; } }
public IActionResult Index(SaqueViewModel saqueViewModel) { SaqueService saqueService = new SaqueService(); SaqueDTO saqueDTO = new SaqueDTO { ValorRequisitado = saqueViewModel.ValorRequisitado }; if (!saqueService.EstaNoLimite(saqueDTO)) { saqueViewModel.Erro = @"O valor informado passou do limite de R$ 1.500,00."; return(View(saqueViewModel)); } if (!saqueService.ValorRequisitadoValido(saqueDTO)) { saqueViewModel.Erro = @"O valor informado é inválido. Favor informar um valor múltiplo de 2, 5, 10, 20, 50 ou 100."; return(View(saqueViewModel)); } saqueViewModel.ValoresSaque = saqueService.RealizaSaque(saqueDTO); return(View(saqueViewModel)); }
public void Sacar(Guid id, [FromBody] SaqueViewModel saqueViewModel) { _contaAppService.Sacar(saqueViewModel); }