Exemple #1
0
        public override async Task <IViewProviderResult> BuildDisplayAsync(UserIndex userIndex, IViewProviderContext context)
        {
            // Get user
            var user = await _platoUserStore.GetByIdAsync(userIndex.Id);

            if (user == null)
            {
                return(await BuildIndexAsync(userIndex, context));
            }


            // Get index view model from context
            var indexViewModel = context.Controller.HttpContext.Items[typeof(EntityIndexViewModel <Question>)] as EntityIndexViewModel <Question>;

            if (indexViewModel == null)
            {
                throw new Exception($"A view model of type {typeof(EntityIndexViewModel<Question>).ToString()} has not been registered on the HttpContext!");
            }

            // Build feature entities model
            var featureEntityMetrics = new FeatureEntityCounts()
            {
                Features = await _featureEntityCountService
                           .ConfigureQuery(q =>
                {
                    q.CreatedUserId.Equals(user.Id);
                    q.HideSpam.True();
                    q.HideHidden.True();
                    q.HideDeleted.True();
                    q.HidePrivate.True();
                })
                           .GetResultsAsync()
            };

            // Build view model
            var userDisplayViewModel = new UserDisplayViewModel <Question>()
            {
                User           = user,
                IndexViewModel = indexViewModel,
                Counts         = featureEntityMetrics
            };

            // Build view
            return(Views(
                       View <UserDisplayViewModel>("User.Index.Header", model => userDisplayViewModel).Zone("header"),
                       View <UserDisplayViewModel <Question> >("User.Index.Content", model => userDisplayViewModel).Zone("content"),
                       View <UserDisplayViewModel>("User.Entities.Display.Sidebar", model => userDisplayViewModel).Zone("content-right")
                       ));
        }
Exemple #2
0
        public override async Task <IViewProviderResult> BuildDisplayAsync(ProfilePage profile, IViewProviderContext context)
        {
            // Get user
            var user = await _platoUserStore.GetByIdAsync(profile.Id);

            // Ensure user exists
            if (user == null)
            {
                return(await BuildIndexAsync(profile, context));
            }

            var indexOptions = new EntityIndexOptions()
            {
                CreatedByUserId = user.Id
            };


            var featureEntityMetrics = new FeatureEntityCounts()
            {
                Features = await _featureEntityCountService
                           .ConfigureQuery(async q =>
                {
                    // Hide private?
                    if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                                                                    Permissions.ViewPrivateEntities))
                    {
                        q.HidePrivate.True();
                    }

                    // Hide hidden?
                    if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                                                                    Permissions.ViewHiddenEntities))
                    {
                        q.HideHidden.True();
                    }

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

                    // Hide deleted?
                    if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                                                                    Permissions.ViewDeletedEntities))
                    {
                        q.HideDeleted.True();
                    }
                })
                           .GetResultsAsync(indexOptions)
            };

            var viewModel = new UserDisplayViewModel <Entity>()
            {
                User           = user,
                Counts         = featureEntityMetrics,
                IndexViewModel = new EntityIndexViewModel <Entity>()
                {
                    Options = indexOptions,
                    Pager   = new PagerOptions()
                    {
                        Page    = 1,
                        Size    = 10,
                        Enabled = false
                    }
                }
            };

            // Return view
            return(Views(
                       View <UserDisplayViewModel <Entity> >("Profile.Entities.Display.Content", model => viewModel)
                       .Zone("content")
                       .Order(int.MaxValue - 100)
                       ));
        }
Exemple #3
0
        public override async Task <IViewProviderResult> BuildDisplayAsync(EntityUserIndex userIndex, IViewProviderContext context)
        {
            var user = await _platoUserStore.GetByIdAsync(userIndex.Id);

            if (user == null)
            {
                return(await BuildIndexAsync(userIndex, context));
            }

            var indexViewModel = context.Controller.HttpContext.Items[typeof(EntityIndexViewModel <Entity>)] as EntityIndexViewModel <Entity>;

            if (indexViewModel == null)
            {
                throw new Exception($"A view model of type {typeof(EntityIndexViewModel<Entity>).ToString()} has not been registered on the HttpContext!");
            }



            var featureEntityMetrics = new FeatureEntityCounts()
            {
                Features = await _featureEntityCountService
                           .ConfigureQuery(q =>
                {
                    q.CreatedUserId.Equals(user.Id);
                    q.HideSpam.True();
                    q.HideHidden.True();
                    q.HideDeleted.True();
                    q.HidePrivate.True();

                    //// Hide private?
                    //if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                    //    Permissions.ViewPrivateEntities))
                    //{
                    //    q.HidePrivate.True();
                    //}

                    //// Hide hidden?
                    //if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                    //    Permissions.ViewHiddenEntities))
                    //{
                    //    q.HideHidden.True();
                    //}

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

                    //// Hide deleted?
                    //if (!await _authorizationService.AuthorizeAsync(context.Controller.HttpContext.User,
                    //    Permissions.ViewDeletedEntities))
                    //{
                    //    q.HideDeleted.True();
                    //}
                })
                           .GetResultsAsync()
            };

            var userDisplayViewModel = new UserDisplayViewModel <Entity>()
            {
                User           = user,
                IndexViewModel = indexViewModel,
                Counts         = featureEntityMetrics
            };

            return(Views(
                       View <UserDisplayViewModel>("User.Index.Header", model => userDisplayViewModel).Zone("header"),
                       View <UserDisplayViewModel <Entity> >("User.Index.Content", model => userDisplayViewModel).Zone("content"),
                       View <UserDisplayViewModel>("User.Entities.Display.Sidebar", model => userDisplayViewModel).Zone("sidebar")
                       ));
        }