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); }