3 using Microsoft.AspNetCore.Authorization;
4 using Microsoft.AspNetCore.Mvc;
5 using Microsoft.EntityFrameworkCore;
27 _conferenceService = conferenceService;
28 _departmentService = departmentService;
29 _userProfileService = userProfileService;
36 model.
Count = _conferenceService.GetCountByRole(User);
48 var conference = _conferenceService.GetById(
id.Value);
50 if (conference == null)
55 if (!UserHasPermission(conference))
65 return View(conferenceDetails);
69 public IActionResult Create() => View();
73 [ValidateAntiForgeryToken]
76 if (!ModelState.IsValid)
78 return View(conference);
81 _conferenceService.CreateItem(conference);
82 return RedirectToAction(nameof(Index));
86 public IActionResult
Edit(Guid?
id)
93 var conference = _conferenceService.GetById(
id.Value);
94 if (conference == null)
99 if (!UserHasPermission(conference))
109 return View(conferenceEdit);
114 [ValidateAntiForgeryToken]
118 if (
id != conference.Id)
123 if (!UserHasPermission(conference))
128 if (!ModelState.IsValid)
130 return View(conferenceEdit);
134 _conferenceService.UpdateItem(conference);
136 catch (DbUpdateConcurrencyException)
138 if (!_conferenceService.Exists(conference.Id))
145 return RedirectToAction(nameof(Index));
156 var conference = _conferenceService.GetById(
id.Value);
157 if (conference == null)
162 if (!UserHasPermission(conference))
167 return View(conference);
171 [HttpPost, ActionName(
"Delete")]
172 [ValidateAntiForgeryToken]
175 if (!UserHasPermission(_conferenceService.GetById(
id)))
180 _conferenceService.DeleteById(
id);
181 return RedirectToAction(nameof(Index));
184 private bool UserHasPermission(
Conference conference)
186 var user = _userProfileService.Get(User);
187 var department = _departmentService.Get(d => d.Staff.Contains(user));
188 return PageHelpers.IsAdmin(User) ||
189 PageHelpers.IsHeadOfDepartment(User) &&
190 _conferenceService.GetParticipators(conference.
Id).Any(p => department.Staff.Contains(p)) ||
191 _conferenceService.GetParticipators(conference.
Id).Contains(user);
IActionResult Delete(Guid?id)
IEnumerable< DAL.Entities.Conference > Conferences
IActionResult Create([Bind("Id,Topic,Date")] Conference conference)
IActionResult DeleteConfirmed(Guid id)
DAL.Entities.Conference Conference
IActionResult Edit(Guid?id)
IActionResult Edit(Guid id, ConferenceEdit conferenceEdit)
IActionResult Index(ConferenceIndexModel model)
IActionResult Details(Guid?id)
ConferenceController(IConferenceService conferenceService, IDepartmentService departmentService, IUserProfileService userProfileService)