Example #1
0
        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));
        }
Example #2
0
        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());
        }
Example #3
0
        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());
            }
        }