public async Task <IActionResult> DeleteGroup(int departmentGroupId) { DeleteGroupView model = new DeleteGroupView(); model.Group = await _departmentGroupsService.GetGroupByIdAsync(departmentGroupId); if (model.Group == null || model.Group.DepartmentId != DepartmentId || !await _authorizationService.CanUserEditDepartmentGroupAsync(UserId, departmentGroupId)) { Unauthorized(); } var users = _departmentGroupsService.GetAllUsersForGroup(departmentGroupId); var childGroups = await _departmentGroupsService.GetAllChildDepartmentGroupsAsync(departmentGroupId); var units = await _unitsService.GetAllUnitsForGroupAsync(departmentGroupId); var shifts = await _shiftsService.GetShiftGroupsByGroupIdAsync(departmentGroupId); if (users != null) { model.UserCount = users.Count; } else { model.UserCount = 0; } if (childGroups != null) { model.ChildGroupCount = childGroups.Count; } else { model.ChildGroupCount = 0; } if (units != null) { model.UnitsCount = units.Count; } else { model.UnitsCount = 0; } if (shifts != null) { model.ShiftsCount = shifts.Count; } else { model.ShiftsCount = 0; } return(View(model)); }
public IActionResult DeleteGroup(DeleteGroupView model) { if (!_authorizationService.CanUserEditDepartmentGroup(UserId, model.Group.DepartmentGroupId)) { Unauthorized(); } var group = _departmentGroupsService.GetGroupById(model.Group.DepartmentGroupId); var users = _departmentGroupsService.GetAllUsersForGroup(model.Group.DepartmentGroupId); var childGroups = _departmentGroupsService.GetAllChildDepartmentGroups(model.Group.DepartmentGroupId); var units = _unitsService.GetAllUnitsForGroup(model.Group.DepartmentGroupId); var shifts = _shiftsService.GetShiftGroupsByGroupId(model.Group.DepartmentGroupId); if (childGroups.Count > 0 || users.Count > 0 || units.Count > 0 || shifts.Count > 0) { model.Group = group; if (users != null) { model.UserCount = users.Count; } else { model.UserCount = 0; } if (childGroups != null) { model.ChildGroupCount = childGroups.Count; } else { model.ChildGroupCount = 0; } if (units != null) { model.UnitsCount = units.Count; } else { model.UnitsCount = 0; } if (shifts != null) { model.ShiftsCount = shifts.Count; } else { model.ShiftsCount = 0; } model.Message = string.Format("Cannot delete the {0} group because it is the parent to other groups, has users or units in it or has shifts assigned to it.", model.Group.Name); return(View(model)); } var department = _departmentsService.GetDepartmentById(group.DepartmentId); if (department.IsUserAnAdmin(UserId) || group.IsUserGroupAdmin(UserId)) { var auditEvent = new AuditEvent(); auditEvent.DepartmentId = DepartmentId; auditEvent.UserId = UserId; auditEvent.Type = AuditLogTypes.GroupRemoved; auditEvent.Before = group.CloneJson(); _eventAggregator.SendMessage <AuditEvent>(auditEvent); _deleteService.DeleteGroup(group.DepartmentGroupId, UserId); } return(RedirectToAction("Index", "Groups", new { Area = "User" })); }