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 <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); }
public void TestaCalculaDistancia(double latitudeOrigem, double longitudeOrigem, double latitudeDestino, double longitudeDestino, double resultado) { var result = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(latitudeOrigem, longitudeOrigem, latitudeDestino, longitudeDestino)); Assert.Equal(resultado, result); }