Beispiel #1
0
        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);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #7
0
        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;
            }
        }
Beispiel #9
0
        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));
        }
Beispiel #10
0
 public void Sacar(Guid id, [FromBody] SaqueViewModel saqueViewModel)
 {
     _contaAppService.Sacar(saqueViewModel);
 }