Пример #1
0
        public static IOptionFilterStrategy GetStrategy(AdminOptionFilterStrategy optionFilterStrategy, string name)
        {
            switch (optionFilterStrategy)
            {
            case AdminOptionFilterStrategy.All:
                return(new ReturnAllFilterStrategy());

            case AdminOptionFilterStrategy.OptionType:
                return(new FilterOptionsByOptionTypeNameStrategy(name));

            default:
                throw new InvalidEnumArgumentException();
            }
        }
Пример #2
0
        public async Task <IActionResult> Index(
            string name,
            AdminOptionFilterStrategy filter = AdminOptionFilterStrategy.All,
            int pageNumber = 1)
        {
            var cookies = this.HttpContext.Request.Cookies;

            var sortStrategyKey = WebConstants.CookieAdminOptionsSortTypeKey;
            var sortType        = this.cookiesService.GetValueOrDefault <OptionSortStrategyType>(cookies, sortStrategyKey);

            var sortDirectionKey = WebConstants.CookieAdminOptionsSortDirectionKey;
            var sortDirection    = this.cookiesService.GetValueOrDefault <SortStrategyDirection>(cookies, sortDirectionKey);

            var sortStrategy    = OptionSortStrategyFactory.GetStrategy(sortType, sortDirection);
            var filterStrategy  = OptionFilterStrategyFactory.GetStrategy(filter, name);
            var allOptions      = this.optionRepository.GetAll();
            var filteredOptions = filterStrategy.Filter(allOptions);

            // TODO: Make use of projectTo
            var optionServiceModels = await this.adminOptionsService
                                      .GetAllSorted(filteredOptions, sortStrategy, pageNumber)
                                      .ToArrayAsync();

            var optionViewModels = Mapper.Map <IEnumerable <OptionViewModel> >(optionServiceModels);

            var model = new AdminOptionsViewModel()
            {
                CurrentPage           = pageNumber,
                Options               = optionViewModels,
                TotalPagesCount       = await PaginationHelper.CountTotalPagesCountAsync(filteredOptions),
                SortStrategyDirection = sortDirection,
                SortStrategyType      = sortType
            };

            return(View(model));
        }