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()); } }
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()); } }