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); }
void AddPedido() { foreach (var pedido in pedidoData) { var p = _pedidoRepository.GetPedidos(StatusPedido.aguardandoEntrega).Result; if (p.Count <= 5) { var cliente = clienteData[new Random().Next(0, 3)]; pedido.Cliente = _clienteRepository.GetByUserName(cliente.Nome).Result; pedido.Id = Guid.NewGuid(); _pedidoRepository.AddPedido(pedido).Wait(); } } }
public void AddPedido() { _pedidoRepository.AddPedido(new Pedido { Id = Guid.NewGuid(), Peso = 4, DataHora = DateTime.Now, DistanciaParaOrigem = 2, StatusPedido = StatusPedido.despachado }).Wait(); List <Pedido> lista = _pedidoRepository.GetPedidos(StatusPedido.despachado).Result; Assert.True(lista.Count > 0); }
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); }
//Registra o pedido do cliente public Pedido AddPedido(InputPedido pedido) { var total = CalcularValorTotal(pedido); return(_pedidoRepository.AddPedido(pedido, total)); }
public async Task <Pedido> AddPedido(int producto, int usuario) { return(await _pedidoRepository.AddPedido(producto, usuario)); }