Пример #1
0
        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));
        }
Пример #2
0
        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")));
        }