public async Task <bool> ShopperHasPurchasedProduct(string shopperId, string productId)
        {
            bool hasPurchased = false;

            try
            {
                VtexOrderList vtexOrderList = await _productReviewRepository.ListOrders($"q={shopperId}");

                var orderIds = vtexOrderList.List.Select(o => o.OrderId);
                foreach (string orderId in orderIds)
                {
                    VtexOrder vtexOrder = await _productReviewRepository.GetOrderInformation(orderId);

                    var productIds = vtexOrder.Items.Select(i => i.ProductId);
                    hasPurchased = productIds.Contains(productId);
                    if (hasPurchased)
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                _context.Vtex.Logger.Error("ShopperHasPurchasedProduct", null, "Request Error", ex);
            }

            return(hasPurchased);
        }
        public async Task <VtexOrderList> ListOrders(string queryString)
        {
            VtexOrderList vtexOrderList = new VtexOrderList();

            try
            {
                var request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Get,
                    RequestUri = new Uri($"http://{this._httpContextAccessor.HttpContext.Request.Headers[VTEX_ACCOUNT_HEADER_NAME]}.{ENVIRONMENT}.com.br/api/oms/pvt/orders?{queryString}")
                };

                string authToken = this._httpContextAccessor.HttpContext.Request.Headers[HEADER_VTEX_CREDENTIAL];
                if (authToken != null)
                {
                    request.Headers.Add(AUTHORIZATION_HEADER_NAME, authToken);
                    request.Headers.Add(VTEX_ID_HEADER_NAME, authToken);
                    request.Headers.Add(PROXY_AUTHORIZATION_HEADER_NAME, authToken);
                }

                var client   = _clientFactory.CreateClient();
                var response = await client.SendAsync(request);

                string responseContent = await response.Content.ReadAsStringAsync();

                _context.Vtex.Logger.Info("ListOrders", null, $"[{response.StatusCode}] {responseContent}");
                if (response.IsSuccessStatusCode)
                {
                    vtexOrderList = JsonConvert.DeserializeObject <VtexOrderList>(responseContent);
                    //Console.WriteLine($"ListOrders: [{response.StatusCode}] ");
                }
                else
                {
                    //Console.WriteLine($"ListOrders: [{response.StatusCode}] '{responseContent}'");
                }
            }
            catch (Exception ex)
            {
                _context.Vtex.Logger.Error("ListOrders", null, "Request Error", ex);
            }

            return(vtexOrderList);
        }