Skip to content

Commit f8b8a02

Browse files
Merge pull request #768 from bfuhriman/rec-schedules
Updated getRecommendedSchedules() to use course numbers instead of CRNs
2 parents 16b70a7 + 60540b4 commit f8b8a02

2 files changed

Lines changed: 39 additions & 4 deletions

File tree

services/course-information/src/main/java/edu/uga/devdogs/course_information/controller/CourseInfoController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ public ResponseEntity<Integer> getNumProfessorRatings(String lname, String fname
359359
/**
360360
* Returns a list of recommended CRNS given paramters.
361361
*
362-
* @param inputCourseCrns Potentials CRNs for a schedule
362+
* @param inputCourseNumbers Potential course numbers for a schedule
363363
* @param gapDay Day of the week to leave open
364364
* @param prefStartTime Preferred start time for the schedule
365365
* @param prefEndTime Preferred end time for the schedule
@@ -379,11 +379,11 @@ public ResponseEntity<Integer> getNumProfessorRatings(String lname, String fname
379379
})
380380
@GetMapping("/get-recommended-schedules")
381381
@Tag(name="course-information")
382-
public ResponseEntity<List<List<Integer>>> getRecommendedSchedules(List<Integer> inputCourseCrns, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
382+
public ResponseEntity<List<List<Integer>>> getRecommendedSchedules(List<String> inputCourseNumbers, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
383383
List<Integer> excludedCourseCrns, List<Integer> excludedSectionCrns, String inputCampus, int minCreditHours, int maxCreditHours, boolean walking) {
384384
try {
385385
// Returns a list of recommended schedules based on input parameters
386-
List<List<Integer>> recommendedSchedules = courseInformationService.getRecommendedSchedules(inputCourseCrns, gapDay, prefStartTime, prefEndTime, showFilledClasses,
386+
List<List<Integer>> recommendedSchedules = courseInformationService.getRecommendedSchedules(inputCourseNumbers, gapDay, prefStartTime, prefEndTime, showFilledClasses,
387387
excludedCourseCrns, excludedSectionCrns, inputCampus, minCreditHours, maxCreditHours, walking);
388388

389389
// Return the section if found

services/course-information/src/main/java/edu/uga/devdogs/course_information/service/CourseInformationService.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ public double getLongitude(String buildingCode) {
318318
throw new BuildingNotFoundException();
319319
}
320320

321-
public List<List<Integer>> getRecommendedSchedules(List<Integer> inputCourseCrns, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
321+
public List<List<Integer>> getRecommendedSchedules(List<String> inputCourseNumbers, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
322322
List<Integer> excludedCourseCrns, List<Integer> excludedSectionCrns, String inputCampus, int minCreditHours, int maxCreditHours, boolean walking) {
323323
Set<edu.uga.devdogs.course_information.Algorithm.records.Course> inputCourses = new HashSet<>();
324324

@@ -332,6 +332,41 @@ public List<List<Integer>> getRecommendedSchedules(List<Integer> inputCourseCrns
332332

333333
List<edu.uga.devdogs.course_information.Algorithm.records.Course> excludedCourses = new ArrayList<>();
334334

335+
// Building input courses list from given course numbers
336+
337+
for (String fullCourseNumber : inputCourseNumbers) {
338+
String subject = fullCourseNumber.substring(0, 4);
339+
String courseNumber = fullCourseNumber.substring(4);
340+
Course course = courseRepository.findBySubjectAndCourseNumber(subject, courseNumber);
341+
342+
List<Section> sections = new ArrayList<>();
343+
344+
for (CourseSection courseSection : course.getCourseSections()) {
345+
int crn = courseSection.getCrn();
346+
String profLastName = courseSection.getInstructor();
347+
float rating = professorRepository.findByLastName(profLastName).getAverageRating();
348+
edu.uga.devdogs.course_information.Algorithm.records.Professor professor = new edu.uga.devdogs.course_information.Algorithm.records.Professor(profLastName, rating);
349+
350+
List<Class> classes = new ArrayList<>();
351+
352+
for (ClassEntity classEntity : courseSection.getClasses()) {
353+
String daysString = classEntity.getDays();
354+
List<DayOfWeek> daysList = new ArrayList<>();
355+
for (int i = 0; i < daysString.length(); i++) {
356+
daysList.add(BruteForceUtil.daySwitch(daysString.substring(i, i + 1)));
357+
}
358+
LocalTime startTime = classEntity.getStartTime();
359+
LocalTime endTime = classEntity.getEndTime();
360+
String buildingName = classEntity.getBuilding().getName();
361+
String campus = classEntity.getCampus();
362+
String buildingNumber = String.valueOf(classEntity.getBuilding().getBuildingCode());
363+
classes.add(new Class(crn, daysList, startTime, endTime, buildingName, campus, buildingNumber));
364+
}
365+
sections.add(new Section(courseNumber, crn, professor, classes));
366+
}
367+
inputCourses.add(new edu.uga.devdogs.course_information.Algorithm.records.Course(courseNumber, sections));
368+
}
369+
335370
//building excluded courses list from given crns
336371

337372
for (Integer crn : excludedCourseCrns) {

0 commit comments

Comments
 (0)