public void UpdateBeers(List <Beer> beers, Func <Beer, bool> predicate) { if (beers.Count == 0) { return; } long offset = 0; int counter = 0; bool isRun = true; while (isRun) { HttpResponseMessage httpResponse = GetHttpResponse($"user/beers/?offset={offset}&limit=50"); if ((long)httpResponse.StatusCode == 429) { throw new ArgumentException(httpResponse.ReasonPhrase); } string responseBody = httpResponse.Content.ReadAsStringAsync().Result; BeersQuickType beersQuickType = JsonConvert.DeserializeObject <BeersQuickType>(responseBody, jsonSerializerSettings); int countUpdate = UpdateBeersHelper.UpdateBeers(beers, beersQuickType); if (countUpdate > 0) { counter += countUpdate; UploadedCountInvoke(counter); } if (beersQuickType.Response.Pagination.Offset.HasValue) { offset = beersQuickType.Response.Pagination.Offset.Value; } else { isRun = false; } if (predicate != null && !beers.Any(predicate)) { isRun = false; } } }
public static int UpdateBeers(List <Beer> beers, BeersQuickType beersQuickType) { int counter = 0; List <BeerWeb> webBeers = beersQuickType.Response.Beers.Items.Select(item => item.Beer).ToList(); foreach (BeerWeb webBeer in webBeers) { Beer beer = beers.FirstOrDefault(item => item.Id == webBeer.Bid); if (beer == null) { continue; } bool isUpdate = false; if (webBeer.RatingScore > 0) { beer.GlobalRatingScore = webBeer.RatingScore; isUpdate = true; } if (webBeer.BeerIbu > 0) { beer.IBU = webBeer.BeerIbu; isUpdate = true; } if (!String.IsNullOrEmpty(webBeer.BeerDescription)) { beer.Description = webBeer.BeerDescription; isUpdate = true; } if (isUpdate) { counter++; } } return(counter); }