public async Task <IActionResult> AdicionarPedido(AdicionarPedidoViewModel pedidoViewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState.Values.Select(x => x.Errors))); } var username = User.Identities.FirstOrDefault().Name; var user = await _userService.GetByUserName(username); var cliente = user.Cliente; if (user.Cliente == null) { return(BadRequest("Usuário não é um Cliente")); } var pedido = new Pedido(peso: pedidoViewModel.Peso, DateTime.Now, EnumStatusPedido.AguardandoPagamento, pedidoViewModel.Valor); pedido.InformarCliente(cliente); var motivoRejeicaoPedido = _pedidoService.IsPedidoValido(pedido); if (!String.IsNullOrEmpty(_pedidoService.IsPedidoValido(pedido))) { return(BadRequest($"Pedido rejeitado: {motivoRejeicaoPedido}")); } bool pedidoInserido = await _pedidoService.Insert(pedido); if (!pedidoInserido) { return(BadRequest()); } using (HttpClient client = new HttpClient()) { var body = new AdicionarPagamentoCartaoViewModel() { PedidoId = pedido.Id, Valor = pedidoViewModel.Valor, NumeroCartao = pedidoViewModel.NumeroCartao, BandeiraCartao = pedidoViewModel.Bandeira, MesVencimentoCartao = pedidoViewModel.MesVencimento, AnoVencimentoCartao = pedidoViewModel.AnoVencimento }; var response = await client.PostAsync("https://localhost/api/pagamento", new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { return(BadRequest()); } } return(Ok(pedido)); }
public async Task <IActionResult> PagamentoCartaoPost(AdicionarPagamentoCartaoViewModel viewModel) { // TODO: Verificar como retornar motivo da rejeição do pagamento a partir do service pra não precisar validar aqui, apenas no service. var enviado = await _bus.EnviarComando(_mapper.Map <AdicionarPagamentoCartaoCommand>(viewModel)); if (!enviado) { return(BadRequest()); } return(Ok()); }