예제 #1
0
        private UserViewModel BuildUserModel(string userName)
        {
            var user = _membershipService.GetUserByUserName(userName);

            if (user == null)
            {
                throw new NotFoundException();
            }

            var model = new UserViewModel();

            model.User = user;

            var moderatedSubs = _moderationDao.GetSubsModeratoredByUser(user.Id);

            if (moderatedSubs.Count > 0)
            {
                model.IsModerator    = true;
                model.ModeratingSubs = _subDao.GetSubsByIds(moderatedSubs).Select(x => x.Name).ToList();
            }

            var kudos = _karmaDao.GetKarma(user.Id);

            model.CommentKudos = kudos.Keys.Where(x => x.Type == KarmaType.Comment).Sum(x => kudos[x]);
            model.PostKudos    = kudos.Keys.Where(x => x.Type == KarmaType.Post).Sum(x => kudos[x]);

            return(model);
        }
예제 #2
0
        public ActionResult Moderating()
        {
            ViewBag.NavigationKey = "moderating";

            return(View("List", new PagedList <SubWrapped>(_subWrapper.Wrap(_moderationDao.GetSubsModeratoredByUser(_userContext.CurrentUser.Id), _userContext.CurrentUser), 1, int.MaxValue, false)));
        }
예제 #3
0
        public ActionResult Inbox(InboxType type, int?pageNumber, int?pageSize)
        {
            ViewBag.ManageNavigationKey = "inbox";

            if (pageNumber == null || pageNumber < 1)
            {
                pageNumber = 1;
            }
            if (pageSize == null)
            {
                pageSize = 25;
            }
            if (pageSize > 100)
            {
                pageSize = 100;
            }
            if (pageSize < 1)
            {
                pageSize = 1;
            }

            var skip = (pageNumber - 1) * pageSize;
            var take = pageSize;

            SeekedList <Guid> messages;

            switch (type)
            {
            case InboxType.All:
                messages = _messageDao.GetAllMessagesForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            case InboxType.Unread:
                messages = _messageDao.GetUnreadMessagesForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            case InboxType.Messages:
                messages = _messageDao.GetPrivateMessagesForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            case InboxType.CommentReplies:
                messages = _messageDao.GetCommentRepliesForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            case InboxType.PostReplies:
                messages = _messageDao.GetPostRepliesForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            case InboxType.Mentions:
                messages = _messageDao.GetMentionsForUser(_userContext.CurrentUser.Id, skip, take);
                break;

            default:
                throw new Exception("Unknown inbox type");
            }

            var model = new InboxViewModel();

            model.InboxType   = type;
            model.IsModerator = _moderationDao.GetSubsModeratoredByUser(_userContext.CurrentUser.Id).Count > 0;
            model.Messages    = new PagedList <MessageWrapped>(_messageWrapper.Wrap(messages, _userContext.CurrentUser), pageNumber.Value, pageSize.Value, messages.HasMore);

            return(View(model));
        }