3 using Microsoft.AspNetCore.Authorization;
4 using Microsoft.AspNetCore.Mvc;
5 using Microsoft.EntityFrameworkCore;
28 _scientificWorkService = scientificWorkService;
29 _userProfileService = userProfileService;
30 _departmentService = departmentService;
41 var scientificWork = _scientificWorkService.GetById(
id.Value);
42 if (scientificWork == null)
47 if (!UserHasPermission(scientificWork))
55 Authors = _scientificWorkService.GetAuthors(scientificWork.Id).ToList()
58 return View(scientificWorksDetails);
62 public IActionResult
Edit(Guid?
id)
69 var scientificWork = _scientificWorkService.GetById(
id.Value);
70 if (scientificWork == null)
75 if (!UserHasPermission(scientificWork))
83 Authors = _scientificWorkService.GetAuthors(scientificWork.Id),
84 Users = _userProfileService.GetAll()
87 return View(scientificWorksEdit);
92 [ValidateAntiForgeryToken]
96 if (
id != scientificWork.Id)
101 if (!UserHasPermission(scientificWork))
106 if (!ModelState.IsValid)
108 scientificWorksEdit.
Authors = _scientificWorkService.GetAuthors(scientificWork.Id);
109 scientificWorksEdit.
Users = _userProfileService.GetAll();
110 return View(scientificWorksEdit);
114 _scientificWorkService.UpdateItem(scientificWork);
116 catch (DbUpdateConcurrencyException)
118 if (!_scientificWorkService.Exists(scientificWork.Id))
125 return RedirectToAction(
"Index",
"Publication");
136 var scientificWork = _scientificWorkService.GetById(
id.Value);
137 if (scientificWork == null)
142 if (!UserHasPermission(scientificWork))
147 return View(scientificWork);
151 [HttpPost, ActionName(
"Delete")]
152 [ValidateAntiForgeryToken]
155 if (!_scientificWorkService.Exists(
id))
160 if (!UserHasPermission(_scientificWorkService.GetById(
id)))
165 _scientificWorkService.DeleteById(
id);
166 return RedirectToAction(
"Index",
"Publication");
173 if (!_scientificWorkService.Exists(
id))
178 if (!UserHasPermission(_scientificWorkService.GetById(
id)))
183 _scientificWorkService.AddAuthor(
id, request.UserId);
191 if (!_scientificWorkService.Exists(
id))
196 if (!UserHasPermission(_scientificWorkService.GetById(
id)))
201 _scientificWorkService.RemoveAuthor(
id, request.UserId);
207 var user = _userProfileService.Get(User);
208 var department = _departmentService.Get(d => d.Staff.Contains(user));
209 var isHeadOfDepartment = PageHelpers.IsHeadOfDepartment(User) && scientificWork.
UserProfilesScientificWorks.Any(p => department.Staff.Contains(p.UserProfile));
210 return PageHelpers.IsAdmin(User) || isHeadOfDepartment || scientificWork.
UserProfilesScientificWorks.Any(p => p.UserProfile.UserName == User.Identity.Name);
ScientificWorkController(IScientificWorkService scientificWorkService, IUserProfileService userProfileService, IDepartmentService departmentService)
IEnumerable< DAL.Entities.UserProfile.UserProfile > Authors
IActionResult DeleteConfirmed(Guid id)
IActionResult DeleteAuthor(Guid id, [FromBody] UpdateUserRequest request)
IActionResult AddAuthor(Guid id, [FromBody] UpdateUserRequest request)
IEnumerable< DAL.Entities.UserProfile.UserProfile > Users
ScientificWork ScientificWork
IActionResult Delete(Guid?id)
IActionResult Details(Guid?id)
ICollection< UserProfilesScientificWorks > UserProfilesScientificWorks
IActionResult Edit(Guid id, ScientificWorksEdit scientificWorksEdit)
IActionResult Edit(Guid?id)