11package com.wafflestudio.snutt.diary.service
22
33import com.wafflestudio.snutt.common.enum.Semester
4- import com.wafflestudio.snutt.common.exception.DiaryActivityTypeNotFoundException
4+ import com.wafflestudio.snutt.common.exception.DiaryActivityNotFoundException
55import com.wafflestudio.snutt.common.exception.DiaryQuestionNotFoundException
66import com.wafflestudio.snutt.diary.data.DiaryActivity
77import com.wafflestudio.snutt.diary.data.DiaryQuestion
@@ -68,8 +68,7 @@ class DiaryServiceImpl(
6868 val answeredQuestionIds =
6969 diarySubmissionRepository
7070 .findAllByUserIdAndLectureIdOrderByCreatedAt(userId, lectureId)
71- .flatMap { it.questionIds }
72- .toSet()
71+ .flatMap { submission -> submission.questionAnswers.map { it.questionId } }
7372
7473 return questions
7574 .filterNot { question -> question.id in answeredQuestionIds }
@@ -89,22 +88,21 @@ class DiaryServiceImpl(
8988 ) {
9089 val lecture = lectureService.getByIdOrNull(request.lectureId)!!
9190 val activities = diaryActivityRepository.findByNameIn(request.activities).toList()
92- if (diaryQuestionRepository.countByIdIn(request.questionIds) != request.questionIds.size) {
91+ val questionIds = request.questionAnswers.map { it.questionId }
92+ if (diaryQuestionRepository.countByIdIn(questionIds) != questionIds.size) {
9393 throw DiaryQuestionNotFoundException
9494 }
95- if (activities.size < request.activities.size) {
96- throw DiaryActivityTypeNotFoundException
95+ if (activities.size != request.activities.size) {
96+ throw DiaryActivityNotFoundException
9797 }
98-
9998 val submission =
10099 DiarySubmission (
101100 userId = userId,
102101 comment = request.comment,
103102 lectureId = request.lectureId,
104103 courseTitle = lecture.courseTitle,
105- answerIndexes = request.answerIndexes,
106- questionIds = request.questionIds,
107- activityTypeIds = activities.map { it.id!! },
104+ questionAnswers = request.questionAnswers,
105+ activityIds = activities.map { it.id!! },
108106 year = lecture.year,
109107 semester = lecture.semester,
110108 )
@@ -125,31 +123,31 @@ class DiaryServiceImpl(
125123 override suspend fun getSubmissionIdShortQuestionRepliesMap (
126124 submissions : List <DiarySubmission >,
127125 ): Map <String , List <DiaryShortQuestionReply >> {
128- val questions = diaryQuestionRepository.findAllByIdIn(submissions.flatMap { it.questionIds }).associateBy { it.id }
126+ val questionIds = submissions.flatMap { submission -> submission.questionAnswers.map { it.questionId } }
127+ val questionsIdMap = diaryQuestionRepository.findAllByIdIn(questionIds).associateBy { it.id }
129128 return submissions.associate { submission ->
130129 val shortQuestionReplies =
131- submission.questionIds.mapIndexedNotNull { index, questionId ->
132- questions[questionId]?.let { question ->
133- DiaryShortQuestionReply (
134- question = question.shortQuestion,
135- answer = question.shortAnswers[submission.answerIndexes[index]],
136- )
137- }
130+ submission.questionAnswers.map { (questionId, answerIndex) ->
131+ val question = questionsIdMap[questionId]!!
132+ DiaryShortQuestionReply (
133+ question = question.shortQuestion,
134+ answer = question.shortAnswers[answerIndex],
135+ )
138136 }
139137 submission.id!! to shortQuestionReplies
140138 }
141139 }
142140
143141 override suspend fun addOrEnableActivity (name : String ) {
144- val activityType = diaryActivityRepository.findByName(name) ? : DiaryActivity (name = name, active = true )
145- activityType .active = true
146- diaryActivityRepository.save(activityType )
142+ val activity = diaryActivityRepository.findByName(name) ? : DiaryActivity (name = name, active = true )
143+ activity .active = true
144+ diaryActivityRepository.save(activity )
147145 }
148146
149147 override suspend fun disableActivity (name : String ) {
150- val activityType = diaryActivityRepository.findByName(name) ? : return
151- activityType .active = false
152- diaryActivityRepository.save(activityType )
148+ val activity = diaryActivityRepository.findByName(name) ? : return
149+ activity .active = false
150+ diaryActivityRepository.save(activity )
153151 }
154152
155153 override suspend fun addQuestion (request : DiaryAddQuestionRequestDto ) {
0 commit comments