Grouping groupProperties = FenixFramework.getDomainObject(groupPropertiesCode);
if (groupProperties == null) {
throw new ExistingServiceException();
}
StudentGroup studentGroup = FenixFramework.getDomainObject(studentGroupCode);
if (studentGroup == null) {
throw new FenixServiceException();
}
GroupEnrolmentStrategyFactory enrolmentGroupPolicyStrategyFactory = GroupEnrolmentStrategyFactory.getInstance();
IGroupEnrolmentStrategy strategy = enrolmentGroupPolicyStrategyFactory.getGroupEnrolmentStrategyInstance(groupProperties);
if (!strategy.checkStudentInGrouping(groupProperties, username)) {
throw new NotAuthorizedException();
}
result = strategy.checkNotEnroledInGroup(groupProperties, studentGroup, username);
if (result) {
throw new InvalidSituationServiceException();
}
if (groupProperties.getShiftType() == null || studentGroup.getShift() == null) {
throw new InvalidChangeServiceException();
}
return true;
}