예제 #1
0
        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));
        }
예제 #2
0
        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" }));
        }