diff --git a/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java b/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java index d3784936d..7d9bb8930 100644 --- a/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java +++ b/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java @@ -80,6 +80,16 @@ public ResponseEntity deleteClubApplicationForm(@PathVariable String applicat return Response.ok("success delete application"); } + @PostMapping("/application/{applicationFormId}/duplicate") + @Operation(summary = "클럽 지원서 양식 복제", description = "클럽의 지원서 양식을 복제합니다") + @PreAuthorize("isAuthenticated()") + @SecurityRequirement(name = "BearerAuth") + public ResponseEntity duplicateClubApplicationForm(@PathVariable String applicationFormId, + @CurrentUser CustomUserDetails user) { + clubApplyAdminService.duplicateClubApplicationForm(applicationFormId, user); + return Response.ok("success duplicate application"); + } + @GetMapping("/apply/info/{applicationFormId}") @Operation(summary = "클럽 지원자 현황", description = "클럽 지원자 현황을 불러옵니다") @PreAuthorize("isAuthenticated()") diff --git a/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java b/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java index 0b81a5edc..06f912b37 100644 --- a/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java +++ b/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java @@ -27,7 +27,7 @@ @Getter @Builder(toBuilder = true) public class ClubApplicationForm implements Persistable { - private static final String[] externalApplicationUrlAllowed = {"https://forms.gle", "https://docs.google.com/forms", "https://form.naver.com", "https://naver.me"}; + private static final String[] externalApplicationUrlAllowed = {"https://forms.gle", "https://docs.google.com/forms", "https://form.naver.com", "https://naver.me", "https://everytime.kr"}; @Id private String id; diff --git a/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java b/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java index b4e485562..3fbaff95f 100644 --- a/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java +++ b/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java @@ -4,7 +4,8 @@ import lombok.extern.slf4j.Slf4j; import moadong.club.entity.*; import moadong.club.enums.SemesterTerm; -import moadong.club.payload.dto.*; +import moadong.club.payload.dto.ApplicantStatusEvent; +import moadong.club.payload.dto.ClubApplicantsResult; import moadong.club.payload.request.*; import moadong.club.payload.response.ClubApplicationFormsResponse; import moadong.club.payload.response.ClubApplyInfoResponse; @@ -128,6 +129,23 @@ public void deleteClubApplicationForm(String applicationFormId, CustomUserDetail clubApplicationFormsRepository.delete(applicationForm); } + @Transactional + public void duplicateClubApplicationForm(String applicationFormId, CustomUserDetails user) { + ClubApplicationForm oldApplicationForm = clubApplicationFormsRepository.findByClubIdAndId(user.getClubId(), applicationFormId) + .orElseThrow(() -> new RestApiException(ErrorCode.APPLICATION_NOT_FOUND)); + + ClubApplicationForm newApplicationForm = ClubApplicationForm.builder() + .title("무제") + .clubId(oldApplicationForm.getClubId()) + .description(oldApplicationForm.getDescription()) + .formMode(oldApplicationForm.getFormMode()) + .questions(oldApplicationForm.getQuestions()) + .externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl()) + .build(); + + clubApplicationFormsRepository.save(newApplicationForm); + } + public ClubApplyInfoResponse getClubApplyInfo(String applicationFormId, CustomUserDetails user) { ClubApplicationForm applicationForm = clubApplicationFormsRepository.findByClubIdAndId(user.getClubId(), applicationFormId) .orElseThrow(() -> new RestApiException(ErrorCode.APPLICATION_NOT_FOUND));