示例#1
0
        async Task <EntityViewModel <Topic, Reply> > GetViewModel(EntityViewModel <Topic, Reply> model)
        {
            var entity = await _entityStore.GetByIdAsync(model.Options.Id);

            if (entity == null)
            {
                throw new ArgumentNullException();
            }

            var results = await _replyService
                          .ConfigureQuery(async q =>
            {
                // Hide private?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewHiddenReplies))
                {
                    q.HideHidden.True();
                }

                // Hide spam?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewSpamReplies))
                {
                    q.HideSpam.True();
                }

                // Hide deleted?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewDeletedReplies))
                {
                    q.HideDeleted.True();
                }
            })
                          .GetResultsAsync(model.Options, model.Pager);

            // Set total on pager
            model.Pager.SetTotal(results?.Total ?? 0);

            model.Entity  = entity;
            model.Replies = results;

            return(model);

            //// Return view model
            //return new EntityViewModel<Topic, Reply>
            //{
            //    Options = options,
            //    Pager = pager,
            //    Entity = entity,
            //    Replies = results
            //};
        }
示例#2
0
        async Task <EntityViewModel <Question, Answer> > GetViewModel(
            EntityOptions options,
            PagerOptions pager)
        {
            var entity = await _entityStore.GetByIdAsync(options.Id);

            if (entity == null)
            {
                throw new ArgumentNullException();
            }

            var results = await _replyService
                          .ConfigureQuery(async q =>
            {
                // Hide private?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewHiddenAnswers))
                {
                    q.HideHidden.True();
                }

                // Hide spam?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewSpamAnswers))
                {
                    q.HideSpam.True();
                }

                // Hide deleted?
                if (!await _authorizationService.AuthorizeAsync(HttpContext.User,
                                                                Permissions.ViewDeletedAnswers))
                {
                    q.HideDeleted.True();
                }
            })
                          .GetResultsAsync(options, pager);

            // Set total on pager
            pager.SetTotal(results?.Total ?? 0);

            // Return view model
            return(new EntityViewModel <Question, Answer>
            {
                Options = options,
                Pager = pager,
                Entity = entity,
                Replies = results
            });
        }