Пример #1
0
        public IQueryable <Game> GetFilteredGameList(FilterPanel filter)
        {
            var games = Games.AsNoTracking();

            if (filter == null)
            {
                return(games);
            }

            if (!string.IsNullOrEmpty(filter.Name))
            {
                games = games.Where(g => g.Name.Contains(filter.Name));
            }

            if (filter.Genre != Genre.Default)
            {
                games = games.Where(g => g.Genre == filter.Genre);
            }

            if (filter.Rating.HasValue)
            {
                games.Where(g => g.Rating >= filter.Rating);
            }

            if (!string.IsNullOrEmpty(filter.Publisher))
            {
                games = games.Where(g => g.Publisher.Equals(filter.Publisher));
            }

            if (!string.IsNullOrEmpty(filter.Developer))
            {
                games = games.Where(g => g.Developer.Equals(filter.Developer));
            }

            if (filter.ReleaseYearStart.HasValue && filter.ReleaseYearEnd.HasValue)
            {
                games = games.Where(g => g.ReleaseDate.Year >= filter.ReleaseYearStart && g.ReleaseDate.Year <= filter.ReleaseYearEnd);
            }
            else if (filter.ReleaseYearStart.HasValue && !filter.ReleaseYearEnd.HasValue)
            {
                games = games.Where(g => g.ReleaseDate.Year >= filter.ReleaseYearStart);
            }
            else if (!filter.ReleaseYearStart.HasValue && filter.ReleaseYearEnd.HasValue)
            {
                games = games.Where(g => g.ReleaseDate.Year <= filter.ReleaseYearEnd);
            }

            if (filter.Rating.HasValue)
            {
                games = games.Where(g => g.Rating >= filter.Rating);
            }

            if (!string.IsNullOrEmpty(filter.AgeRating))
            {
                games = games.Where(g => g.AgeRating.Equals(filter.AgeRating));
            }


            return(games);
        }