3 using Microsoft.AspNetCore.Authorization;
4 using Microsoft.AspNetCore.Mvc;
26 _articleService = articleService;
27 _userProfileService = userProfileService;
28 _departmentService = departmentService;
39 var article = _articleService.GetById(
id.Value);
48 Authors = _articleService.GetAuthors(article.Id)
53 public IActionResult
Edit(Guid?
id)
60 var article = _articleService.GetById(
id.Value);
66 if (!AllowUserToEditArticle(article))
73 Users = _userProfileService.GetAll(),
74 Authors = _articleService.GetAuthors(article.Id)
82 [ValidateAntiForgeryToken]
85 if (
id == null ||
id != model.
Id)
90 var article = _articleService.GetById(
id.Value);
92 if (!AllowUserToEditArticle(article))
97 if (!ModelState.IsValid)
102 _articleService.UpdateItem(model.
Modify(article));
103 return RedirectToAction(
"Index",
"Publication");
116 var user = _userProfileService.GetById(request.UserId);
122 var article = _articleService.GetById(
id.Value);
128 if (!AllowUserToEditArticle(article))
133 if (!_articleService.GetAuthors(article.Id).Contains(user))
135 _articleService.AddAuthor(article, user);
151 var user = _userProfileService.GetById(request.UserId);
157 var article = _articleService.GetById(
id.Value);
163 if (!AllowUserToEditArticle(article))
168 if (_articleService.GetAuthors(article.Id).Contains(user))
170 _articleService.RemoveAuthor(article, user);
184 var article = _articleService.GetById(
id.Value);
190 if (!AllowToDeleteArticle())
195 return View(article);
199 [HttpPost, ActionName(
"Delete")]
200 [ValidateAntiForgeryToken]
203 var article = _articleService.GetById(
id);
209 if (!AllowToDeleteArticle())
214 _articleService.DeleteById(
id);
216 return RedirectToAction(
"Index",
"Publication");
219 private bool AllowUserToEditArticle(
Article article)
221 var user = _userProfileService.Get(User);
222 var department = _departmentService.Get(d => d.Staff.Contains(user));
223 var isHeadOfDepartment = PageHelpers.IsHeadOfDepartment(User) && article.
UserProfilesArticles.Any(p => department.Staff.Contains(p.Author));
224 return PageHelpers.IsAdmin(User) || isHeadOfDepartment ||
229 private bool AllowToDeleteArticle()
231 return PageHelpers.IsAdmin(User);
IActionResult Edit(Guid?id, ArticleEditModel model)
ArticleController(IArticleService articleService, IUserProfileService userProfileService, IDepartmentService departmentService)
virtual int PublishingYear
IActionResult Delete(Guid?id)
IActionResult RemoveUserFromAuthors(Guid?id, [FromBody] ArticleUpdateAuthorsRequest request)
IActionResult DeleteConfirmed(Guid id)
IActionResult AddUserToAuthors(Guid?id, [FromBody] ArticleUpdateAuthorsRequest request)
DAL.Entities.Publications.Article Modify(DAL.Entities.Publications.Article article)
virtual ICollection< UserProfilesArticles > UserProfilesArticles
IActionResult Details(Guid?id)
const string HeadOfDepartmentOrAdmin
IActionResult Edit(Guid?id)