diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index ff6ac233..31d409d6 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -485,10 +485,9 @@ public class GepafinConstant { public static final String USAGE="usage"; public static final String LIMIT="limit"; public static final String DATA="data"; - public static final String PREFERRED_CALL_ID="preferredCallId"; - public static final String REGION_ID="regionId"; + public static final String DELEGATION_TEMPLATE_CONFIDI="DELEGATION_TEMPLATE_CONFIDI"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index e9621798..bcb9efa0 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -678,7 +678,7 @@ public class ApplicationAmendmentRequestDao { log.info("Updating application amendement with ID: {}", id); ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id); Boolean isBeneficiary=false; - if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) { + if (Boolean.FALSE.equals(validator.checkIsBeneficiary()) && Boolean.FALSE.equals(validator.checkIsConfidi()) ) { validator.validatePreInstructor(request, existingApplicationAmendment.getApplicationEvaluationEntity().getUserId()); isBeneficiary=false; } else { @@ -1368,10 +1368,10 @@ public class ApplicationAmendmentRequestDao { .toList(); predicates.add(root.get(GepafinConstant.STATUS).in(statusValues)); } - if(Boolean.TRUE.equals(validator.checkIsBeneficiary())) { + if(Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { predicates.add(root.get("applicationEvaluationEntity").get("assignedApplicationsEntity").get("application").get("userId").in(userId)); } - if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) { + else { predicates.add(root.get("applicationEvaluationEntity").get("assignedApplicationsEntity").get("userId").in(userId)); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 9b3466fe..d49de7fd 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -389,7 +389,7 @@ public class ApplicationDao { return (root, query, builder) -> { Boolean isBeneficiary = validator.checkIsBeneficiary(); Predicate predicate = builder.isFalse(root.get("isDeleted")); - if (isBeneficiary) { + if (Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { predicate = builder.and(predicate, builder.equal(root.get("userId"), userEntity.getId())); } if (callId != null) { @@ -742,7 +742,7 @@ public class ApplicationDao { List formApplicationResponses = new ArrayList<>(); List formEntities = new ArrayList<>(); UserEntity userEntity = validator.validateUser(request); - boolean isBeneficiary = isBeneficiary(userEntity); + boolean isBeneficiary = Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi()); ApplicationEntity applicationEntity = isBeneficiary ? applicationRepository.findByIdAndUserIdAndIsDeletedFalse(applicationId, userEntity.getId()) .orElseThrow(() -> new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))) @@ -1530,8 +1530,8 @@ public class ApplicationDao { } List predicates = new ArrayList<>(); - Boolean isBeneficiary = validator.checkIsBeneficiary(); - if (isBeneficiary) { +// Boolean isBeneficiary = validator.checkIsBeneficiary(); + if (Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { predicates.add(criteriaBuilder.equal(root.get(GepafinConstant.USER_ID), userEntity.getId())); } if (year != null && year > 0) { diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index bef8c76f..94fefebc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -781,30 +781,21 @@ public class CallDao { return createCallResponseBean; } - public List getAllCalls(HttpServletRequest request,UserEntity user, Long companyId,Boolean onlyPreferredCall) { + public List getAllCalls(HttpServletRequest request,UserEntity user, Long companyId,Boolean onlyPreferredCall,Boolean onlyConfidiCall) { String type = user.getRoleEntity().getRoleType(); List callStatusList = CallStatusEnum.getStatusValues(); if (Boolean.FALSE.equals(ROLE_SUPER_ADMIN.getValue().equals(type))) { callStatusList = List.of(CallStatusEnum.PUBLISH.getValue()); } - List calls; +// List calls = List.of(); if (Boolean.TRUE.equals(onlyPreferredCall) && companyId == null) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.COMPANY_ID_REQUIRED_FOR_PREFERRED_CALL)); } + Specification spec = buildCallSpecification(request, user, companyId, onlyPreferredCall, onlyConfidiCall, callStatusList); + + List calls = callRepository.findAll(spec); - if (Boolean.TRUE.equals(onlyPreferredCall)) { - validator.validateUserWithCompany(request, companyId); - UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(user.getId(),companyId); - List preferredCalls = beneficiaryPreferredCallRepository - .findByUserIdAndUserWithCompanyIdAndIsDeletedFalse(user.getId(), userWithCompanyEntity.getId()); - List preferredCallIds = preferredCalls.stream() - .map(BeneficiaryPreferredCallEntity::getCallId) - .collect(Collectors.toList()); - calls = callRepository.findByIdInAndStatusIn(preferredCallIds, callStatusList); - } else { - calls = callRepository.findByStatusInAndHubId(callStatusList, user.getHub().getId()); - } List callIds = calls.stream().map(CallEntity::getId).collect(Collectors.toList()); Map preferredCallsMap = getBeneficiaryPreferredCallsForUser(request,user, callIds, companyId); @@ -825,7 +816,7 @@ public class CallDao { public Map getBeneficiaryPreferredCallsForUser(HttpServletRequest request, UserEntity user, List callIds, Long companyId) { List beneficiaryPreferredCalls; - if (companyId != null && Boolean.TRUE.equals(validator.checkIsBeneficiary())) { + if (companyId != null && (Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi()))) { validator.validateUserWithCompany(request, companyId); UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(user.getId(),companyId); beneficiaryPreferredCalls = beneficiaryPreferredCallRepository @@ -994,7 +985,10 @@ public class CallDao { // Add preferredCallIds filtering to the specification spec = spec.and((root, query, criteriaBuilder) -> - root.get(GepafinConstant.ID).in(preferredCallIds) + criteriaBuilder.and( + root.get(GepafinConstant.ID).in(preferredCallIds), + criteriaBuilder.isTrue(root.get("confidi")) + ) ); } entityPage = callRepository.findAll(spec, PageRequest.of(pageNo - 1, pageLimit)); @@ -1110,6 +1104,28 @@ public class CallDao { predicates.add(root.get(GepafinConstant.STATUS).in(statusValues)); } applyFilters(root, criteriaBuilder, predicates, filters); + Boolean isConfidi = callPageableRequestBean.getConfidi(); + + if (validator.checkIsConfidi()) { + + if (isConfidi == null || isConfidi.equals(Boolean.FALSE)) { + // Ensure no records are returned + return List.of(criteriaBuilder.disjunction()); + } + + if (isConfidi.equals(Boolean.TRUE)) { + predicates.add(criteriaBuilder.isTrue(root.get("confidi"))); + } + } + else if( Boolean.FALSE.equals(validator.checkIsConfidi()) && isConfidi!=null){ + if (isConfidi.equals(Boolean.TRUE)) { + predicates.add(criteriaBuilder.isTrue(root.get("confidi"))); + } + if (isConfidi.equals(Boolean.FALSE)) { + predicates.add(criteriaBuilder.isFalse(root.get("confidi"))); + } + } + predicates.add(criteriaBuilder.equal(root.get(GepafinConstant.HUB).get(GepafinConstant.ID), userEntity.getHub().getId())); @@ -1251,4 +1267,45 @@ public class CallDao { createCallResponseBean.setCurrentStep(GepafinConstant.EVALUATION_V2_STEP_2); return createCallResponseBean; } + private Specification buildCallSpecification(HttpServletRequest request, UserEntity user, Long companyId, Boolean onlyPreferredCall, Boolean onlyConfidiCall, List callStatusList) { + return (root, query, criteriaBuilder) -> { + List predicates = new ArrayList<>(); + predicates.add(root.get("status").in(callStatusList)); + + if (Boolean.TRUE.equals(onlyPreferredCall)) { + validator.validateUserWithCompany(request, companyId); + UserWithCompanyEntity userWithCompanyEntity = companyService.getUserWithCompany(user.getId(), companyId); + List preferredCalls = beneficiaryPreferredCallRepository + .findByUserIdAndUserWithCompanyIdAndIsDeletedFalse(user.getId(), userWithCompanyEntity.getId()); + List preferredCallIds = preferredCalls.stream() + .map(BeneficiaryPreferredCallEntity::getCallId) + .collect(Collectors.toList()); + + predicates.add(root.get("id").in(preferredCallIds)); + } else { + predicates.add(criteriaBuilder.equal(root.get("hub").get("id"), user.getHub().getId())); + } + + if (validator.checkIsConfidi()) { + if (onlyConfidiCall==null || Boolean.FALSE.equals(onlyConfidiCall)) { + return criteriaBuilder.conjunction(); + } + + if (onlyConfidiCall!=null && Boolean.TRUE.equals(onlyConfidiCall)) { + predicates.add(criteriaBuilder.isTrue(root.get("confidi"))); + } + }else { + if(onlyConfidiCall!=null) { + if (Boolean.TRUE.equals(onlyConfidiCall)) { + predicates.add(criteriaBuilder.isTrue(root.get("confidi"))); + } + if (Boolean.FALSE.equals(onlyConfidiCall)) { + predicates.add(criteriaBuilder.isFalse(root.get("confidi"))); + } + } + } + + return criteriaBuilder.and(predicates.toArray(new Predicate[0])); + }; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CommunicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CommunicationDao.java index d7ef7c83..c41aee3f 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CommunicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CommunicationDao.java @@ -138,7 +138,7 @@ public class CommunicationDao { if(validator.checkIsPreInstructor()){ communicationEntity.setSenderUserId(amendmentRequest.getApplicationEvaluationEntity().getUserId()); communicationEntity.setReceiverUserId(amendmentRequest.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication().getUserId()); - } else if(validator.checkIsBeneficiary()) { + } else if(Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { communicationEntity.setSenderUserId(amendmentRequest.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication().getUserId()); communicationEntity.setReceiverUserId(amendmentRequest.getApplicationEvaluationEntity().getUserId()); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index e80e67e4..25500ada 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -136,8 +136,8 @@ public class DashboardDao { } private void setRegisteredUsers(Widget1 widget1, UserEntity requestedUserEntity) { - Long activeUsers = userRepository.countByStatusAndRoleEntityRoleTypeAndHubId(UserStatusEnum.ACTIVE.getValue(), - RoleStatusEnum.ROLE_BENEFICIARY.getValue(), requestedUserEntity.getHub().getId()); + Long activeUsers = userRepository.countByStatusAndRoleEntityRoleTypeInAndHubId(UserStatusEnum.ACTIVE.getValue(), + List.of(RoleStatusEnum.ROLE_BENEFICIARY.getValue(),RoleStatusEnum.ROLE_CONFIDI.getValue()), requestedUserEntity.getHub().getId()); if (activeUsers != null) { widget1.setNumberOfResgisteredUsers(activeUsers); } @@ -183,10 +183,21 @@ public class DashboardDao { .map(BeneficiaryPreferredCallEntity::getCallId) .collect(Collectors.toList()); List callEntities = callRepository.findByIdIn(callIds); - long activeCallsCount = callEntities.stream() - .filter(call -> CallStatusEnum.PUBLISH.getValue().equals(call.getStatus()) - && userEntity.getHub().getId().equals(call.getHub().getId())) - .count(); + long activeCallsCount=0; + if(Boolean.TRUE.equals(validator.checkIsBeneficiary())) { + activeCallsCount = callEntities.stream() + .filter(call -> CallStatusEnum.PUBLISH.getValue().equals(call.getStatus()) + && userEntity.getHub().getId().equals(call.getHub().getId())) + .count(); + } + if(Boolean.TRUE.equals(validator.checkIsConfidi())) { + activeCallsCount = callEntities.stream() + .filter(call -> CallStatusEnum.PUBLISH.getValue().equals(call.getStatus()) + && userEntity.getHub().getId().equals(call.getHub().getId()) + && call.getConfidi()) // Add this condition for confidi + .count(); + + } beneficiaryWidgetResponseBean.setNumberOfCalls(activeCallsCount); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java index 670f9444..a3243c22 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java @@ -128,7 +128,12 @@ public class DelegationDao { CompanyEntity companyEntity = companyDao.validateCompany(companyId); companyDao.getUserWithCompany(userEntity.getId(), companyId); updatePlaceholdersForDelegation(user, companyEntity, placeholders, companyDelegationRequest); - DocumentEntity documentEntity = documentRepository.findBySource(GepafinConstant.DELEGATION_TEMPLATE).get(0); + DocumentEntity documentEntity =null; + if(Boolean.TRUE.equals(validator.checkIsConfidi())){ + documentEntity = documentRepository.findBySource(GepafinConstant.DELEGATION_TEMPLATE_CONFIDI).get(0); + }else { + documentEntity = documentRepository.findBySource(GepafinConstant.DELEGATION_TEMPLATE).get(0); + } return generateDocument(placeholders, documentEntity.getFilePath()); } @@ -293,7 +298,7 @@ public class DelegationDao { if (validator.checkIsPreInstructor()) { ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluationByApplicationId(applicationId); validator.validatePreInstructor(request, applicationEvaluationEntity.getUserId()); - } else if (validator.checkIsBeneficiary()) { + } else if (Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { userId = validator.validateUser(request).getId(); } return companyService.getUserWithCompany(userId, companyId); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java index e5a41e68..b4b42508 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java @@ -66,7 +66,7 @@ public class FaqDao { CallEntity callEntity = callService.validateCall(callId); FaqEntity entity = createOrUpdateFaqEntity(faqRequest, callEntity, userEntity, LookUpDataTypeEnum.FAQ); FaqEntity oldFaqEntity = Utils.getClonedEntityForData(entity); - if (validator.checkIsBeneficiary() && companyId == null) { + if ((Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) && companyId == null) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.COMPANY_ID_MANDATORY)); } UserWithCompanyEntity userWithCompanyEntity=null; @@ -132,7 +132,7 @@ public class FaqDao { oldFaqEntity = Utils.getClonedEntityForData(faqEntity); actionType = VersionActionTypeEnum.UPDATE; } else { - if (Boolean.FALSE.equals(userEntity.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue()))) { + if (Boolean.FALSE.equals(userEntity.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue())) && Boolean.FALSE.equals(userEntity.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_CONFIDI.getValue()))) { lookUpDataService.getOrCreateLookUpDataEntity(faqReq, type); } faqEntity = new FaqEntity(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index f1bbb0b7..04f2496e 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -169,7 +169,7 @@ public class UserDao { } private BeneficiaryEntity createBeneficiary(RoleEntity roleEntity, UserReq userReq, HubEntity hub) { BeneficiaryEntity beneficiaryEntity = null; - if (RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(roleEntity.getRoleType())) { + if (RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(roleEntity.getRoleType()) || RoleStatusEnum.ROLE_CONFIDI.getValue().equals(roleEntity.getRoleType())) { beneficiaryEntity = new BeneficiaryEntity(); beneficiaryEntity.setAddress(userReq.getAddress()); beneficiaryEntity.setCity(userReq.getCity()); @@ -765,7 +765,7 @@ public class UserDao { HubEntity hubEntity = hubService.valdateHub(userEntity.getHub().getId()); String beneficiaryRoleType = RoleStatusEnum.ROLE_BENEFICIARY.getValue(); - if (validator.checkIsBeneficiary()) { + if (Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())) { // Validate if the new email already exists for another beneficiary in the same hub boolean emailExistsForBeneficiary = userRepository.existsByEmailIgnoreCaseForBeneficiaries( userReq.getEmail(), hubEntity.getUniqueUuid(), beneficiaryRoleType); diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CallPageableRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/CallPageableRequestBean.java index 260a45e5..5a76ad97 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CallPageableRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CallPageableRequestBean.java @@ -14,4 +14,6 @@ public class CallPageableRequestBean { private List status; private Map filters; + + private Boolean confidi; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java index d666de41..5d2bf7f7 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java @@ -54,4 +54,9 @@ public interface CallRepository extends JpaRepository, JpaSpec List findByIdIn(@Param("ids") List ids); + @Query("SELECT c FROM CallEntity c WHERE c.id IN :ids AND c.status IN :status AND c.confidi= :confidi") + List findByIdInAndStatusInAndConfidi(@Param("ids") List ids, @Param("status") List status,Boolean confidi); + + public List findByStatusInAndHubIdAndConfidi(List callStatus, Long hubId,Boolean onlyConfidiCall); + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java index 9f58ea49..db2d686e 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.enums.RoleStatusEnum; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; @@ -32,6 +33,10 @@ public interface UserRepository extends JpaRepository, JpaSpec Long countByStatusAndRoleEntityRoleTypeAndHubId(String status, String roleName, Long hubId); + + Long countByStatusAndRoleEntityRoleTypeInAndHubId(String status,List roleName, Long hubId); + + Optional findByBeneficiaryCodiceFiscaleAndHubId(String codiceFiscale, Long hubId); // Boolean existsByBeneficiaryCodiceFiscaleAndHubId(String codiceFiscale, Long hubId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index 0e1838b5..925c71cd 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -21,7 +21,7 @@ public interface CallService { CallResponse getCallById (HttpServletRequest request, Long callId,Long companyId); - List getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall); + List getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall,Boolean onlyConfidiCall); CallResponse validateCallData(HttpServletRequest request, Long callId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java index c98ded2b..8426390e 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -81,7 +81,7 @@ public class ApplicationServiceImpl implements ApplicationService { validator.validateUserWithCompany(request, companyId); } ApplicationEntity applicationEntity =null; - if(validator.checkIsBeneficiary()){ + if(Boolean.TRUE.equals(validator.checkIsBeneficiary()) || Boolean.TRUE.equals(validator.checkIsConfidi())){ if(companyId==null){ throw new ForbiddenAccessException(Status.FORBIDDEN,Translator.toLocale(GepafinConstant.COMPANY_ID_MANDATORY)); } 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 c5b6952b..8dfbd861 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -62,9 +62,9 @@ public class CallServiceImpl implements CallService { @Override @Transactional(readOnly = true) - public List getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall) { + public List getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall,Boolean onlyConfidiCall) { UserEntity user = validator.validateUser(request); - return callDao.getAllCalls(request,user,companyId,onlyPreferredCall); + return callDao.getAllCalls(request,user,companyId,onlyPreferredCall,onlyConfidiCall); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CommunicationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CommunicationServiceImpl.java index ad3513e3..ed51cc7a 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CommunicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CommunicationServiceImpl.java @@ -31,7 +31,7 @@ public class CommunicationServiceImpl implements CommunicationService { @Transactional(rollbackFor = Exception.class) public CommunicationResponseBean addCommentToAmendmentRequest(HttpServletRequest request ,CommunicationRequestBean communicationRequestBean, Long amendmentId) { ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(amendmentId); - if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) { + if (Boolean.FALSE.equals(validator.checkIsBeneficiary()) && Boolean.FALSE.equals(validator.checkIsConfidi())) { validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId()); } else { validator.validateUserId(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication().getUserId()); @@ -43,7 +43,7 @@ public class CommunicationServiceImpl implements CommunicationService { @Transactional(rollbackFor = Exception.class) public String deleteComment(HttpServletRequest request ,Long amendmentId, Long commentId) { ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = applicationAmendmentRequestDao.validateApplicationAmendmentRequest(amendmentId); - if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) { + if (Boolean.FALSE.equals(validator.checkIsBeneficiary()) && Boolean.FALSE.equals(validator.checkIsConfidi())) { validator.validatePreInstructor(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getUserId()); } else { validator.validateUserId(request, applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication().getUserId()); diff --git a/src/main/java/net/gepafin/tendermanagement/util/Validator.java b/src/main/java/net/gepafin/tendermanagement/util/Validator.java index 4e3335a6..21e2bd1a 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Validator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Validator.java @@ -195,4 +195,15 @@ public class Validator { } return false; } + public Boolean checkIsConfidi() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.isAuthenticated()) { + for (GrantedAuthority authority : authentication.getAuthorities()) { + if (RoleStatusEnum.ROLE_CONFIDI.getValue().equals(authority.getAuthority())) { + return true; + } + } + } + return false; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index 37af42d4..e1893f5a 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -101,7 +101,7 @@ public interface CallApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "", produces = { "application/json" }) - ResponseEntity>> getAllCalls(HttpServletRequest request,@RequestParam(value = "companyId", required = false) Long companyId , @RequestParam(value = "onlyPreferredCall", required = false, defaultValue = "false") Boolean onlyPreferredCall); + ResponseEntity>> getAllCalls(HttpServletRequest request,@RequestParam(value = "companyId", required = false) Long companyId , @RequestParam(value = "onlyPreferredCall", required = false, defaultValue = "false") Boolean onlyPreferredCall,@RequestParam(value = "onlyConfidiCall", required = false) Boolean onlyConfidiCall); @Operation(summary = "Api to validate call", diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CommunicationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CommunicationApi.java index e50dae85..01070a4e 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CommunicationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CommunicationApi.java @@ -33,7 +33,7 @@ public interface CommunicationApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @PostMapping(value = "/{amendmentId}", produces = { "application/json" }) - @PreAuthorize("hasRole('ROLE_PRE_INSTRUCTOR') || hasRole('ROLE_BENEFICIARY') || hasRole('ROLE_INSTRUCTOR_MANAGER')") + @PreAuthorize("hasRole('ROLE_PRE_INSTRUCTOR') || hasRole('ROLE_BENEFICIARY') || hasRole('ROLE_INSTRUCTOR_MANAGER') || hasRole('ROLE_CONFIDI')") ResponseEntity> addCommentToAmendmentRequest(HttpServletRequest request, @RequestBody @Parameter CommunicationRequestBean communicationResponseBean, @PathVariable(value = "amendmentId") Long amendmentId); @@ -55,7 +55,7 @@ public interface CommunicationApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @PutMapping(value = "/{amendmentId}/{commentId}", produces = { "application/json" }) - @PreAuthorize("hasRole('ROLE_PRE_INSTRUCTOR') || hasRole('ROLE_BENEFICIARY') || hasRole('ROLE_INSTRUCTOR_MANAGER')") + @PreAuthorize("hasRole('ROLE_PRE_INSTRUCTOR') || hasRole('ROLE_BENEFICIARY') || hasRole('ROLE_INSTRUCTOR_MANAGER') || hasRole('ROLE_CONFIDI')") ResponseEntity> updateCommunicationAmendment(HttpServletRequest request, @RequestBody @Parameter CommunicationRequestBean communicationResponseBean, @PathVariable(value = "amendmentId") Long amendmentId, @PathVariable(value = "commentId") Long commentId); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 4ea1c575..5673bb2b 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -93,13 +93,13 @@ public class CallApiController implements CallApi { @Override @Transactional - public ResponseEntity>> getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall) { + public ResponseEntity>> getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall,Boolean onlyConfidiCall) { /** This code is responsible for creating user action logs for the "get all Calls" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) .actionContext(UserActionContextEnum.GET_CALL).build()); - List calls = callService.getAllCalls(request, companyId, onlyPreferredCall); + List calls = callService.getAllCalls(request, companyId, onlyPreferredCall,onlyConfidiCall); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(calls, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); 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 33567244..0bb1adf4 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 @@ -2627,5 +2627,13 @@ role_type = 'ROLE_CONFIDI' + + + + + + + +