3 using Microsoft.AspNetCore.Authorization;
4 using Microsoft.AspNetCore.Mvc;
27 _grantService = grantService;
28 _userProfileService = userProfileService;
29 _departmentService = departmentService;
36 model.
Count = _grantService.GetCountByRole(User);
48 var grant = _grantService.GetById(
id.Value);
54 if (!UserHasPermission(grant))
63 public IActionResult Create() => View();
67 [ValidateAntiForgeryToken]
70 if (!ModelState.IsValid)
75 _grantService.CreateItem(model);
76 _grantService.AddUser(_grantService.Get(g => g.Info == model.
Info), _userProfileService.Get(User));
78 return RedirectToAction(nameof(Index));
82 public IActionResult
Edit(Guid?
id)
89 var grant = _grantService.GetById(
id.Value);
95 if (!UserHasPermission(grant))
102 Users = _userProfileService.GetAll(),
103 Authors = _grantService.GetUsers(grant.Id)
109 [ValidateAntiForgeryToken]
112 if (
id != model.
Id || !_grantService.Exists(
id))
117 var grant = _grantService.GetById(
id);
118 if (!UserHasPermission(grant))
123 if (!ModelState.IsValid)
128 _grantService.UpdateItem(model);
129 return RedirectToAction(nameof(Index));
140 var grant = _grantService.GetById(
id.Value);
146 if (!UserHasPermission(grant))
155 [HttpPost, ActionName(
"Delete")]
156 [ValidateAntiForgeryToken]
159 if (!_grantService.Exists(
id))
164 if (!UserHasPermission(_grantService.GetById(
id)))
169 _grantService.DeleteById(
id);
170 return RedirectToAction(nameof(Index));
177 if (!_grantService.Exists(
id))
182 var grant = _grantService.GetById(
id);
183 if (!UserHasPermission(grant))
188 _grantService.AddUser(grant, _userProfileService.GetById(request.UserId));
196 if (!_grantService.Exists(
id))
201 var grant = _grantService.GetById(
id);
202 if (!UserHasPermission(grant))
207 _grantService.RemoveUser(grant, _userProfileService.GetById(request.UserId));
211 private bool UserHasPermission(
Grant grant)
213 var user = _userProfileService.Get(User);
214 var department = _departmentService.Get(d => d.Staff.Contains(user));
215 return PageHelpers.IsAdmin(User) ||
216 PageHelpers.IsHeadOfDepartment(User) &&
217 _grantService.GetUsers(grant.
Id).Any(p => department.Staff.Contains(p)) ||
218 _grantService.GetUsers(grant.
Id).Contains(user);
IActionResult Create(GrantModel model)
IEnumerable< DAL.Entities.Grant > Grants
IActionResult Details(Guid?id)
IActionResult Edit(Guid?id)
IActionResult DeleteAuthor(Guid id, [FromBody] UpdateUserRequest request)
IActionResult AddAuthor(Guid id, [FromBody] UpdateUserRequest request)
IActionResult Delete(Guid?id)
IActionResult DeleteConfirmed(Guid id)
IActionResult Index(GrantIndexModel model)
GrantController(IGrantService grantService, IUserProfileService userProfileService, IDepartmentService departmentService)
IActionResult Edit(Guid id, GrantEditModel model)