Exemplo n.º 1
0
        public async Task <IActionResult> RemoveTagFromSearched(SearchedDecksModel model)
        {
            model.FilterTags = model.FilterTagsString
                               .Split("#", StringSplitOptions.RemoveEmptyEntries)
                               .ToList();

            model.FilterTags.Remove(model.TagToRemove);
            model.TagFilter = String.Empty;

            if (model.FilterTags.Any())
            {
                model.FilterTagsString = model.FilterTags.Aggregate((x, y) => "#" + x + "#" + y + "#");

                if (!model.FilterTagsString.EndsWith('#'))
                {
                    model.FilterTagsString += "#";
                }
            }
            else
            {
                model.FilterTagsString = "#";
            }

            return(View(nameof(SearchedDecks), await CreateSearchedDecks(model)));
        }
Exemplo n.º 2
0
        private async Task <SearchedDecksModel> CreateSearchedDecks(SearchedDecksModel model)
        {
            var decks = await _context.Decks
                        .Where(deck => deck.IsPublic)
                        .Include(deck => deck.Tags)
                        .ToListAsync();

            var decksInModel = decks.Select(deck => deck);

            if (model.SearchValue is not null)
            {
                decksInModel = decksInModel
                               .Where(deck => deck.Name
                                      .ToLower()
                                      .Contains(model.SearchValue
                                                .ToLower()));
            }

            if (!String.IsNullOrEmpty(model.TagFilter))
            {
                if (model.FilterTagsString is null)
                {
                    model.FilterTagsString = "#";
                }

                if (!model.FilterTagsString.Contains($"#{model.TagFilter}#"))
                {
                    model.FilterTagsString += $"{model.TagFilter.ToLower().Split(' ').Aggregate((x, y) => x += "_" + y)}#";
                }
            }

            if (!String.IsNullOrEmpty(model.FilterTagsString))
            {
                model.FilterTags = model.FilterTagsString
                                   .Split("#", StringSplitOptions.RemoveEmptyEntries)
                                   .ToList();

                decksInModel = decksInModel
                               .Where(deck => !model.FilterTags
                                      .Except(deck.Tags is null ? new List <string>() : deck.Tags.Select(tag => tag.Name))
                                      .Any());
            }

            model.Decks = decksInModel
                          .Select(deck => new DeckModel
            {
                Id         = deck.Id,
                Name       = deck.Name,
                Difficulty = deck.Difficulty,
            })
                          .ToList();

            var user = await _userManager.GetUserAsync(User);

            model.Username = user is null ? "" : user.UserName;

            model.TagFilter = String.Empty;
            return(model);
        }
Exemplo n.º 3
0
 public async Task <IActionResult> SearchedDecks(SearchedDecksModel model)
 => View(await CreateSearchedDecks(model));