public IActionResult EditBlogPost(EditBlogPostViewModel model) { if (ModelState.IsValid) { var blogPost = _blogPostRepository.GetByTitle(model.OldTitle); blogPost.Title = model.Title; blogPost.Body = model.Body; blogPost.DatePublished = model.DatePublished; blogPost.IsPublished = model.IsPublished; _blogPostRepository.ClearContentTags(blogPost.Id); foreach (var tagName in model.AvailableContentTags) { var contentTag = _contentTagRepository.GetByName(tagName); var blogtag = new BlogPostContentTag { BlogPost = blogPost, ContentTag = contentTag, BlogPostId = blogPost.Id, ContentTagId = contentTag.Id }; blogPost.BlogPostsContentTags.Add(blogtag); } _blogPostRepository.Update(blogPost); } return(RedirectToAction("blogposts")); }
public async Task <IActionResult> EditBlogPost(EditBlogPostViewModel mapBlogPost) { if (ModelState.IsValid) { BlogPost post = await _db.BlogPosts. Where(x => x.Id == mapBlogPost.Id). FirstOrDefaultAsync(); if (post == null) { return(NotFound()); } post.Name = mapBlogPost.Name; post.ShortDesc = mapBlogPost.ShortDesc; post.Desc = mapBlogPost.Desc; post.DateEdit = DateTime.Now.ToShortDateString(); await _db.SaveChangesAsync(); return(RedirectToAction("Index", "BlogPost")); } return(PartialView(mapBlogPost)); }
public async Task <IActionResult> EditPost(long id) { var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id }); EditBlogPostViewModel ebpvm = new EditBlogPostViewModel { Id = id, Title = post.Title, Content = post.Content, Description = post.Description, PublishOn = post.PublishOn, Public = post.Public, FeaturesList = new List <FeaturesCheckBox>(), 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 postHasFeatures = await _qpa.ProcessAsync(new GetFeaturesForBlogPostByIdQuery { Id = id }); foreach (var feature in await _qpa.ProcessAsync(new GetFeaturesQuery())) { var featureCheckBox = new FeaturesCheckBox() { FeatureId = feature.Id, Title = feature.Title, IsSelected = false }; if (postHasFeatures.Contains(feature)) { featureCheckBox.IsSelected = true; } ebpvm.FeaturesList.Add(featureCheckBox); } return(View(ebpvm)); }
public ActionResult Create() { var viewModel = new EditBlogPostViewModel { BlogPost = new Article(), EnableTags = _featureService.EnableTaggableContent.IsEnabledForUser(LoggedInUser) }; return(View(viewModel)); }
public ActionResult Edit(int id) { var post = _blogPostRepository.Get(id); var viewModel = new EditBlogPostViewModel { BlogPost = Mapper.Map(post), EnableTags = _featureService.EnableTaggableContent.IsEnabledForUser(LoggedInUser) }; return(View(viewModel)); }
public IActionResult EditBlogPost(int id) { var editBlogPostViewModel = new EditBlogPostViewModel(); editBlogPostViewModel.BlogPost = (from b in _assignment2DataContext.BlogPosts where b.BlogPostId == id select b).FirstOrDefault(); var photosToUpdate = (from p in _assignment2DataContext.Photos where editBlogPostViewModel.BlogPost.BlogPostId == p.BlogPostId select p).ToList(); editBlogPostViewModel.Photos = photosToUpdate; return(View(editBlogPostViewModel)); }
public ActionResult Create(EditBlogPostViewModel blogPostModel) { var post = Mapper.Map(blogPostModel.BlogPost); if (blogPostModel.BlogPost.Image != null) { var imageHostClient = ImageHost.ServiceClient.ImageHostClient.GetFromConfig(); post.ImageUrl = imageHostClient.UploadImage(blogPostModel.BlogPost.Image.ToByte(), blogPostModel.BlogPost.Image.FileName); } _blogPostRepository.Save(post); return(RedirectToAction("Index", "Admin")); }
public ActionResult Create(EditBlogPostViewModel viewModel) { var subscribers = _newsletterSubscriberRepository.GetAll(); var newsLetter = new Newsletter(subscribers) { Title = viewModel.BlogPost.Title, ImageUrl = viewModel.BlogPost.ImageUrl, Body = viewModel.BlogPost.Body }; new MailController(_blogRepository).SendNewsletter(newsLetter).Deliver(); return(RedirectToAction("Index")); }
public ActionResult Create(int blogpost = 0) { var viewModel = new EditBlogPostViewModel(); if (blogpost > 0) { var blogPost = _blogPostRepository.Get(blogpost); viewModel.BlogPost = new Article { Title = blogPost.Title, ImageUrl = blogPost.ImageUrl, Body = blogPost.Body }; } return(View(viewModel)); }
public ActionResult Edit(EditBlogPostViewModel blogPostModel) { var post = _blogPostRepository.Get(blogPostModel.BlogPost.Id); post.Title = blogPostModel.BlogPost.Title; post.Body = blogPostModel.BlogPost.Body; post.Tags = !string.IsNullOrWhiteSpace(blogPostModel.BlogPost.Tags) ? blogPostModel.BlogPost.Tags.Split(',').Select(o => o.Trim()).ToList() : new List <string>(); if (blogPostModel.BlogPost.Image != null) { var imageHostClient = ImageHost.ServiceClient.ImageHostClient.GetFromConfig(); post.ImageUrl = imageHostClient.UploadImage(blogPostModel.BlogPost.Image.ToByte(), blogPostModel.BlogPost.Image.FileName); } _blogPostRepository.Save(post); return(RedirectToAction("Index", "Admin")); }
public IActionResult EditBlogPost(int id) { EditBlogPostViewModel model = new EditBlogPostViewModel(); // If not first time and logged in if (HttpContext.Session.GetInt32("userid") != null) { var user = (from u in dataContext.Users where u.UserId == HttpContext.Session.GetInt32("userid") select u).FirstOrDefault(); var blog = (from bp in dataContext.BlogPosts where bp.BlogPostId == id select bp).First(); model.User = user; model.BlogPost = blog; } if (model.User != null && model.User.RoleId == 2) { return(View(model)); } else { return(RedirectToAction("Index")); } }
public async Task <IActionResult> EditPost(EditBlogPostViewModel model) { var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = model.Id }); if (post != null && ModelState.IsValid) { var ubpc = new UpdateBlogPostCommand(); if (post.Author == null) { var curUser = await _userManager.GetUserAsync(User); var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id }); ubpc.NewAuthor = author; } else { ubpc.NewAuthor = post.Author; // keep the same author } ubpc.Id = model.Id; ubpc.NewTitle = model.Title; ubpc.NewDescription = model.Description; ubpc.NewContent = model.Content; ubpc.LastModifiedAt = DateTime.Now; ubpc.NewPublishOn = model.PublishOn; ubpc.NewPublic = model.Public; // update the post var ubpcResult = await _cp.ProcessAsync(ubpc); if (ubpcResult.Succeeded) { // do nothing _logger.LogInformation("Successfully updated BlogPost Id {0}", model.Id); } else { _logger.LogWarning("Unable to update BlogPost {0}", model.Id); // an error return(NotFound()); } List <long> topicIds = new List <long>(); if (model.TopicsList != null) { foreach (var topic in model.TopicsList) { if (topic.IsSelected) { topicIds.Add(topic.TopicId); } } var addTopicsResult = await _cp.ProcessAsync(new SetBlogPostTopicsCommand { BlogPostId = post.Id, TopicIds = topicIds }); if (addTopicsResult.Succeeded) { // do nothing _logger.LogInformation("Successfully set Topics for BlogPost {0}", model.Id); } else { // log the error _logger.LogInformation("Unable to set Topics for BlogPost {0}", model.Id); return(NotFound()); } } else { model.TopicsList = new List <TopicsCheckBox>(); } List <long> categoryIds = new List <long>(); if (model.CategoriesList != null) { foreach (var category in model.CategoriesList) { if (category.IsSelected) { categoryIds.Add(category.CategoryId); } } var addCategoriesResult = await _cp.ProcessAsync(new SetBlogPostCategoriesCommand { BlogPostId = post.Id, CategoryIds = categoryIds }); if (addCategoriesResult.Succeeded) { // do nothing _logger.LogInformation("Successfully set Categories for BlogPost {0}", model.Id); } else { // log the error _logger.LogWarning("Unable to set Categories for BlogPost {0}", model.Id); return(NotFound()); } } else { model.CategoriesList = new List <CategoriesCheckBox>(); } ViewData["SavedMessage"] = "Post saved."; return(View(model)); } else { if (post == null) { _logger.LogWarning("Post to EditPost for update invoked for a non-existant BlogPost Id {0}", model.Id); return(NotFound()); } // these are needed for rendering the view when there // are not categories or topics created in the engine if (model.CategoriesList == null) { model.CategoriesList = new List <CategoriesCheckBox>(); } if (model.TopicsList == null) { model.TopicsList = new List <TopicsCheckBox>(); } return(View(model)); } }
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 _context.BlogPosts.FindAsync(id); EditBlogPostViewModel ebpvm = new EditBlogPostViewModel { Id = id, Title = post.Title, Content = post.Content, Description = post.Description, PublishOn = post.PublishOn, Public = post.Public, FeaturesList = new List <FeaturesCheckBox>(), CategoriesList = new List <CategoriesCheckBox>() }; var postHasCategories = await(from bpc in _context.BlogPostCategory where bpc.BlogPostId == id join c in _context.Categories on bpc.CategoryId equals c.Id select c).ToListAsync(); foreach (var category in _context.Categories) { var categoryCheckBox = new CategoriesCheckBox() { CategoryId = category.Id, Name = category.Name, IsSelected = false }; if (postHasCategories.Contains(category)) { categoryCheckBox.IsSelected = true; } ebpvm.CategoriesList.Add(categoryCheckBox); } var postHasFeatures = await(from bpf in _context.BlogPostFeature where bpf.BlogPostId == id join f in _context.Features on bpf.FeatureId equals f.Id select f).ToListAsync(); foreach (var feature in _context.Features) { var featureCheckBox = new FeaturesCheckBox() { FeatureId = feature.Id, Title = feature.Title, IsSelected = false }; if (postHasFeatures.Contains(feature)) { featureCheckBox.IsSelected = true; } ebpvm.FeaturesList.Add(featureCheckBox); } return(View(ebpvm)); }
public async Task <IActionResult> EditPost(EditBlogPostViewModel model) { //var post = await _context.BlogPosts.FindAsync(model.Id); // fix these queries, the query for author can select from the author table without the join var post = _context.BlogPosts.Where(bp => bp.Id == model.Id).Include(bp => bp.Author).FirstOrDefault(); var curUser = await _userManager.GetUserAsync(User); var author = await(from u in _userManager.Users where u.Id == curUser.Id join a in _context.Authors on u.Id equals a.ApplicationUserId select a).FirstOrDefaultAsync(); // An admin is taking ownership if (post.Author == null) { post.Author = author; } post.Title = model.Title; post.Description = model.Description; post.Content = model.Content; post.ModifiedAt = DateTime.Now; post.PublishOn = model.PublishOn; post.Public = model.Public; var bpfts = from bpf in _context.BlogPostFeature where bpf.BlogPostId == post.Id select bpf; _context.BlogPostFeature.RemoveRange(bpfts); await _context.SaveChangesAsync(); if (model.FeaturesList != null) { foreach (var feature in model.FeaturesList) { if (feature.IsSelected) { //var f = await _context.Features.FindAsync(feature.FeatureId); BlogPostFeature bpf = new BlogPostFeature() { //BlogPost = post, BlogPostId = post.Id, //Feature = f, FeatureId = feature.FeatureId }; _context.BlogPostFeature.Add(bpf); } } } else { model.FeaturesList = new List <FeaturesCheckBox>(); } var bpcts = from bpc in _context.BlogPostCategory where bpc.BlogPostId == post.Id select bpc; _context.BlogPostCategory.RemoveRange(bpcts); await _context.SaveChangesAsync(); if (model.CategoriesList != null) { foreach (var category in model.CategoriesList) { if (category.IsSelected) { //var cat = await _context.Categories.FindAsync(category.CategoryId); BlogPostCategory bpc = new BlogPostCategory() { //BlogPost = post, BlogPostId = post.Id, //Category = cat, CategoryId = category.CategoryId }; _context.BlogPostCategory.Add(bpc); } } } else { model.CategoriesList = new List <CategoriesCheckBox>(); } await _context.SaveChangesAsync(); //return RedirectToAction("ManagePosts"); //return Redirect(Request.Headers["Referer"]); ViewData["SavedMessage"] = "Post saved."; return(View(model)); }
public async Task <IActionResult> EditPost(EditBlogPostViewModel model) { // fix these queries, the query for author can select from the author table without the join var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = model.Id }); var ubpc = new UpdateBlogPostCommand(); if (post.Author == null) { var curUser = await _userManager.GetUserAsync(User); var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id }); ubpc.NewAuthor = author; } else { ubpc.NewAuthor = post.Author; // keep the same author } ubpc.Id = model.Id; ubpc.NewTitle = model.Title; ubpc.NewDescription = model.Description; ubpc.NewContent = model.Content; ubpc.LastModifiedAt = DateTime.Now; ubpc.NewPublishOn = model.PublishOn; ubpc.NewPublic = model.Public; // update the post var ubpcResult = await _cp.ProcessAsync(ubpc); if (ubpcResult.Succeeded) { // do nothing } else { // an error return(NotFound()); } List <long> featureIds = new List <long>(); if (model.FeaturesList != null) { foreach (var feature in model.FeaturesList) { if (feature.IsSelected) { featureIds.Add(feature.FeatureId); } } var addFeaturesResult = await _cp.ProcessAsync(new SetBlogPostFeaturesCommand { BlogPostId = post.Id, FeatureIds = featureIds }); if (addFeaturesResult.Succeeded) { // do nothing } else { // log the error return(NotFound()); } } else { model.FeaturesList = new List <FeaturesCheckBox>(); } List <long> categoryIds = new List <long>(); if (model.CategoriesList != null) { foreach (var category in model.CategoriesList) { if (category.IsSelected) { categoryIds.Add(category.CategoryId); } } var addCategoriesResult = await _cp.ProcessAsync(new SetBlogPostCategoriesCommand { BlogPostId = post.Id, CategoryIds = categoryIds }); if (addCategoriesResult.Succeeded) { // do nothing } else { // log the error return(NotFound()); } } else { model.CategoriesList = new List <CategoriesCheckBox>(); } ViewData["SavedMessage"] = "Post saved."; return(View(model)); }
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()); } }