1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.enrollment.class2.courseoffering.krms.termresolver;
17
18 import org.kuali.rice.krms.api.engine.TermResolutionException;
19 import org.kuali.rice.krms.api.engine.TermResolver;
20 import org.kuali.student.enrollment.courseoffering.dto.CourseOfferingInfo;
21 import org.kuali.student.enrollment.courseoffering.dto.RegistrationGroupInfo;
22 import org.kuali.student.enrollment.courseoffering.infc.CourseOffering;
23 import org.kuali.student.enrollment.courseoffering.service.CourseOfferingService;
24 import org.kuali.student.enrollment.courseregistration.dto.CourseRegistrationInfo;
25 import org.kuali.student.enrollment.courseregistration.dto.RegistrationRequestInfo;
26 import org.kuali.student.enrollment.courseregistration.dto.RegistrationRequestItemInfo;
27 import org.kuali.student.enrollment.courseregistration.service.CourseRegistrationService;
28 import org.kuali.student.r2.common.dto.ContextInfo;
29 import org.kuali.student.r2.common.krms.util.KSKRMSExecutionUtil;
30 import org.kuali.student.r2.core.constants.KSKRMSServiceConstants;
31
32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.HashSet;
35 import java.util.List;
36 import java.util.Map;
37 import java.util.Set;
38
39
40
41
42
43
44
45
46
47
48 public class EnrolledCourseTermResolver implements TermResolver<Boolean> {
49
50 private CourseRegistrationService courseRegistrationService;
51 private CourseOfferingService courseOfferingService;
52
53 private TermResolver<List<String>> cluIdsTermResolver;
54
55 @Override
56 public Set<String> getPrerequisites() {
57 Set<String> prereqs = new HashSet<String>(2);
58 prereqs.add(KSKRMSServiceConstants.TERM_PREREQUISITE_PERSON_ID);
59 prereqs.add(KSKRMSServiceConstants.TERM_PREREQUISITE_CONTEXTINFO);
60 return Collections.unmodifiableSet(prereqs);
61 }
62
63 @Override
64 public String getOutput() {
65 return KSKRMSServiceConstants.TERM_RESOLVER_ENROLLEDCOURSE;
66 }
67
68 @Override
69 public Set<String> getParameterNames() {
70 return Collections.singleton(KSKRMSServiceConstants.TERM_PARAMETER_TYPE_CLU_KEY);
71 }
72
73 @Override
74 public int getCost() {
75 return 5;
76 }
77
78 @Override
79 public Boolean resolve(Map<String, Object> resolvedPrereqs, Map<String, String> parameters) throws TermResolutionException {
80 ContextInfo context = (ContextInfo) resolvedPrereqs.get(KSKRMSServiceConstants.TERM_PREREQUISITE_CONTEXTINFO);
81 String personId = (String) resolvedPrereqs.get(KSKRMSServiceConstants.TERM_PREREQUISITE_PERSON_ID);
82 String termId = (String) resolvedPrereqs.get(KSKRMSServiceConstants.TERM_PREREQUISITE_TERM_ID);
83
84 try {
85
86 List<String> courseIds = this.getCluIdsTermResolver().resolve(resolvedPrereqs, parameters);
87
88
89 List<String> regGroupIds = new ArrayList<String>();
90 List<RegistrationRequestInfo> regRequests = this.getCourseRegistrationService().getUnsubmittedRegistrationRequestsByRequestorAndTerm(personId, termId, context) ;
91 for(RegistrationRequestInfo request : regRequests){
92 for(RegistrationRequestItemInfo regItem : request.getRegistrationRequestItems()){
93 if(regItem.getExistingRegistrationGroupId()!=null){
94 regGroupIds.remove(regItem.getExistingRegistrationGroupId());
95 }
96 regGroupIds.add(regItem.getNewRegistrationGroupId());
97 }
98 }
99
100
101 for(String regGroupId : regGroupIds){
102 RegistrationGroupInfo regGroup = this.getCourseOfferingService().getRegistrationGroup(regGroupId, context);
103 CourseOfferingInfo courseOffering = this.getCourseOfferingService().getCourseOffering(regGroup.getCourseOfferingId(), context);
104 if(courseIds.contains(courseOffering.getCourseId())){
105 return true;
106 }
107 }
108
109
110 List<CourseRegistrationInfo> recordInfoList = this.getCourseRegistrationService().getCourseRegistrationsByStudent(personId, context);
111 for(CourseRegistrationInfo studentRecord : recordInfoList){
112 CourseOffering courseOffering = this.getCourseOfferingService().getCourseOffering(studentRecord.getCourseOfferingId(), context);
113 if(courseIds.contains(courseOffering.getCourseId())){
114 return true;
115 }
116 }
117
118 } catch (Exception e) {
119 KSKRMSExecutionUtil.convertExceptionsToTermResolutionException(parameters, e, this);
120 }
121
122 return false;
123 }
124
125 public CourseRegistrationService getCourseRegistrationService() {
126 return courseRegistrationService;
127 }
128
129 public void setCourseRegistrationService(CourseRegistrationService courseRegistrationService) {
130 this.courseRegistrationService = courseRegistrationService;
131 }
132
133 public CourseOfferingService getCourseOfferingService() {
134 return courseOfferingService;
135 }
136
137 public void setCourseOfferingService(CourseOfferingService courseOfferingService) {
138 this.courseOfferingService = courseOfferingService;
139 }
140
141 public TermResolver<List<String>> getCluIdsTermResolver() {
142 return cluIdsTermResolver;
143 }
144
145 public void setCluIdsTermResolver(TermResolver<List<String>> cluIdsTermResolver) {
146 this.cluIdsTermResolver = cluIdsTermResolver;
147 }
148
149 }