2 using Microsoft.AspNetCore.Authorization;
3 using Microsoft.AspNetCore.Mvc;
25 _membershipService = membershipService;
26 _departmentService = departmentService;
27 _userProfileService = userProfileService;
34 model.
Count = _membershipService.GetCountByRole(User);
46 var membership = _membershipService.GetById(
id.Value);
47 if (membership == null)
52 if (!UserHasPermission(membership))
57 return View(membership);
61 public IActionResult Create() => View();
65 [ValidateAntiForgeryToken]
68 if (!ModelState.IsValid)
73 model.
User = _userProfileService.Get(User);
74 _membershipService.CreateItem(model);
76 return RedirectToAction(nameof(Index));
80 public IActionResult
Edit(Guid?
id)
87 var membership = _membershipService.GetById(
id.Value);
88 if (membership == null)
93 if (!UserHasPermission(membership))
103 [ValidateAntiForgeryToken]
106 if (
id != model.
Id || !_membershipService.Exists(
id))
111 if (!UserHasPermission(_membershipService.GetById(
id)))
116 if (!ModelState.IsValid)
121 _membershipService.UpdateItem(model);
122 return RedirectToAction(nameof(Index));
133 var membership = _membershipService.GetById(
id.Value);
134 if (membership == null)
139 if (!UserHasPermission(membership))
144 return View(membership);
148 [HttpPost, ActionName(
"Delete")]
149 [ValidateAntiForgeryToken]
152 if (!_membershipService.Exists(
id))
157 if (!UserHasPermission(_membershipService.GetById(
id)))
162 _membershipService.DeleteById(
id);
163 return RedirectToAction(nameof(Index));
166 private bool UserHasPermission(
Membership membership)
168 var user = _userProfileService.Get(User);
169 var department = _departmentService.Get(d => d.Staff.Contains(user));
170 return PageHelpers.IsAdmin(User) ||
171 PageHelpers.IsHeadOfDepartment(User) &&
172 department.Staff.Contains(membership.
User) ||
173 membership.
User.Id == user.Id;
IEnumerable< DAL.Entities.Membership > Memberships
MembershipController(IMembershipService membershipService, IDepartmentService departmentService, IUserProfileService userProfileService)
IActionResult Create(MembershipModel model)
IActionResult Delete(Guid?id)
IActionResult DeleteConfirmed(Guid id)
IActionResult Index(MembershipIndexModel model)
IActionResult Edit(Guid?id)
virtual UserProfile.UserProfile User
IActionResult Details(Guid?id)
DAL.Entities.UserProfile.UserProfile User
IActionResult Edit(Guid id, MembershipEditModel model)