public BrowseProductViewModel(Product product) { this.product = product; foreach (var cardSet in product.CardSets()) { foreach (var card in cardSet.Cards.OrderBy(x => x.Number)) { cardViewModels.Add(new CardViewModel(card)); } } if (product.CardSets().Count() == 1) { var cardSet = string.Empty; var first = product.CardSets().FirstOrDefault(); if (first != null) { cardSet = first.Name.Replace(' ', '+'); } searchUrl = string.Format("/Cards/Search?CardSet={0}&Sort=Set_Number", cardSet); } else { var query = string.Format("%2Bproduct%3A{0}", product.Name.Replace(":", string.Empty).Replace(' ', '_')); searchUrl = string.Format("/Cards/Search?Query={0}&Sort=Set_Number", query); } }
public ProductViewModel(Product product, Func <string, byte> getPopularity) { _product = product; Popularity = 0; double popCardCount = 0; double totalPop = 0; foreach (var set in product.CardSets().Where(setHasPopularity)) { foreach (var card in set.Cards) { var pop = getPopularity(card.Slug); if (pop > 1) { popCardCount++; totalPop += pop; } } } if (popCardCount > 0 && totalPop > 0) { AveragePopularity = totalPop / popCardCount; if (AveragePopularity > 7) { AveragePopularity = 7; } Popularity = (byte)Math.Round(AveragePopularity, MidpointRounding.AwayFromZero); } }