diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index c8e45af4..d1119e51 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -226,7 +226,7 @@ public class AssignedApplicationsDao { log.info("Assigned Application deleted with ID: {}", id); } - public List getAllAssignedApplications(HttpServletRequest request, Long userId) { + public List getAllAssignedApplications(HttpServletRequest request, Long userId,List statusList) { UserEntity user = validator.validateUser(request); if(validator.checkIsPreInstructor() && userId == null) { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.USER_ID_NOT_NULL_MSG)); @@ -234,18 +234,24 @@ public class AssignedApplicationsDao { if(userId != null) { validator.validatePreInstructor(request, userId); } - Specification spec = search(user.getHub().getId() ,userId); + Specification spec = search(user.getHub().getId() ,userId,statusList); List assignedApplicationsEntityList = assignedApplicationsRepository.findAll(spec); return assignedApplicationsEntityList.stream() .map(entity -> convertEntityToResponse(entity)) .collect(Collectors.toList()); } - private Specification search(Long hubId, Long userId) { + private Specification search(Long hubId, Long userId,List statusList) { return (root, query, builder) -> { Predicate predicate = builder.isFalse(root.get("isDeleted")); if (userId != null) { predicate = builder.and(predicate, builder.equal(root.get("userId"), userId)); } + if (statusList != null && !statusList.isEmpty()) { + List statusNames = statusList.stream() + .map(Enum::name) + .collect(Collectors.toList()); + predicate = builder.and(predicate, root.get("status").in(statusNames)); + } query.orderBy( builder.desc(builder.isNotNull(root.get(GepafinConstant.ASSIGNED_AT))), builder.desc(root.get(GepafinConstant.ASSIGNED_AT)) diff --git a/src/main/java/net/gepafin/tendermanagement/service/AssignedApplicationsService.java b/src/main/java/net/gepafin/tendermanagement/service/AssignedApplicationsService.java index 1a73c674..5d9df4f7 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/AssignedApplicationsService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/AssignedApplicationsService.java @@ -2,6 +2,8 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; +import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.request.UpdateAssignedApplicationRequest; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; @@ -15,7 +17,7 @@ public interface AssignedApplicationsService { void deleteApplication(HttpServletRequest request, Long id); - List getAllAssignedApplications(HttpServletRequest request, Long userId); + List getAllAssignedApplications(HttpServletRequest request, Long userId,List statusList); AssignedApplicationsResponse updateAssignedApplication(HttpServletRequest request, Long id, UpdateAssignedApplicationRequest assignedApplicationsRequest); AssignedApplicationsResponse getAssignedApplicationById(HttpServletRequest request, Long id); AssignedApplicationsEntity validateAssignedApplication(Long assignedApplicationId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AssignedApplicationsServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AssignedApplicationsServiceImpl.java index c820d929..b6d68807 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AssignedApplicationsServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AssignedApplicationsServiceImpl.java @@ -4,6 +4,8 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.AssignedApplicationsDao; import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity; import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; +import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.request.UpdateAssignedApplicationRequest; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; @@ -40,8 +42,8 @@ public class AssignedApplicationsServiceImpl implements AssignedApplicationsServ @Override @Transactional(readOnly = true) - public List getAllAssignedApplications(HttpServletRequest request, Long userId) { - return assignedApplicationsDao.getAllAssignedApplications(request, userId); + public List getAllAssignedApplications(HttpServletRequest request, Long userId,List statusList) { + return assignedApplicationsDao.getAllAssignedApplications(request, userId,statusList); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/AssignedApplicationsApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/AssignedApplicationsApi.java index 144a20f4..a2742e07 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/AssignedApplicationsApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/AssignedApplicationsApi.java @@ -6,6 +6,8 @@ import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; +import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.request.UpdateAssignedApplicationRequest; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; @@ -66,7 +68,8 @@ public interface AssignedApplicationsApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "", produces = "application/json") ResponseEntity>> getAllAssignedApplications(HttpServletRequest request, - @Parameter(description = "The User ID", required = false) @RequestParam(value = "userId",required = false) Long userId); + @Parameter(description = "The User ID", required = false) @RequestParam(value = "userId",required = false) Long userId, + @Parameter(description = "Assigned application statuses" ,required = false) @RequestParam(value = "statuses",required = false) List statusList); @Operation(summary = "Api to update assigned application", responses = { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/AssignedApplicationsController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/AssignedApplicationsController.java index 78cc47dd..ceaea428 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/AssignedApplicationsController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/AssignedApplicationsController.java @@ -4,6 +4,8 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.extern.log4j.Log4j2; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; +import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; @@ -56,12 +58,12 @@ public class AssignedApplicationsController implements AssignedApplicationsApi { } @Override - public ResponseEntity>> getAllAssignedApplications(HttpServletRequest request, Long userId) { + public ResponseEntity>> getAllAssignedApplications(HttpServletRequest request, Long userId,List statusList) { log.info("Get All Assigned Applications"); /** This code is responsible for creating user action logs for the "get Assigned Applications" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) .actionContext(UserActionContextEnum.GET_ASSIGNED_APPLICATION).build()); - List applications = assignedApplicationsService.getAllAssignedApplications(request, userId); + List applications = assignedApplicationsService.getAllAssignedApplications(request, userId,statusList); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(applications, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_ASSIGNED_APPLICATION_SUCCESS_MSG))); }