Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ public ResponseEntity<Integer> getNumProfessorRatings(String lname, String fname
/**
* Returns a list of recommended CRNS given paramters.
*
* @param inputCourseCrns Potentials CRNs for a schedule
* @param inputCourseNumbers Potential course numbers for a schedule
* @param gapDay Day of the week to leave open
* @param prefStartTime Preferred start time for the schedule
* @param prefEndTime Preferred end time for the schedule
Expand All @@ -379,11 +379,11 @@ public ResponseEntity<Integer> getNumProfessorRatings(String lname, String fname
})
@GetMapping("/get-recommended-schedules")
@Tag(name="course-information")
public ResponseEntity<List<List<Integer>>> getRecommendedSchedules(List<Integer> inputCourseCrns, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
public ResponseEntity<List<List<Integer>>> getRecommendedSchedules(List<String> inputCourseNumbers, String gapDay, int prefStartTime, int prefEndTime, boolean showFilledClasses,
List<Integer> excludedCourseCrns, List<Integer> excludedSectionCrns, String inputCampus, int minCreditHours, int maxCreditHours, boolean walking) {
try {
// Returns a list of recommended schedules based on input parameters
List<List<Integer>> recommendedSchedules = courseInformationService.getRecommendedSchedules(inputCourseCrns, gapDay, prefStartTime, prefEndTime, showFilledClasses,
List<List<Integer>> recommendedSchedules = courseInformationService.getRecommendedSchedules(inputCourseNumbers, gapDay, prefStartTime, prefEndTime, showFilledClasses,
excludedCourseCrns, excludedSectionCrns, inputCampus, minCreditHours, maxCreditHours, walking);

// Return the section if found
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ public double getLongitude(String buildingCode) {
throw new BuildingNotFoundException();
}

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

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

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

// Building input courses list from given course numbers

for (String fullCourseNumber : inputCourseNumbers) {
String subject = fullCourseNumber.substring(0, 4);
String courseNumber = fullCourseNumber.substring(4);
Course course = courseRepository.findBySubjectAndCourseNumber(subject, courseNumber);

List<Section> sections = new ArrayList<>();

for (CourseSection courseSection : course.getCourseSections()) {
int crn = courseSection.getCrn();
String profLastName = courseSection.getInstructor();
float rating = professorRepository.findByLastName(profLastName).getAverageRating();
edu.uga.devdogs.course_information.Algorithm.records.Professor professor = new edu.uga.devdogs.course_information.Algorithm.records.Professor(profLastName, rating);

List<Class> classes = new ArrayList<>();

for (ClassEntity classEntity : courseSection.getClasses()) {
String daysString = classEntity.getDays();
List<DayOfWeek> daysList = new ArrayList<>();
for (int i = 0; i < daysString.length(); i++) {
daysList.add(BruteForceUtil.daySwitch(daysString.substring(i, i + 1)));
}
LocalTime startTime = classEntity.getStartTime();
LocalTime endTime = classEntity.getEndTime();
String buildingName = classEntity.getBuilding().getName();
String campus = classEntity.getCampus();
String buildingNumber = String.valueOf(classEntity.getBuilding().getBuildingCode());
classes.add(new Class(crn, daysList, startTime, endTime, buildingName, campus, buildingNumber));
}
sections.add(new Section(courseNumber, crn, professor, classes));
}
inputCourses.add(new edu.uga.devdogs.course_information.Algorithm.records.Course(courseNumber, sections));
}

//building excluded courses list from given crns

for (Integer crn : excludedCourseCrns) {
Expand Down