コード例 #1
0
        public async Task <IActionResult> ByTag(string variant, string tag)
        {
            if (Regex.IsMatch(tag, "[^0-9a-zA-Z-]"))
            {
                return(ViewResultForHttpError(HttpContext, new HttpErrors.NotFound("Invalid tag.")));
            }

            tag = tag.ToLowerInvariant();
            List <Puzzle> puzzles = await puzzleRepository.FindByVariantAndTag(variant, tag) ?? new List <Puzzle>();

            if (puzzles.Count == 0)
            {
                await tagRepository.MaybeRemoveTagAsync(variant, tag);

                return(ViewResultForHttpError(HttpContext, new HttpErrors.NotFound("That tag has no puzzles for this variant.")));
            }

            PuzzleTag tagDetails = await tagRepository.FindTag(variant, tag);

            ViewBag.Variant     = tagDetails.Variant;
            ViewBag.Tag         = tagDetails.Name;
            ViewBag.Description = tagDetails.Description;
            return(View(puzzles.Select(p => p.ID).OrderBy(x => x).ToList()));
        }