diff --git a/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/CoursesFactory.kt b/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/CoursesFactory.kt index d0fbb67..56a5115 100644 --- a/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/CoursesFactory.kt +++ b/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/CoursesFactory.kt @@ -1,5 +1,6 @@ package com.yourssu.soongpt.domain.course.implement +import com.yourssu.soongpt.domain.course.implement.exception.InvalidTimetableRequestException import org.springframework.stereotype.Component @Component @@ -13,4 +14,10 @@ class CoursesFactory { } }.map { Courses(it) } } + + fun validateEmpty(timetableCandidates: List) { + if (timetableCandidates.isEmpty()) { + throw InvalidTimetableRequestException() + } + } } diff --git a/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/exception/InvalidTimetableRequestException.kt b/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/exception/InvalidTimetableRequestException.kt new file mode 100644 index 0000000..84ecea7 --- /dev/null +++ b/src/main/kotlin/com/yourssu/soongpt/domain/course/implement/exception/InvalidTimetableRequestException.kt @@ -0,0 +1,7 @@ +package com.yourssu.soongpt.domain.course.implement.exception + +import com.yourssu.soongpt.common.handler.BadRequestException + +class InvalidTimetableRequestException : BadRequestException(message = "시간표가 나올 수 있는 경우의 수가 없습니다.") { + +} diff --git a/src/main/kotlin/com/yourssu/soongpt/domain/timetable/business/TimetableService.kt b/src/main/kotlin/com/yourssu/soongpt/domain/timetable/business/TimetableService.kt index f2b926b..42c0eee 100644 --- a/src/main/kotlin/com/yourssu/soongpt/domain/timetable/business/TimetableService.kt +++ b/src/main/kotlin/com/yourssu/soongpt/domain/timetable/business/TimetableService.kt @@ -32,14 +32,13 @@ class TimetableService( val majorElectiveCourses = command.majorElectiveCourses.map { courseReader.findAllByCourseNameInMajorElective(department.id!!, it) } val generalRequiredCourses = - command.generalRequiredCourses.map { - courseReader.findAllByCourseNameInGeneralRequired( - department.id!!, - it - ) + command.generalRequiredCourses.map { courseReader.findAllByCourseNameInGeneralRequired(department.id!!, it) } + val coursesCandidates = coursesFactory.generateTimetableCandidates(majorRequiredCourses + majorElectiveCourses + generalRequiredCourses) + coursesFactory.validateEmpty(coursesCandidates) + val responses = ArrayList() for (courses in coursesCandidates) { val timetable = timetableWriter.save(Timetable(tag = Tag.DEFAULT))