public async Task <IActionResult> Edit(int id, string NewWriter, bool DeletePicture, IFormFile Picture, Article article) { if (id != article.Id) { return(NotFound()); } ModelState.Remove("Category.Name"); ModelState.Remove("Writer.Name"); ModelState.Remove("DeletePicture"); if (ModelState.IsValid) { var originalArticle = context.Article .Include(i => i.Issue) .Include(a => a.Category) .Include(a => a.Writer) .First(a => a.Id == id); try { string startLogMessage = GetEditLogMessage(originalArticle); articleService .SetArticleWriter(originalArticle, (article.Writer.Name == "+ NEW WRITER") ? NewWriter : article.Writer.Name) .SetLanguage(article.Language) .SetText(article.Text) .SetTitle(article.Title) .SetSubtitle(article.Subtitle) .SetCategory(context.Category .First(c => c.Name == article.Category.Name)); if (originalArticle.PicturePath == null) { if (Picture != null) { await articleService.AddArticlePicture(originalArticle, Picture, env.WebRootPath); } } else { if (Picture != null) { articleService.DeleteArticlePicture(originalArticle, env.WebRootPath); await articleService.AddArticlePicture(originalArticle, Picture, env.WebRootPath); } else if (DeletePicture) { articleService.DeleteArticlePicture(originalArticle, env.WebRootPath); } } await context.SaveChangesAsync(); string endLogMessage = GetEditLogMessage(originalArticle); logger.Log($@"This article is edited from `{startLogMessage}` to: {endLogMessage} by {HttpContext.User.Identity.Name}"); } catch (DbUpdateConcurrencyException) { if (!ArticleExists(article.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index), new { id = originalArticle.Issue.Id })); } return(View(article)); }