Exemplo n.º 1
0
        public ActionResult Comments(string userName, UserViewModel.SortByEnum? sort = null, UserViewModel.TimeFilterEnum? filter = null, int? pageNumber = null, int? pageSize = null)
        {
            ViewBag.NavigationKey = "comments";

            var model = BuildUserModel(userName);

            if (sort == null)
                sort = UserViewModel.SortByEnum.New;

            if (filter == null)
                filter = UserViewModel.TimeFilterEnum.All;

            if (sort.Value != UserViewModel.SortByEnum.Top && sort.Value != UserViewModel.SortByEnum.Controversial)
                filter = UserViewModel.TimeFilterEnum.All;

            model.SortBy = sort.Value;
            model.TimeFilter = filter.Value;

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

            var comments = _commentDao.GetCommentsForUser(model.User.Id,
                sortBy: (CommentSortBy)Enum.Parse(typeof(CommentSortBy), sort.Value.ToString()),
                timeFilter: (CommentsTimeFilter)Enum.Parse(typeof(CommentsTimeFilter), filter.Value.ToString()),
                skip: ((pageNumber - 1) * pageSize),
                take: pageSize);

            model.Comments = new PagedList<CommentWrapped>(
                _commentWrapper.Wrap(comments, _userContext.CurrentUser),
                pageNumber.Value,
                pageSize.Value,
                comments.HasMore);

            return View(model);
        }
Exemplo n.º 2
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;
        }