Пример #1
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id });

            if (post != null)
            {
                EditBlogPostViewModel ebpvm = new EditBlogPostViewModel
                {
                    Id             = id,
                    Title          = post.Title,
                    Content        = post.Content,
                    Description    = post.Description,
                    PublishOn      = post.PublishOn,
                    Public         = post.Public,
                    TopicsList     = new List <TopicsCheckBox>(),
                    CategoriesList = new List <CategoriesCheckBox>()
                };

                var postHasCategories = await _qpa.ProcessAsync(new GetCategoriesForBlogPostByIdQuery { Id = id });

                foreach (var category in await _qpa.ProcessAsync(new GetCategoriesQuery()))
                {
                    var categoryCheckBox = new CategoriesCheckBox()
                    {
                        CategoryId = category.Id,
                        Name       = category.Name,
                        IsSelected = false
                    };

                    if (postHasCategories.Contains(category))
                    {
                        categoryCheckBox.IsSelected = true;
                    }

                    ebpvm.CategoriesList.Add(categoryCheckBox);
                }

                var postHasTopics = await _qpa.ProcessAsync(new GetTopicsForBlogPostByIdQuery { Id = id });

                foreach (var topic in await _qpa.ProcessAsync(new GetTopicsQuery()))
                {
                    var topicCheckBox = new TopicsCheckBox()
                    {
                        TopicId    = topic.Id,
                        Title      = topic.Title,
                        IsSelected = false
                    };

                    if (postHasTopics.Contains(topic))
                    {
                        topicCheckBox.IsSelected = true;
                    }

                    ebpvm.TopicsList.Add(topicCheckBox);
                }

                return(View(ebpvm));
            }
            else
            {
                _logger.LogWarning("EditPost called for non-existant BlogPost {0}", id);

                return(NotFound());
            }
        }
Пример #2
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id });

            if (post != null)
            {
                var authResult = await _authService.AuthorizeAsync(User, post, "EditPolicy");

                if (!authResult.Succeeded &&
                    !User.IsInRole("Admins"))
                {
                    if (User.Identity.IsAuthenticated)
                    {
                        return(new ForbidResult());
                    }
                    else
                    {
                        return(new ChallengeResult());
                    }
                }

                var ebpvm = new EditBlogPostViewModel
                {
                    Id             = id,
                    Title          = post.Title,
                    Content        = post.Content,
                    Description    = post.Description,
                    PublishOn      = post.PublishOn,
                    Public         = post.Public,
                    TopicsList     = new List <TopicsCheckBox>(),
                    CategoriesList = new List <CategoriesCheckBox>()
                };

                var postHasCategories = await _qpa.ProcessAsync(new GetCategoriesForBlogPostByIdQuery { Id = id });

                foreach (var category in await _qpa.ProcessAsync(new GetCategoriesQuery()))
                {
                    var categoryCheckBox = new CategoriesCheckBox()
                    {
                        CategoryId = category.Id,
                        Name       = category.Name,
                        IsSelected = false
                    };

                    if (postHasCategories.Contains(category))
                    {
                        categoryCheckBox.IsSelected = true;
                    }

                    ebpvm.CategoriesList.Add(categoryCheckBox);
                }

                var postHasTopics = await _qpa.ProcessAsync(new GetTopicsForBlogPostByIdQuery { Id = id });

                foreach (var topic in await _qpa.ProcessAsync(new GetTopicsQuery()))
                {
                    var topicCheckBox = new TopicsCheckBox()
                    {
                        TopicId    = topic.Id,
                        Title      = topic.Title,
                        IsSelected = false
                    };

                    if (postHasTopics.Contains(topic))
                    {
                        topicCheckBox.IsSelected = true;
                    }

                    ebpvm.TopicsList.Add(topicCheckBox);
                }

                return(View(ebpvm));
            }
            else
            {
                _logger.LogWarning("EditPost called for non-existant BlogPost {0}", id);

                return(NotFound());
            }
        }