3 using Microsoft.AspNetCore.Authorization;
4 using Microsoft.AspNetCore.Mvc;
29 _reportThesisService = reportThesisService;
30 _userProfileService = userProfileService;
31 _departmentService = departmentService;
32 _conferenceService = conferenceService;
43 var reportThesis = _reportThesisService.GetById(
id.Value);
45 if (reportThesis == null)
50 if (!UserHasPermission(reportThesis))
58 Authors = _reportThesisService.GetAuthors(reportThesis.Id).ToList()
61 return View(reportThesisDetails);
65 public IActionResult
Edit(Guid?
id)
72 var reportThesis = _reportThesisService.GetById(
id.Value);
73 if (reportThesis == null)
78 if (!UserHasPermission(reportThesis))
85 Authors = _reportThesisService.GetAuthors(reportThesis.Id),
86 Users = _userProfileService.GetAll()
92 [ValidateAntiForgeryToken]
95 var reportThesis = _reportThesisService.GetById(model.
Id);
96 if (
id != reportThesis.Id)
101 if (!UserHasPermission(reportThesis))
106 if (!ModelState.IsValid)
108 model.
Authors = _reportThesisService.GetAuthors(reportThesis.Id);
109 model.
Users = _userProfileService.GetAll();
114 _reportThesisService.UpdateItem(model);
116 return RedirectToAction(
"Index",
"Publication");
127 var reportThesis = _reportThesisService.GetById(
id.Value);
128 if (reportThesis == null)
133 if (!UserHasPermission(reportThesis))
138 return View(reportThesis);
142 [HttpPost, ActionName(
"Delete")]
143 [ValidateAntiForgeryToken]
146 if (!_reportThesisService.Exists(
id))
151 if (!UserHasPermission(_reportThesisService.GetById(
id)))
156 _reportThesisService.DeleteById(
id);
157 return RedirectToAction(
"Index",
"Publication");
164 if (!_reportThesisService.Exists(
id))
169 if (!UserHasPermission(_reportThesisService.GetById(
id)))
174 _reportThesisService.AddAuthor(
id, request.UserId);
182 if (!_reportThesisService.Exists(
id))
187 if (!UserHasPermission(_reportThesisService.GetById(
id)))
192 _reportThesisService.RemoveAuthor(
id, request.UserId);
196 private bool UserHasPermission(
ReportThesis reportThesis)
198 var user = _userProfileService.Get(User);
199 var department = _departmentService.Get(d => d.Staff.Contains(user));
200 return PageHelpers.IsAdmin(User) ||
201 PageHelpers.IsHeadOfDepartment(User) &&
202 _reportThesisService.GetAuthors(reportThesis.
Id).Any(p => department.Staff.Contains(p)) ||
203 _reportThesisService.GetAuthors(reportThesis.
Id).Contains(user);
IEnumerable< DAL.Entities.UserProfile.UserProfile > Users
IActionResult DeleteAuthor(Guid id, [FromBody] UpdateUserRequest request)
IActionResult Details(Guid?id)
IEnumerable< DAL.Entities.UserProfile.UserProfile > Authors
IActionResult Edit(Guid?id, ReportThesisEdit model)
ReportThesisController(IReportThesisService reportThesisService, IUserProfileService userProfileService, IDepartmentService departmentService, IConferenceService conferenceService)
IActionResult Delete(Guid?id)
DAL.Entities.Conference Conference
IActionResult Edit(Guid?id)
IActionResult DeleteConfirmed(Guid id)
IActionResult AddAuthor(Guid id, [FromBody] UpdateUserRequest request)