public IActionResult EditPost([FromForm] EditDevBlogPostViewModel model) { if (!ModelState.IsValid) { var errors = ModelState.Values.SelectMany(x => x.Errors.Select(xx => xx.ErrorMessage)).ToList(); errors.ForEach(x => ModelState.AddModelError("", x)); return(View(model)); } var result = _devBlogService.UpdatePost(ref model); if (result == DevBlogPostUpdateResult.NotFound) { return(RedirectToAction("NotFoundPage", "Home")); } else if (result == DevBlogPostUpdateResult.Created) { return(RedirectToAction("PostsList")); } else if (result == DevBlogPostUpdateResult.Updated) { model.Status = DevBlogPostUpdateResult.Updated; return(View(model)); } else { return(RedirectToAction("SomethingWentWrong", "Home")); } }
public DevBlogPostUpdateResult UpdatePost(ref EditDevBlogPostViewModel model) { var userForLog = _userManager.FindByEmailAsync(_httpContextAccessor.HttpContext.User.Identity.Name).Result; if (model.Id is null) { var newPost = new DevBlogPost { Id = Guid.NewGuid(), Title = model.Title, PostMessage = model.PostMessage, Link = model.Link, LinkTitle = model.LinkTitle, DateTimePosted = DateTime.Today, LikesCounter = 0 }; if (model.ImageToUpload != null) { var imageUploadResult = _imgUrService.UploadImageAsync(model.ImageToUpload).Result; if (imageUploadResult is null) { return(DevBlogPostUpdateResult.Failed); } model.ImgUrl = imageUploadResult.Link; newPost.ImgDeleteHash = imageUploadResult.DeleteHash; newPost.ImgUrl = imageUploadResult.Link; } _context.Add(newPost); _context.SaveChanges(); _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}", userForLog.UserName, userForLog.Id, _httpContextAccessor.HttpContext.Request.GetRawTarget(), $"New post was created. ID: {newPost.Id}, Title: {newPost.Title}"); return(DevBlogPostUpdateResult.Created); } var postId = model.Id; var post = _context.DevBlogPosts.FirstOrDefault(x => x.Id == Guid.Parse(postId)); if (post is null) { return(DevBlogPostUpdateResult.NotFound); } if (model.ImageToUpload != null) { _imgUrService.DeleteImageAsync(post.ImgDeleteHash); var imageUploadResult = _imgUrService.UploadImageAsync(model.ImageToUpload).Result; if (imageUploadResult is null) { return(DevBlogPostUpdateResult.Failed); } model.ImgUrl = imageUploadResult.Link; post.ImgDeleteHash = imageUploadResult.DeleteHash; post.ImgUrl = imageUploadResult.Link; } post.Title = model.Title; post.PostMessage = model.PostMessage; post.LinkTitle = model.LinkTitle; post.Link = model.Link; _context.Update(post); _context.SaveChanges(); _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}", userForLog.UserName, userForLog.Id, _httpContextAccessor.HttpContext.Request.GetRawTarget(), $"Post was updated. ID: {post.Id}, New Title: {post.Title}"); return(DevBlogPostUpdateResult.Updated); }