public async Task <IActionResult> Post([FromBody] RealizarPedidoRequest request) { _log.AddPassos("_mediator.Send(RealizarPedidoRequest, CancellationToken.None);"); var result = await _mediator.Send(request, default); return(Ok(_log.Passos)); }
public async Task <Pedido> RealizarPedido(RealizarPedidoRequest pedidoRequest, string userName) { // Encontra cliente pelo Usuário Logado (Token) var cliente = await _clienteRepository.GetByUserName(userName); if (cliente == null) { throw new Exception("Cliente não localizado"); } // Cálcula a distância para o pedido var distancia = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(LATITUDE, LONGITUDE, cliente.Latitude, cliente.Longitude)); var pagamento = new PagamentoCartao( pedidoRequest.Bandeira, pedidoRequest.Numero, pedidoRequest.Vencimento, pedidoRequest.CodigoSeguranca, pedidoRequest.Valor, StatusCartao.aguardandoAprovacao ); // Salva o pedido na base var pedido = new Pedido { Cliente = cliente, DataHora = DateTime.Now, Peso = pedidoRequest.Peso, DistanciaParaOrigem = distancia, StatusPedido = StatusPedido.aguardandoAprovacao, PagamentoCartao = pagamento }; //await _pedidoRepository.AddPedido(pedido); await _pedidoRepository.AddPedido(pedido); // Envia o pedido para Pagamento var pagamentoREquest = new CmmPagRequest() { Bandeira = pagamento.Bandeira, CodigoSeguranca = pagamento.CodigoSeguranca, CreatedAt = DateTime.Now, Name = cliente.Nome, NumeroCartao = pagamento.Numero, PayId = pagamento.Id, Status = StatusCartao.aguardandoAprovacao, Valor = pagamento.Valor, Vencimento = pagamento.Vencimento }; var result = await _payAPIHandler.PostRealizarPagamento(pagamentoREquest); if (!result.IsSuccessStatusCode) { throw new Exception("Falha ao realizar o pagamento"); } return(pedido); }
public async Task <ActionResult> RealizarPedido([FromBody] RealizarPedidoRequest pedido) { try { var userName = _accessor.HttpContext.User.Identity.Name; var result = await _pedidoService.RealizarPedido(pedido, userName); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public void RealizarPedidoHandler_Test() { var realizarPedidoHandler = new RealizarPedidoHandler(_mediatorMock.Object, _logMock.Object); var realizarPedidoRequest = new RealizarPedidoRequest() { Nome = "Teste pedido", Quantidade = 1, Valor = 100M }; var result = realizarPedidoHandler.Handle(realizarPedidoRequest, default); _notifications.Should().ContainItemsAssignableTo <PedidoRealizadoEvent>(); }
public async Task <IActionResult> AdicionarMesa([FromBody] RealizarPedidoRequest request, string FkMesa) { try { string usuarioClaims = _httpContextAccessor.HttpContext.User.FindFirst("Usuario").Value; AutenticarUsuarioResponse usuarioResponse = JsonConvert.DeserializeObject <AutenticarUsuarioResponse>(usuarioClaims); request.FkUsuario = usuarioResponse.Id; request.FkMesa = Guid.Parse(FkMesa); var response = await _mediator.Send(request, CancellationToken.None); return(await ResponseAsync(response)); } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <Pedido> RealizarPedido(RealizarPedidoRequest pedidoRequest, string userName) { var cliente = await _clienteRepository.GetByUserName(userName); if (cliente == null) { throw new Exception("Cliente não localizado"); } var distancia = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(LATITUDE, LONGITUDE, cliente.Latitude, cliente.Longitude)); var pedido = new Pedido { Id = Guid.NewGuid(), Cliente = cliente, DataHora = DateTime.Now, Peso = pedidoRequest.Peso, DistanciaParaOrigem = distancia, StatusPedido = StatusPedido.aguardandoEntrega }; await _pedidoRepository.AddPedido(pedido); return(pedido); }