public ActionResult Search(ArkhamSearchViewModel model) { initSearch(model); var results = searchService.Search(model); model.LoadCards(results.Select(x => { return(new ArkhamCardViewModel(x.Card)); })); return(View(model)); }
private void initSearch(ArkhamSearchViewModel model) { if (string.IsNullOrEmpty(model.Product) || model.Product == "None" || model.Product == "Any") { model.Product = null; } if (model.CardType.HasValue && model.CardType.Value == ArkhamCardType.None) { model.CardType = null; } if (model.CardClass.HasValue && model.CardClass.Value == ArkhamClass.None) { model.CardClass = null; } if (model.Willpower.HasValue && model.Willpower.Value == 0) { model.Willpower = null; } if (model.Intellect.HasValue && model.Intellect.Value == 0) { model.Intellect = null; } if (model.Combat.HasValue && model.Combat.Value == 0) { model.Combat = null; } if (model.Agility.HasValue && model.Agility.Value == 0) { model.Agility = null; } if (string.IsNullOrEmpty(model.Trait) || model.Trait == "None" || model.Trait == "Any") { model.Trait = null; } if (model.Sort.HasValue && model.Sort.Value == ArkhamSearchSort.None) { model.Sort = null; } if (model.View.HasValue && model.View.Value == ArkhamSearchView.None) { model.View = null; } ArkhamSearchViewModel.LoadProducts(productRepository.Products().Select(x => { return(x.Name); }).GetExtendedSelectListItems()); ArkhamSearchViewModel.LoadTraits(productRepository.Traits().Distinct().OrderBy(x => { return(x); }).GetExtendedSelectListItems()); ArkhamSearchViewModel.LoadSkillValues(Skill.Willpower, productRepository.SkillValues(Skill.Willpower).Distinct().Where(x => { return(!string.IsNullOrEmpty(x)); }).OrderBy(x => { return(x); }).GetExtendedSelectListItems()); ArkhamSearchViewModel.LoadSkillValues(Skill.Intellect, productRepository.SkillValues(Skill.Intellect).Distinct().Where(x => { return(!string.IsNullOrEmpty(x)); }).OrderBy(x => { return(x); }).GetExtendedSelectListItems()); ArkhamSearchViewModel.LoadSkillValues(Skill.Combat, productRepository.SkillValues(Skill.Combat).Distinct().Where(x => { return(!string.IsNullOrEmpty(x)); }).OrderBy(x => { return(x); }).GetExtendedSelectListItems()); ArkhamSearchViewModel.LoadSkillValues(Skill.Agility, productRepository.SkillValues(Skill.Agility).Distinct().Where(x => { return(!string.IsNullOrEmpty(x)); }).OrderBy(x => { return(x); }).GetExtendedSelectListItems()); }
public ActionResult Search_Post(ArkhamSearchViewModel model) { initSearch(model); return(RedirectToAction("Search", "Arkham", model)); }
public IEnumerable <ArkhamSearchResult> Search(ArkhamSearchViewModel model) { var results = new List <ArkhamSearchResult>(); foreach (var product in productRepository.Products()) { foreach (var card in product.Cards()) { if (!string.IsNullOrEmpty(model.Product) && model.Product != "Any" && card.Product.Name != model.Product) { continue; } if (model.CardType.HasValue && model.CardType != ArkhamCardType.None && card.CardType != model.CardType.Value) { continue; } if (model.CardClass.HasValue && model.CardClass != ArkhamClass.None && card.Class != model.CardClass.Value) { continue; } if (model.Willpower.HasValue && model.Willpower.Value > 0 && model.Willpower.Value != card.Willpower) { continue; } if (model.Intellect.HasValue && model.Intellect.Value > 0 && model.Intellect.Value != card.Intellect) { continue; } if (model.Combat.HasValue && model.Combat.Value > 0 && model.Combat.Value != card.Combat) { continue; } if (model.Agility.HasValue && model.Agility.Value > 0 && model.Agility.Value != card.Agility) { continue; } if (!string.IsNullOrEmpty(model.Trait) && model.Trait != "Any" && !card.Traits().Any(x => x.Replace(".", "") == model.Trait.Replace(".", ""))) { continue; } results.Add(new ArkhamSearchResult(card)); } } if (!model.Sort.HasValue) { return(results.OrderByDescending(x => x.Score).ToList()); } switch (model.Sort) { case ArkhamSearchSort.Alphabetical: return(results.OrderBy(x => x.Card.Name).ToList()); case ArkhamSearchSort.Set_Number: return(results.OrderBy(x => x.Card.Product.ReleaseDate).ThenBy(x => x.Card.Number).ToList()); default: return(results.OrderByDescending(x => x.Score).ToList()); } }