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)); }
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); }
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) }); }