public virtual PartialViewResult GetSubscribedGroups() { var viewModel = new List <ViewModels.Group.GroupViewModel>(); var groups = LoggedOnReadOnlyUser.GroupNotifications.Select(x => x.Group); foreach (var group in groups) { var loggedOnUsersRole = GetGroupMembershipRole(group.Id); var permissionSet = RoleService.GetPermissions(group, loggedOnUsersRole); var topicCount = group.Topics.Count; var latestTopicInGroup = group.Topics.OrderByDescending(x => x.LastPost.DateCreated).FirstOrDefault(); var postCount = group.Topics.SelectMany(x => x.Posts).Count() - 1; var model = new ViewModels.Group.GroupViewModel { Group = group, LatestTopic = latestTopicInGroup, Permissions = permissionSet, PostCount = postCount, TopicCount = topicCount, ShowUnSubscribedLink = true }; viewModel.Add(model); } return(PartialView(viewModel)); }
public virtual ActionResult Show(string slug, int?p, string tab = null, Guid?folder = null, bool?hasError = null) { // Get the Group var group = _groupService.GetBySlugWithSubGroups(slug, LoggedOnReadOnlyUser?.Id); var loggedOnUsersRole = GetGroupMembershipRole(group.Group.Id); // Set the page index var pageIndex = p ?? 1; // check the user has permission to this Group var permissions = RoleService.GetPermissions(group.Group, loggedOnUsersRole); if (!permissions[ForumConfiguration.Instance.PermissionDenyAccess].IsTicked) { var groupUser = group.Group.GroupUsers.FirstOrDefault(x => x.User.Id == LoggedOnReadOnlyUser.Id); // Create the main view model for the Group var viewModel = new ViewModels.Group.GroupViewModel { Permissions = permissions, Group = group.Group, PageIndex = pageIndex, User = LoggedOnReadOnlyUser, GroupUserStatus = groupUser.GetUserStatusForGroup(), GroupUserRole = GetGroupMembershipRole(group.Group.Id), IsSubscribed = User.Identity.IsAuthenticated && _notificationService.GetGroupNotificationsByUserAndGroup(LoggedOnReadOnlyUser, group.Group).Any(), Tab = tab, Folder = folder, HasError = hasError }; viewModel.IsMember = viewModel.GroupUserStatus == GroupUserStatus.Joined; if (loggedOnUsersRole.RoleName != Constants.GuestRoleName) { // If there are subGroups then add then with their permissions if (group.SubGroups.Any()) { var subCatViewModel = new GroupListViewModel { AllPermissionSets = new Dictionary <Group, PermissionSet>() }; foreach (var subGroup in group.SubGroups) { var subGroupRole = GetGroupMembershipRole(subGroup.Id); var permissionSet = RoleService.GetPermissions(subGroup, subGroupRole); subCatViewModel.AllPermissionSets.Add(subGroup, permissionSet); } viewModel.SubGroups = subCatViewModel; } } if (tab == Constants.GroupMembersTab) { ViewBag.HideSideBar = true; } if (tab == Constants.GroupFilesTab) { ViewBag.HideSideBar = true; } if (tab == Constants.AboutUsTab) { ViewBag.HideSideBar = true; } return(View(viewModel)); } return(ErrorToHomePage(LocalizationService.GetResourceString("Errors.NoPermission"))); }