private async Task <OriginalListResponse> GetOriginalList(OriginalListRequest request)
        {
            string path = baseUrl;
            OriginalListResponse response = null;
            int    requestType            = 0;
            string rawJsonResponse        = null;

            if (request.Zip != null)
            {
                //search by zip
                path       += $"/zipSearch?zip={request.Zip}";
                requestType = (int)RequestTypeEnum.ByZip;
            }
            else if (request.Lat != null && request.Lon != null)
            {
                //search by location
                path       += $"/locSearch?lat={request.Lat}&lng={request.Lon}";
                requestType = (int)RequestTypeEnum.ByLocation;
            }
            else
            {
                //bad Request
                return(null);
            }

            HttpResponseMessage httpResponse = await http.GetAsync(path);

            if (httpResponse.IsSuccessStatusCode)
            {
                rawJsonResponse = await httpResponse.Content.ReadAsStringAsync();

                response = JsonConvert.DeserializeObject <OriginalListResponse>(rawJsonResponse);

                //save request to database
                await dbService.RecordRequest(new Models.DatabaseModels.Request()
                {
                    RequestType = requestType,
                    RequestZip  = request.Zip,
                    RequestLat  = request.Lat,
                    RequestLon  = request.Lon,
                    Response    = rawJsonResponse,
                    CreatedDate = new DateTime()
                });
            }

            return(response);
        }
        public async Task <ListResponse> GetValidatedMarketList(OriginalListRequest request)
        {
            OriginalListResponse originalListResponse = await GetOriginalList(request);

            ListResponse listResponse = new ListResponse();
            List <Models.DatabaseModels.Market> databaseMarkets = new List <Models.DatabaseModels.Market>();

            listResponse.Response = new List <Market>();

            if (originalListResponse != null)
            {
                originalListResponse.results.ForEach(async item =>
                {
                    int decimalIndex = item.marketname.IndexOf(".", 0, 5);
                    string name      = item.marketname.Substring(decimalIndex + 3);
                    string distance  = item.marketname.Substring(0, decimalIndex + 2);

                    Models.DatabaseModels.Market databaseMarket = new Models.DatabaseModels.Market
                    {
                        MarketNumber = item.id,
                        Name         = name,
                        IsFavorite   = false
                    };

                    databaseMarkets.Add(databaseMarket);

                    databaseMarket = await dbService.AddUpdateMarketToDatabase(databaseMarket);

                    listResponse.Response.Add(new Market
                    {
                        MarketNumber = item.id,
                        Name         = name,
                        Distance     = distance,
                        IsFavorite   = databaseMarket.IsFavorite
                    });
                });

                await dbService.SaveChanges();

                //databaseMarkets = await dbService.AddUpdateMarketsToDatabase(databaseMarkets);

                return(listResponse);
            }
            return(null);
        }