diff --git a/backend/src/main/java/moadong/club/entity/ClubApplication.java b/backend/src/main/java/moadong/club/entity/ClubApplication.java index 7e94df822..bfd9675f0 100644 --- a/backend/src/main/java/moadong/club/entity/ClubApplication.java +++ b/backend/src/main/java/moadong/club/entity/ClubApplication.java @@ -39,8 +39,16 @@ public class ClubApplication { @Builder.Default LocalDateTime createdAt = ZonedDateTime.now(ZoneId.of("Asia/Seoul")).toLocalDateTime(); - public void updateDetail(String memo, ApplicationStatus status) { + public void updateMemo(String memo) { this.memo = memo; + } + + public void updateStatus(ApplicationStatus status) { this.status = status; } + + public void updateAnswers(List answers) { + this.answers.clear(); + this.answers.addAll(answers); + } } diff --git a/backend/src/main/java/moadong/club/service/ClubApplyService.java b/backend/src/main/java/moadong/club/service/ClubApplyService.java index 814354565..bebffb776 100644 --- a/backend/src/main/java/moadong/club/service/ClubApplyService.java +++ b/backend/src/main/java/moadong/club/service/ClubApplyService.java @@ -99,6 +99,8 @@ public ClubApplyInfoResponse getClubApplyInfo(String clubId, CustomUserDetails u throw new RestApiException(ErrorCode.USER_UNAUTHORIZED); } + ClubQuestion clubApplication = clubQuestionRepository.findByClubId(clubId) + .orElseThrow(() -> new RestApiException(ErrorCode.APPLICATION_NOT_FOUND)); List submittedApplications = clubApplicationRepository.findAllByQuestionId(clubId); List applications = new ArrayList<>(); @@ -107,7 +109,8 @@ public ClubApplyInfoResponse getClubApplyInfo(String clubId, CustomUserDetails u int accepted = 0; for (ClubApplication app : submittedApplications) { - applications.add(ClubApplicantsResult.of(app, cipher)); + ClubApplication sortedApp = sortApplicationAnswers(clubApplication, app); + applications.add(ClubApplicantsResult.of(sortedApp, cipher)); switch (app.getStatus()) { case SUBMITTED -> reviewRequired++; @@ -125,6 +128,19 @@ public ClubApplyInfoResponse getClubApplyInfo(String clubId, CustomUserDetails u .build(); } + private ClubApplication sortApplicationAnswers(ClubQuestion application, ClubApplication app) { + Map answerMap = app.getAnswers().stream() + .collect(Collectors.toMap(ClubQuestionAnswer::getId, answer -> answer)); + + List sortedAnswers = application.getQuestions().stream() + .map(question -> answerMap.get(question.getId())) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + app.updateAnswers(sortedAnswers); + return app; + } + @Transactional public void editApplicantDetail(String clubId, String appId, ClubApplicantEditRequest request, CustomUserDetails user) { Club club = clubRepository.findById(clubId) @@ -137,7 +153,8 @@ public void editApplicantDetail(String clubId, String appId, ClubApplicantEditRe ClubApplication application = clubApplicationRepository.findByIdAndQuestionId(appId, clubId) .orElseThrow(() -> new RestApiException(ErrorCode.APPLICANT_NOT_FOUND)); - application.updateDetail(request.memo(), request.status()); + application.updateMemo(request.memo()); + application.updateStatus(request.status()); clubApplicationRepository.save(application); } @@ -287,4 +304,4 @@ private ClubQuestion getClubQuestion(String clubId, CustomUserDetails user) { .clubId(club.getId()) .build()); } -} +} \ No newline at end of file