diff --git a/src/main/java/net/gepafin/tendermanagement/dao/BeneficiaryPreferredCallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/BeneficiaryPreferredCallDao.java index 285702f1..0fde4365 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/BeneficiaryPreferredCallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/BeneficiaryPreferredCallDao.java @@ -77,17 +77,18 @@ public class BeneficiaryPreferredCallDao { // } public void deleteBeneficiaryPreferredCallById(HttpServletRequest request, Long id) { - log.info("Deleting beneficiary preferred call with ID: {}", id); + log.info("Soft deleting beneficiary preferred call with ID: {}", id); BeneficiaryPreferredCallEntity entity = validateBeneficiaryPreferredCall(id); validator.validateUserId(request, entity.getUserId()); - beneficiaryPreferredCallRepository.deleteById(id); - log.info("Beneficiary preferred call deleted with ID: {}", id); + entity.setIsDeleted(true); + beneficiaryPreferredCallRepository.save(entity); + log.info("Beneficiary preferred call soft deleted with ID: {}", id); } public List getAllBeneficiaryPreferredCalls(HttpServletRequest request) { UserEntity userEntity = validator.validateUser(request); log.info("Fetching all beneficiary preferred calls"); - List calls = beneficiaryPreferredCallRepository.findByUserId(userEntity.getId()) + List calls = beneficiaryPreferredCallRepository.findByUserIdAndIsDeletedFalse(userEntity.getId()) .stream() .map(this::convertEntityToResponse) .collect(Collectors.toList()); @@ -97,7 +98,7 @@ public class BeneficiaryPreferredCallDao { private BeneficiaryPreferredCallEntity validateBeneficiaryPreferredCall(Long id) { log.info("Validating beneficiary preferred call with ID: {}", id); - return beneficiaryPreferredCallRepository.findById(id) + return beneficiaryPreferredCallRepository.findByIdAndIsDeletedFalse(id) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.BENEFICIARY_CALL_NOT_FOUND))); } @@ -123,7 +124,7 @@ public class BeneficiaryPreferredCallDao { } public List getBeneficiaryPreferredCallByUserId(UserEntity userEntity, Long companyId) { - List calls = beneficiaryPreferredCallRepository.findByUserIdAndCompanyId(userEntity.getId(), companyId); + List calls = beneficiaryPreferredCallRepository.findByUserIdAndCompanyIdAndIsDeletedFalse(userEntity.getId(), companyId); return calls.stream() .map(this::convertEntityToResponse) .collect(Collectors.toList()); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 89372905..c9e330d5 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -425,10 +425,22 @@ public class CallDao { Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); } - public CallResponse getCallById(CallEntity callEntity) { - return getCallResponseBean(callEntity); + public CallResponse getCallById(UserEntity user, CallEntity callEntity) { + Long userId = user.getId(); + Long callId = callEntity.getId(); + + BeneficiaryPreferredCallEntity preferredCall = beneficiaryPreferredCallRepository + .findByUserIdAndCallIdInAndIsDeletedFalse(userId, List.of(callId)) + .stream() + .findFirst() + .orElse(null); + CallResponse callResponse = getCallResponseBean(callEntity); + callResponse.setPreferredCallId(preferredCall != null ? preferredCall.getId() : null); + + return callResponse; } + public CallResponse createCallStep2(CallEntity callEntity, CreateCallRequestStep2 createCallRequest, UserEntity user) { validateUpdate(callEntity); setIfUpdated(callEntity::getThreshold, callEntity::setThreshold, createCallRequest.getThreshold()); @@ -648,6 +660,7 @@ public class CallDao { if (Boolean.FALSE.equals(ROLE_SUPER_ADMIN.getValue().equals(type))) { callStatusList = List.of(CallStatusEnum.PUBLISH.getValue()); } + List calls = callRepository.findByStatusInAndHubId(callStatusList, user.getHub().getId()); List callIds = calls.stream().map(CallEntity::getId).collect(Collectors.toList()); @@ -657,16 +670,19 @@ public class CallDao { .map(call -> { CallDetailsResponseBean responseBean = convertToCallDetailsResponseBean(call); String key = user.getId() + "_" + call.getId(); - boolean isPreferred = preferredCallsMap.containsKey(key); - responseBean.setPreferred(isPreferred); + + BeneficiaryPreferredCallEntity preferredCall = preferredCallsMap.get(key); + Long preferredId = (preferredCall != null && !preferredCall.getIsDeleted()) ? preferredCall.getId() : null; + responseBean.setPreferredCallId(preferredId); + return responseBean; }) .collect(Collectors.toList()); } - public Map getBeneficiaryPreferredCallsForUser(UserEntity user, List callIds) { + public Map getBeneficiaryPreferredCallsForUser(UserEntity user, List callIds) { List beneficiaryPreferredCalls = beneficiaryPreferredCallRepository - .findByUserIdAndCallIdIn(user.getId(), callIds); + .findByUserIdAndCallIdInAndIsDeletedFalse(user.getId(), callIds); return beneficiaryPreferredCalls.stream() .collect(Collectors.toMap( diff --git a/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryPreferredCallEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryPreferredCallEntity.java index 83fbcc95..7a30c267 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryPreferredCallEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryPreferredCallEntity.java @@ -34,4 +34,6 @@ public class BeneficiaryPreferredCallEntity extends BaseEntity{ @Column(name = "STATUS", length = 255) private String status; + @Column(name="IS_DELETED") + private Boolean isDeleted; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java index 8e14e7b9..4028b789 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java @@ -53,5 +53,6 @@ public class CallDetailsResponseBean { private LocalDateTime createdDate; private LocalDateTime updatedDate; - private Boolean preferred; + + private Long preferredCallId; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java index b26460ab..43655e9c 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java @@ -73,6 +73,7 @@ public class CallResponse { private String currentStep; + private Long preferredCallId; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/BeneficiaryPreferredCallRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/BeneficiaryPreferredCallRepository.java index d2f0618a..7e01bbc0 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/BeneficiaryPreferredCallRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/BeneficiaryPreferredCallRepository.java @@ -6,15 +6,17 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface BeneficiaryPreferredCallRepository extends JpaRepository { - List findByBeneficiaryId(Long beneficiaryId); - List findByUserId(Long userId); + List findByBeneficiaryIdAndIsDeletedFalse(Long beneficiaryId); + List findByUserIdAndIsDeletedFalse(Long userId); @Query("SELECT preferredCall FROM BeneficiaryPreferredCallEntity preferredCall where preferredCall.userId=:userId AND (:companyId is null OR preferredCall.companyId=:companyId)") - List findByUserIdAndCompanyId(@Param("userId") Long userId, @Param("companyId") Long companyId); + List findByUserIdAndCompanyIdAndIsDeletedFalse(@Param("userId") Long userId, @Param("companyId") Long companyId); List findByBeneficiaryIdAndCompanyId(Long beneficiaryId,Long companyId); - @Query("SELECT preferredCall FROM BeneficiaryPreferredCallEntity preferredCall WHERE preferredCall.userId = :userId AND preferredCall.callId IN :callIds") - List findByUserIdAndCallIdIn(@Param("userId") Long userId, @Param("callIds") List callIds); + public List findByUserIdAndCallIdInAndIsDeletedFalse(Long userId, List callIds); + + Optional findByIdAndIsDeletedFalse(Long id); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index 8004008b..487745b9 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -57,7 +57,7 @@ public class CallServiceImpl implements CallService { public CallResponse getCallById(HttpServletRequest request, Long callId) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); - return callDao.getCallById(call); + return callDao.getCallById(user,call); } @Override diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 9aa2ec42..03134d0b 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -1720,4 +1720,11 @@ + + + + + + +