diff --git a/src/main/java/ceos/backend/domain/application/ApplicationController.java b/src/main/java/ceos/backend/domain/application/ApplicationController.java index 781cb51c..d993761b 100644 --- a/src/main/java/ceos/backend/domain/application/ApplicationController.java +++ b/src/main/java/ceos/backend/domain/application/ApplicationController.java @@ -2,6 +2,7 @@ import ceos.backend.domain.application.dto.request.*; import ceos.backend.domain.application.dto.response.*; +import ceos.backend.domain.application.enums.SortType; import ceos.backend.domain.application.service.ApplicationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,10 +27,11 @@ public class ApplicationController { @Operation(summary = "지원자 목록 보기") @GetMapping - public GetApplications getApplications(@RequestParam("pageNum") int pageNum, + public GetApplications getApplications(@RequestParam("sort")SortType sortType, + @RequestParam("pageNum") int pageNum, @RequestParam("limit") int limit) { log.info("지원자 목록 보기"); - return applicationService.getApplications(pageNum, limit); + return applicationService.getApplications(pageNum, limit, sortType); } @Operation(summary = "지원하기") diff --git a/src/main/java/ceos/backend/domain/application/enums/SortType.java b/src/main/java/ceos/backend/domain/application/enums/SortType.java new file mode 100644 index 00000000..e8181faf --- /dev/null +++ b/src/main/java/ceos/backend/domain/application/enums/SortType.java @@ -0,0 +1,12 @@ +package ceos.backend.domain.application.enums; + +public enum SortType { + FRONTEND, + BACKEND, + PRODUCT, + DESIGN, + FINALPASS, + FINALFAIL, + DOCPASS, + DOCFAIL +} diff --git a/src/main/java/ceos/backend/domain/application/repository/ApplicationRepository.java b/src/main/java/ceos/backend/domain/application/repository/ApplicationRepository.java index cbb151ce..fc23ee1b 100644 --- a/src/main/java/ceos/backend/domain/application/repository/ApplicationRepository.java +++ b/src/main/java/ceos/backend/domain/application/repository/ApplicationRepository.java @@ -1,6 +1,10 @@ package ceos.backend.domain.application.repository; import ceos.backend.domain.application.domain.Application; +import ceos.backend.domain.application.domain.Pass; +import ceos.backend.global.common.entity.Part; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -25,4 +29,12 @@ Optional findByUuidAndEmail(@Param("uuid") String uuid, @Query("select count(a) > 0 from Application a" + " where a.applicantInfo.email = :email") boolean existsByEmail(@Param("email") String email); + + @Query("select a from Application a" + + " where a.applicationDetail.part = :part") + Page findAllByPart(@Param("part")Part part, PageRequest pageRequest); + + Page findAllByFinalPass(Pass fail, PageRequest pageRequest); + + Page findAllByDocumentPass(Pass fail, PageRequest pageRequest); } diff --git a/src/main/java/ceos/backend/domain/application/service/ApplicationService.java b/src/main/java/ceos/backend/domain/application/service/ApplicationService.java index 9968a724..dae641c8 100644 --- a/src/main/java/ceos/backend/domain/application/service/ApplicationService.java +++ b/src/main/java/ceos/backend/domain/application/service/ApplicationService.java @@ -3,6 +3,7 @@ import ceos.backend.domain.application.domain.*; import ceos.backend.domain.application.dto.request.*; import ceos.backend.domain.application.dto.response.*; +import ceos.backend.domain.application.enums.SortType; import ceos.backend.domain.application.exception.FileCreationFailed; import ceos.backend.domain.application.helper.ApplicationExcelHelper; import ceos.backend.domain.application.helper.ApplicationHelper; @@ -55,11 +56,22 @@ public class ApplicationService { @Transactional(readOnly = true) - public GetApplications getApplications(int pageNum, int limit) { + public GetApplications getApplications(int pageNum, int limit, SortType sortType) { //페이징 요청 정보 PageRequest pageRequest = PageRequest.of(pageNum, limit); - Page pageManagements = applicationRepository.findAll(pageRequest); + Page pageManagements = null; + switch (sortType) { + case BACKEND -> pageManagements = applicationRepository.findAllByPart(Part.BACKEND, pageRequest); + case FRONTEND -> pageManagements = applicationRepository.findAllByPart(Part.FRONTEND, pageRequest); + case DESIGN -> pageManagements = applicationRepository.findAllByPart(Part.DESIGN, pageRequest); + case PRODUCT -> pageManagements = applicationRepository.findAllByPart(Part.PRODUCT, pageRequest); + case FINALFAIL -> pageManagements = applicationRepository.findAllByFinalPass(Pass.FAIL, pageRequest); + case FINALPASS -> pageManagements = applicationRepository.findAllByFinalPass(Pass.PASS, pageRequest); + case DOCFAIL -> pageManagements = applicationRepository.findAllByDocumentPass(Pass.FAIL, pageRequest); + case DOCPASS -> pageManagements = applicationRepository.findAllByDocumentPass(Pass.PASS, pageRequest); + } + //페이징 정보 PageInfo pageInfo = PageInfo.of(pageNum, limit, pageManagements.getTotalPages(), pageManagements.getTotalElements());