コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: DataStart.cs プロジェクト: allansud/devboost.tddbdd
 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();
         }
     }
 }
コード例 #3
0
        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);
        }
コード例 #4
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);
        }
コード例 #5
0
        //Registra o pedido do cliente
        public Pedido AddPedido(InputPedido pedido)
        {
            var total = CalcularValorTotal(pedido);

            return(_pedidoRepository.AddPedido(pedido, total));
        }
コード例 #6
0
 public async Task <Pedido> AddPedido(int producto, int usuario)
 {
     return(await _pedidoRepository.AddPedido(producto, usuario));
 }