public IActionResult Search(float lat, float lng, int[] category, string search)
        {
            if (category.Length == 0)
            {
                return(View(new SearchModel()));
            }

            var request = new MerchantLocatorRequest
            {
                Latitude   = lat,
                Longitude  = lng,
                Category   = category,
                Distance   = 99,
                StartIndex = 0
            };

            var response = MerchantLocatorService.GetMerchantsNear(request, 2);

            var model = new SearchModel
            {
                Latitude    = lat,
                Longitude   = lng,
                Response    = response,
                Category    = category,
                SearchQuery = search
            };

            return(View(model));
        }
示例#2
0
        public static MerchantLocatorServiceResponse GetMerchantsNear(MerchantLocatorRequest request, int pages)
        {
            MerchantLocatorServiceResponse baseResponse = null;

            for (var i = 0; i < pages; i++)
            {
                request.StartIndex = i * 5;
                var jsonRequest = request.AsJson();
                Console.WriteLine(jsonRequest);

                var response = Program.HttpClient.PostAsync(
                    Program.ApiKeys.MerchantSearchApiUrl,
                    new StringContent(jsonRequest, Encoding.UTF8, "application/json")).Result;

                var result = response.Content.ReadAsStringAsync().Result;
                Console.WriteLine(result);

                try
                {
                    var deserialized = JsonConvert.DeserializeObject <MerchantLocatorServiceResponseWrapper>(result)
                                       .MerchantLocatorServiceResponse;

                    if (baseResponse == null)
                    {
                        baseResponse = deserialized;
                    }
                    else
                    {
                        foreach (var merchant in deserialized.Response
                                 .Where(merchant => baseResponse.Response
                                        .All(n => n.ResponseValues.VisaStoreId
                                             != merchant.ResponseValues.VisaStoreId)))
                        {
                            baseResponse.Response.Add(merchant);
                            baseResponse.Header.NumRecordsReturned += 1;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.Write("Error retrieving data - " + e);
                    break;
                }
            }

            return(baseResponse);
        }