Ejemplo n.º 1
0
        public FilterResultDTO GetFiltredGame(FilterDTO filterDto, SortTypes sortType, PageInfoDTO pageInfo)
        {
            Expression<Func<Game, bool>> pipeExpression = _pipelineFilter.Execute(GetFilters(filterDto));

            IEnumerable<Game> filtredGames = _unitOfWork.Games.GetMany(pipeExpression);

            int allGamesNumber = filtredGames.Count();

            filtredGames = SortGames(filtredGames, sortType);

            filtredGames = filtredGames.GetPage(pageInfo.ItemsPerPage, pageInfo.PageNumber);

            FilterResultDTO result = new FilterResultDTO
            {
                Games = filtredGames.Select(Mapper.Map<Game, GameDTO>),
                PagesNumber = (allGamesNumber%pageInfo.ItemsPerPage) == 0
                    ? (allGamesNumber/(pageInfo.ItemsPerPage))
                    : (allGamesNumber/pageInfo.ItemsPerPage) + 1
            };

            return result;
        }
Ejemplo n.º 2
0
        private IEnumerable<IFilter> GetFilters(FilterDTO filterDto)
        {
            if (filterDto.Genres != null && filterDto.Genres.Any())
                yield return new GenreFilter(filterDto.Genres);

            if (filterDto.PlatformTypes != null && filterDto.PlatformTypes.Any())
                yield return new PlatformTypeFilter(filterDto.PlatformTypes);

            if (filterDto.Publishers != null && filterDto.Publishers.Any())
                yield return new PublisherFilter(filterDto.Publishers);

            if (filterDto.From > 0.0m)
                yield return new FromPriceFilter(filterDto.From);

            if (filterDto.To > 0.0m)
                yield return new ToPriceFilter(filterDto.To);

            if (!string.IsNullOrEmpty(filterDto.Name))
                yield return new NameFilter(filterDto.Name);

            if( filterDto.DateFilterType != 0 && filterDto.DateFilterType != DateFilterTypes.All )
                yield return new DateFilter( (int)filterDto.DateFilterType );
        }