Example #1
0
        public ActionResult List(GroupFeedListModel model)
        {
            var centralFeedType = _centralFeedTypeProvider[model.TypeId];
            var items           = GetGroupFeedItems(centralFeedType, model.GroupId).ToList();
            var tabSettings     = _groupFeedService.GetSettings(centralFeedType);

            if (IsEmptyFilters(model.FilterState, _feedFilterStateService.CentralFeedCookieExists()))
            {
                model.FilterState = GetFilterStateModel();
            }

            var filteredItems  = _feedFilterService.ApplyFilters(items, model.FilterState, tabSettings).ToList();
            var currentVersion = _groupFeedService.GetFeedVersion(filteredItems);

            if (model.Version.HasValue && currentVersion == model.Version.Value)
            {
                return(null);
            }

            var centralFeedModel = GetFeedListViewModel(model, filteredItems, centralFeedType);
            var filterState      = MapToFilterState(centralFeedModel.FilterState);

            _feedFilterStateService.SaveFiltersState(filterState);

            return(PartialView(ListViewPath, centralFeedModel));
        }
Example #2
0
        protected override FeedListViewModel GetFeedListViewModel(GroupFeedListModel model, List <IFeedItem> filteredItems, Enum centralFeedType)
        {
            var result        = base.GetFeedListViewModel(model, filteredItems, centralFeedType);
            var currentMember = _intranetMemberService.GetCurrentMember();

            result.IsReadOnly = !currentMember.GroupIds.Contains(model.GroupId);

            return(result);
        }
Example #3
0
        protected virtual FeedListViewModel GetFeedListViewModel(GroupFeedListModel model, List <IFeedItem> filteredItems, Enum centralFeedType)
        {
            var take           = model.Page * ItemsPerPage;
            var pagedItemsList = SortForFeed(filteredItems, centralFeedType).Take(take).ToList();

            var settings    = _groupFeedService.GetAllSettings().ToList();
            var tabSettings = settings
                              .Single(s => s.Type.ToInt() == model.TypeId)
                              .Map <FeedTabSettings>();

            var currentMemberId = _intranetMemberService.GetCurrentMember().Id;

            IsCurrentMemberInGroup = _groupMemberService.IsGroupMember(model.GroupId, currentMemberId); // I know that state is not the nice idea, but I cant find another way to remove logic duplication

            return(new FeedListViewModel
            {
                Version = _groupFeedService.GetFeedVersion(filteredItems),
                Feed = GetFeedItems(pagedItemsList, settings),
                TabSettings = tabSettings,
                Type = centralFeedType,
                BlockScrolling = filteredItems.Count < take,
                FilterState = MapToFilterStateViewModel(model.FilterState)
            });
        }