From 3b3182cc1fd9f7c3054524e297f1cea08ad1722d Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 11 Feb 2025 18:24:18 +0530 Subject: [PATCH] Resolved conflict --- .../tendermanagement/dao/ApplicationDao.java | 16 ++++++ .../repositories/ApplicationRepository.java | 56 +++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index af16c5b8..8bc2eb00 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -874,6 +874,10 @@ public class ApplicationDao { checkCallEndDate(call); // call = callService.validatePublishedCall(call.getId()); // checkIfApplicationExists(call, userWithCompanyEntity, userEntity); + HubEntity hubEntity = hubService.valdateHub(call.getHub().getId()); + if(hubEntity.getUniqueUuid().equals(defaultHubUuid)){ + checkIfApplicationExists(call, userWithCompanyEntity, userEntity); + } ApplicationEntity applicationEntity = createApplicationEntity(userEntity, call, userWithCompanyEntity); applicationEntity.setComments(applicationRequest.getComments()); applicationEntity = saveApplicationEntity(applicationEntity); @@ -886,6 +890,18 @@ public class ApplicationDao { // } // } + public void checkIfApplicationExists(CallEntity call, UserWithCompanyEntity userWithCompanyEntity, UserEntity userEntity){ + + List applications = applicationRepository.findByUserIdAndUserWithCompany_IdAndCall_IdAndIsDeletedFalseAndStatusNot( + userEntity.getId(), userWithCompanyEntity.getId(), call.getId(), ApplicationStatusTypeEnum.REJECTED.name() + ); + + if (!applications.isEmpty()) { + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_EXISTS)); + } + } + + public ApplicationResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status) { ApplicationEntity applicationEntity = validateApplication(applicationId); diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index c46c52c7..d57b7d0c 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -77,4 +77,60 @@ public interface ApplicationRepository extends JpaRepository findApplicationIdsByHubId(@Param("hubId") Long hubId); + + @Query("SELECT a.status, COUNT(a.id) FROM ApplicationEntity a WHERE a.isDeleted = false AND a.userId = :userId AND a.userWithCompany.id = :userWithCompanyId AND a.call.hub.id = :hubId GROUP BY a.status") + List findApplicationsByStatusAndUserIdAndUserWithCompanyId(@Param("hubId") Long hubId, + @Param("userId") Long userId, + @Param("userWithCompanyId") Long userWithCompanyId); + + @Query(""" + SELECT TO_CHAR(a.submissionDate, 'Mon') AS month, + SUM(a.amountRequested) AS totalRequested, + SUM(a.amountAccepted) AS totalApproved + FROM ApplicationEntity a + WHERE a.isDeleted = false + AND a.status = 'APPROVED' + AND a.call.hub.id = :hubId + AND a.userId = :userId + AND a.userWithCompany.id = :userWithCompanyId + GROUP BY TO_CHAR(a.submissionDate, 'Mon'), EXTRACT(YEAR FROM a.submissionDate), EXTRACT(MONTH FROM a.submissionDate) + ORDER BY EXTRACT(YEAR FROM a.submissionDate), EXTRACT(MONTH FROM a.submissionDate) +""") + List findRequestedVsApprovedAmountsPerMonth( + @Param("hubId") Long hubId, + @Param("userId") Long userId, + @Param("userWithCompanyId") Long userWithCompanyId + ); + + @Query("SELECT COUNT(a) FROM ApplicationEntity a " + + "WHERE a.hubId = :hubId " + + "AND a.userId = :userId " + + "AND a.userWithCompany.id = :userWithCompanyId " + + "AND a.isDeleted = false " + + "AND a.status IN :statusList " + + "AND a.submissionDate IS NOT NULL") + Long countSubmittedApplicationsByHubIdAndUserId( + @Param("hubId") Long hubId, + @Param("userId") Long userId, + @Param("userWithCompanyId") Long userWithCompanyId, + @Param("statusList") List statusList + ); + + @Query("SELECT COUNT(a) FROM ApplicationEntity a " + + "WHERE a.hubId = :hubId " + + "AND a.userId = :userId " + + "AND a.userWithCompany.id = :userWithCompanyId " + + "AND a.status = :status " + + "AND a.isDeleted = false") + Long countSubmittedApplicationsByHubIdAndUserIdAndStatus( + @Param("hubId") Long hubId, + @Param("userId") Long userId, + @Param("userWithCompanyId") Long userWithCompanyId, + @Param("status") String status); + @Query("SELECT SUM(a.amountAccepted) FROM ApplicationEntity a WHERE a.hubId = :hubId AND a.userId = :userId AND a.status = 'APPROVED' AND a.userWithCompany.id = :userWithCompanyId AND a.isDeleted = false") + BigDecimal sumAmountRequestedByHubIdAndUserId(@Param("hubId") Long hubId, @Param("userId") Long userId, @Param("userWithCompanyId") Long userWithCompanyId); + + List findByUserIdAndUserWithCompany_IdAndCall_IdAndIsDeletedFalseAndStatusNot( + Long userId, Long userWithCompanyId, Long callId, String status + ); }