示例#1
0
        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"));
            }
        }
示例#2
0
        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);
        }