From 54a101b847e0ba00a0541c5bab7f5408ab2dde4a Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 23 Oct 2024 21:11:17 +0530 Subject: [PATCH 1/9] Fixed issue assigned application issue --- .../tendermanagement/dao/AssignedApplicationsDao.java | 2 +- src/main/java/net/gepafin/tendermanagement/dao/CallDao.java | 1 + .../gepafin/tendermanagement/dao/EvaluationCriteriaDao.java | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index cfdb31ab..8f77baff 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -47,7 +47,7 @@ public class AssignedApplicationsDao { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_ASSIGNED)); } ApplicationEntity application = applicationService.validateApplication(applicationId); - if (Boolean.FALSE.equals(ApplicationStatusTypeEnum.SUBMIT.equals(application.getStatus()))) { + if (Boolean.FALSE.equals(ApplicationStatusTypeEnum.SUBMIT.getValue().equals(application.getStatus()))) { throw new CustomValidationException( Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.INVALID_APPLICATION_STATUS) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 2b8a2475..d8cd0a5c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -230,6 +230,7 @@ public class CallDao { criteriaEntity = new EvaluationCriteriaEntity(); criteriaEntity.setCall(callEntity); criteriaEntity.setLookupData(lookupDataEntity); + criteriaEntity.setScore(0L); criteriaEntity.setIsDeleted(false); } setIfUpdated(criteriaEntity::getScore, criteriaEntity::setScore, criteriaReq.getScore()); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java index b865121e..86a7693f 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java @@ -50,7 +50,10 @@ public class EvaluationCriteriaDao { .validateLookUpData(evaluationCriteriaRequest.getLookUpDataId()); entity.setCall(callEntity); entity.setLookupData(looDataEntity); - entity.setScore(evaluationCriteriaRequest.getScore()); + entity.setScore(0L); + if (evaluationCriteriaRequest.getScore() != null) { + entity.setScore(evaluationCriteriaRequest.getScore()); + } entity = evaluationCriteriaRepository.save(entity); return entity; } From 8f7eb354ea9e357930a55ac85be113b12905ec5f Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 23 Oct 2024 21:40:05 +0530 Subject: [PATCH 2/9] Fixed issue related to assigned application --- .../dao/AssignedApplicationsDao.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index 8f77baff..03f8f83a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -55,7 +55,7 @@ public class AssignedApplicationsDao { } UserEntity user = userService.validateUser(userId); AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest); - AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment, assignedApplicationsRequest); + AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment); log.info("Application assigned succesfully {}", assignApplicationToInstructorResponse); return assignApplicationToInstructorResponse; @@ -66,7 +66,10 @@ public class AssignedApplicationsDao { assignApplication.setApplication(application); assignApplication.setAssignedBy(assignedByUser.getId()); assignApplication.setUserId(userId); - assignApplication.setStatus(assignedApplicationsRequest.getStatus().getValue()); + assignApplication.setStatus(AssignedApplicationEnum.ASSIGNED.getValue()); + if(assignedApplicationsRequest.getStatus() != null) { + assignApplication.setStatus(assignedApplicationsRequest.getStatus().getValue()); + } assignApplication.setNote(assignedApplicationsRequest.getNote()); assignApplication.setIsDeleted(false); assignApplication.setAssignedAt(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); @@ -79,7 +82,7 @@ public class AssignedApplicationsDao { return assignedApplication; } - public AssignedApplicationsResponse convertEntityToResponse(AssignedApplicationsEntity application, AssignedApplicationsRequest assignedApplicationsRequest){ + public AssignedApplicationsResponse convertEntityToResponse(AssignedApplicationsEntity application){ AssignedApplicationsResponse assignedApplicationsResponse = new AssignedApplicationsResponse(); assignedApplicationsResponse.setId(application.getId()); assignedApplicationsResponse.setApplicationId(application.getApplication().getId()); @@ -111,7 +114,7 @@ public class AssignedApplicationsDao { Specification spec = search(userId); List assignedApplicationsEntityList = assignedApplicationsRepository.findAll(spec); return assignedApplicationsEntityList.stream() - .map(entity -> convertEntityToResponse(entity, new AssignedApplicationsRequest())) + .map(entity -> convertEntityToResponse(entity)) .collect(Collectors.toList()); } private Specification search(Long userId) { @@ -138,7 +141,7 @@ public class AssignedApplicationsDao { existingAssignment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); AssignedApplicationsEntity updatedAssignment = saveAssignedApplication(existingAssignment); - AssignedApplicationsResponse response = convertEntityToResponse(updatedAssignment, updateRequest); + AssignedApplicationsResponse response = convertEntityToResponse(updatedAssignment); log.info("Assigned application updated successfully: {}", response); return response; } @@ -146,7 +149,7 @@ public class AssignedApplicationsDao { public AssignedApplicationsResponse getAssignedApplicationById(Long id) { log.info("Fetching assigned application with ID: {}", id); AssignedApplicationsEntity assignedApplication = validateAssignedApplication(id); - AssignedApplicationsResponse response = convertEntityToResponse(assignedApplication, new AssignedApplicationsRequest()); + AssignedApplicationsResponse response = convertEntityToResponse(assignedApplication); log.info("Assigned application fetched successfully: {}", response); return response; } From 3c40470dfc932aec85e42a7f50d092aeb10c8a96 Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 14:51:03 +0530 Subject: [PATCH 3/9] updated code for hub new changes --- .../tendermanagement/dao/ApplicationDao.java | 1 + .../tendermanagement/dao/CompanyDao.java | 10 +-- .../tendermanagement/dao/DashboardDao.java | 2 +- .../gepafin/tendermanagement/dao/UserDao.java | 20 +++--- .../entities/ApplicationEntity.java | 3 + .../entities/BeneficiaryEntity.java | 3 + .../entities/CompanyEntity.java | 7 ++ .../repositories/CompanyRepository.java | 12 ++-- .../repositories/UserRepository.java | 16 +---- .../UserWithCompanyRepository.java | 6 +- .../service/impl/AuthenticationService.java | 3 +- .../BeneficiaryPreferredCallServiceImpl.java | 8 +-- .../service/impl/CompanyServiceImpl.java | 4 +- .../tendermanagement/util/Validator.java | 16 ++++- .../db/changelog/db.changelog-1.0.0.xml | 66 +++++++++++++++++++ 15 files changed, 130 insertions(+), 47 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 82503677..fe86a5c6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -175,6 +175,7 @@ public class ApplicationDao { entity.setUserId(user.getId()); entity.setCompany(companyEntity); entity.setCall(call); + entity.setHubId(call.getHub().getId()); entity.setIsDeleted(false); entity.setStatus(ApplicationStatusTypeEnum.DRAFT.getValue()); return entity; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 2208962b..0f59fc08 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -40,7 +40,7 @@ public class CompanyDao { public CompanyResponse createCompany(UserEntity userEntity, CompanyRequest companyRequest) { - CompanyEntity existingCompany = companyRepository.findByVatNumber(companyRequest.getVatNumber()); + CompanyEntity existingCompany = companyRepository.findByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId()); UserWithCompanyEntity userWithCompanyEntity = null; if (existingCompany != null) { UserWithCompanyEntity existingRelation = userWithCompanyRepository.findByUserIdAndCompanyIdAndIsDeletedFalse(userEntity.getId(), existingCompany.getId()) @@ -53,7 +53,7 @@ public class CompanyDao { } return convertCompanyEntityToCompanyResponse(existingCompany, userWithCompanyEntity); } else { - validateCompany(companyRequest); + validateCompany(userEntity, companyRequest); CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(companyRequest); companyRepository.save(companyEntity); userWithCompanyEntity = createUserWithCompanyRelation(userEntity, companyEntity, companyRequest.getIsLegalRepresentant()); @@ -62,7 +62,7 @@ public class CompanyDao { } - private void validateCompany(CompanyRequest companyRequest) { + private void validateCompany(UserEntity userEntity, CompanyRequest companyRequest) { if (Boolean.FALSE.equals(StringUtils.isEmpty(companyRequest.getEmail())) && Boolean.FALSE.equals(Utils.isValidEmail(companyRequest.getEmail()))) { @@ -73,7 +73,7 @@ public class CompanyDao { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VATNUMBER_MANDATORY)); } - if (companyRepository.existsByVatNumber(companyRequest.getVatNumber())) { + if (companyRepository.existsByVatNumberAndHubId(companyRequest.getVatNumber(), userEntity.getHub().getId())) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); } @@ -186,7 +186,7 @@ public class CompanyDao { public List getCompanyByUserId(Long userId) { UserEntity userEntity = userService.validateUser(userId); List activeCompanyIds = userWithCompanyRepository.findActiveCompanyIdsByUserId(userEntity.getId()); - List companies = companyRepository.findByIdIn(activeCompanyIds); + List companies = companyRepository.findByIdInAndHubId(activeCompanyIds, userEntity.getHub().getId()); return companies.stream().map(companyEntity -> { UserWithCompanyEntity userWithCompanyEntity = getUserWithCompany(userEntity.getId(), companyEntity.getId()); return convertCompanyEntityToCompanyResponse(companyEntity, userWithCompanyEntity); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index a849f67d..de20f607 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -94,7 +94,7 @@ public class DashboardDao { } private void setNumberOfCompanies(Widget1 widget1, UserEntity requestedUserEntity) { - Long numberOfCompanies = companyRepository.countTotalCompanies(); + Long numberOfCompanies = companyRepository.countTotalCompaniesByHubId(requestedUserEntity.getHub().getId()); if (numberOfCompanies != null) { widget1.setNumberOfCompany(numberOfCompanies); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index ae75d8bd..6a776f07 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -6,6 +6,7 @@ import net.gepafin.tendermanagement.config.SamlSuccessHandler; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.BeneficiaryEntity; +import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.RoleStatusEnum; @@ -84,17 +85,17 @@ public class UserDao { if(StringUtils.isEmpty(userReq.getHubUuid())) { userReq.setHubUuid(defaultHubUuid); } - validateUserRequest(request, tempToken, userReq); + HubEntity hub = hubService.getHubByUuid(userReq.getHubUuid()); + validateUserRequest(request, tempToken, userReq, hub); validatePassword(userReq.getPassword(), userReq.getConfPassword(), tempToken); - RoleEntity roleEntity = getRoleEntity(userReq.getRoleId()); - BeneficiaryEntity beneficiary = createBeneficiary(roleEntity, userReq); - UserEntity userEntity = convertUserRequestToUserEntity(beneficiary, roleEntity, userReq); + BeneficiaryEntity beneficiary = createBeneficiary(roleEntity, userReq, hub); + UserEntity userEntity = convertUserRequestToUserEntity(beneficiary, roleEntity, userReq, hub); log.info("User created with ID: {}", userEntity.getId()); return authService.getJWTTokenBean(userEntity, Boolean.TRUE); } - private BeneficiaryEntity createBeneficiary(RoleEntity roleEntity, UserReq userReq) { + private BeneficiaryEntity createBeneficiary(RoleEntity roleEntity, UserReq userReq, HubEntity hub) { BeneficiaryEntity beneficiaryEntity = null; if (RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(roleEntity.getRoleType())) { beneficiaryEntity = new BeneficiaryEntity(); @@ -114,12 +115,13 @@ public class UserDao { beneficiaryEntity.setMarketing(userReq.getMarketing()); beneficiaryEntity.setThirdParty(userReq.getThirdParty()); beneficiaryEntity.setEmailPec(userReq.getEmailPec()); + beneficiaryEntity.setHubId(hub.getId()); beneficiaryEntity =beneficiaryRepository.save(beneficiaryEntity); } return beneficiaryEntity; } - private void validateUserRequest(HttpServletRequest request, String tempToken, UserReq userReq) { + private void validateUserRequest(HttpServletRequest request, String tempToken, UserReq userReq, HubEntity hub) { if (tempToken == null) { validator.validateRequest(request,RoleStatusEnum.ROLE_SUPER_ADMIN); @@ -139,7 +141,7 @@ public class UserDao { Translator.toLocale(GepafinConstant.EMAIL_ALREADY_EXISTS)); } if (Boolean.FALSE.equals(StringUtils.isEmpty(userReq.getCodiceFiscale())) - && userRepository.existsByBeneficiaryCodiceFiscale(userReq.getCodiceFiscale())) { + && userRepository.existsByBeneficiaryCodiceFiscaleAndHubId(userReq.getCodiceFiscale(), hub.getId())) { log.error("User creation failed: CodiceFiscale {} already exists", userReq.getCodiceFiscale()); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CODICE_FISCALE_EXISTS)); @@ -206,7 +208,7 @@ public class UserDao { return convertUserEntityToUserResponse(userEntity); } - private UserEntity convertUserRequestToUserEntity(BeneficiaryEntity beneficiary, RoleEntity roleEntity, UserReq userReq) { + private UserEntity convertUserRequestToUserEntity(BeneficiaryEntity beneficiary, RoleEntity roleEntity, UserReq userReq, HubEntity hub) { UserEntity userEntity = new UserEntity(); if(Boolean.FALSE.equals(StringUtils.isEmpty(userReq.getPassword()))) { userEntity.setPassword(passwordEncoder.encode(userReq.getPassword())); @@ -215,7 +217,7 @@ public class UserDao { userEntity.setEmail(userReq.getEmail()); userEntity.setStatus(UserStatusEnum.ACTIVE.getValue()); userEntity.setBeneficiary(beneficiary); - userEntity.setHub(hubService.getHubByUuid(userReq.getHubUuid())); + userEntity.setHub(hub); if (Boolean.FALSE.equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(roleEntity.getRoleType()))) { userEntity.setFirstName(userReq.getFirstName()); userEntity.setLastName(userReq.getLastName()); diff --git a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java index cc0f929e..5ddebe5c 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java @@ -39,4 +39,7 @@ public class ApplicationEntity extends BaseEntity { @OneToOne @JoinColumn(name = "PROTOCOL_NUMBER") private ProtocolEntity protocol; + + @Column(name = "HUB_ID") + private Long hubId; } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryEntity.java index bae88c90..2e84dd51 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/BeneficiaryEntity.java @@ -61,4 +61,7 @@ public class BeneficiaryEntity extends BaseEntity { @Column(name = "EMAIL_PEC") private String emailPec; + + @Column(name = "HUB_ID") + private Long hubId; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java index c35a8cf0..ed50268f 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/CompanyEntity.java @@ -4,6 +4,8 @@ import java.math.BigDecimal; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.Data; @@ -56,4 +58,9 @@ public class CompanyEntity extends BaseEntity{ @Column(name = "CONTACT_EMAIL") private String contactEmail; + + @ManyToOne + @JoinColumn(name = "HUB_ID") + private HubEntity hub; + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CompanyRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CompanyRepository.java index c0c5f75d..b9395883 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CompanyRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CompanyRepository.java @@ -4,6 +4,7 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import net.gepafin.tendermanagement.entities.CompanyEntity; @@ -11,13 +12,14 @@ import net.gepafin.tendermanagement.entities.CompanyEntity; @Repository public interface CompanyRepository extends JpaRepository { - List findByIdIn(List companyIds); + List findByIdInAndHubId(List companyIds, Long hubId); - Boolean existsByVatNumber(String vatNumber); - CompanyEntity findByVatNumber(String vatNumber); + Boolean existsByVatNumberAndHubId(String vatNumber, Long hubId); - @Query("SELECT COUNT(c) FROM CompanyEntity c") - long countTotalCompanies(); + @Query("SELECT COUNT(c) FROM CompanyEntity c where c.hub.id = :hubId") + long countTotalCompaniesByHubId(@Param("hubId") Long hubId); + + CompanyEntity findByVatNumberAndHubId(String vatNumber, Long hubId); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java index c9122eb7..47ab16b8 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserRepository.java @@ -10,21 +10,9 @@ import java.util.Optional; @Repository public interface UserRepository extends JpaRepository { -// Optional findByEmailIgnoreCase(String email); - -// boolean existsByEmailIgnoreCase(String email); - -// UserEntity findByEmail(String email); - - Optional findByBeneficiaryCodiceFiscale(String codiceFiscale); - - boolean existsByBeneficiaryCodiceFiscale(String codiceFiscale); - UserEntity findByBeneficiaryId(Long beneficiaryId); - Long countByStatusAndRoleEntityRoleType(String status, String roleName); - - Optional findByEmailIgnoreCaseAndHubUniqueUuid(String email, String hubId); + Optional findByEmailIgnoreCaseAndHubUniqueUuid(String email, String hubUuid); boolean existsByEmailIgnoreCaseAndHubUniqueUuid(String email, String hubUuid); @@ -35,4 +23,6 @@ public interface UserRepository extends JpaRepository { Long countByStatusAndRoleEntityRoleTypeAndHubId(String status, String roleName, Long hubId); Optional findByBeneficiaryCodiceFiscaleAndHubId(String codiceFiscale, Long hubId); + + boolean existsByBeneficiaryCodiceFiscaleAndHubId(String codiceFiscale, Long hubId); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java index d17b93e2..ec93f2f6 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java @@ -14,10 +14,8 @@ public interface UserWithCompanyRepository extends JpaRepository findActiveCompanyIdsByUserId(@Param("userId") Long userId); - - + @Query("SELECT u.companyId FROM UserWithCompanyEntity u WHERE u.userId = :userId AND u.isDeleted = false") + List findActiveCompanyIdsByUserId(@Param("userId") Long userId); Optional findByUserIdAndCompanyIdAndIsDeletedFalse(Long userId, Long companyId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java index 3fe819a4..0d3dab12 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java @@ -211,10 +211,11 @@ public class AuthenticationService { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_TOKEN_MSG)); } + HubEntity hub = hubService.getHubByUuid(samlResponseLogEntity.getHubUuid()); Map> userAttributes = Utils .convertStringIntoMap(samlResponseLogEntity.getAuthenticationObject()); String cf = userAttributes.get("CodiceFiscale").get(0).toString(); - if (userRepository.existsByBeneficiaryCodiceFiscale(cf)) { + if (userRepository.existsByBeneficiaryCodiceFiscaleAndHubId(cf, hub.getId())) { throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_ALREADY_EXIST_MSG)); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/BeneficiaryPreferredCallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/BeneficiaryPreferredCallServiceImpl.java index 4484027e..48b07bff 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/BeneficiaryPreferredCallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/BeneficiaryPreferredCallServiceImpl.java @@ -9,7 +9,6 @@ import net.gepafin.tendermanagement.enums.BeneficiaryCallStatus; import net.gepafin.tendermanagement.model.request.BeneficiaryPreferredCallReq; import net.gepafin.tendermanagement.model.response.BeneficiaryPreferredCallResponseBean; -import net.gepafin.tendermanagement.repositories.UserRepository; import net.gepafin.tendermanagement.service.BeneficiaryPreferredCallService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.Validator; @@ -17,7 +16,6 @@ import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationExceptio import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; import java.util.List; @@ -26,10 +24,10 @@ public class BeneficiaryPreferredCallServiceImpl implements BeneficiaryPreferred @Autowired private BeneficiaryPreferredCallDao beneficiaryPreferredCallDao; + @Autowired private Validator validator; - @Autowired - private UserRepository userRepository; + @Autowired private UserService userService; @@ -81,7 +79,7 @@ public class BeneficiaryPreferredCallServiceImpl implements BeneficiaryPreferred } if(beneficiaryId!=null){ UserEntity user = userService.getUserByBeneficiaryId(beneficiaryId); - return validator.validateUserId(request,user.getId()); + return validator.validateUserId(request, user.getId()); } else{ return validator.validateUserId(request, userId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java index 34c8777f..47656b4d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java @@ -56,6 +56,7 @@ public class CompanyServiceImpl implements CompanyService { @Transactional(readOnly = true) public CompanyResponse getCompany(HttpServletRequest request, Long companyId) { UserEntity userEntity =validator.validateUser(request); + validator.validateUserWithCompany(request, companyId); return companyDao.getCompany(userEntity, companyId); } @@ -63,13 +64,14 @@ public class CompanyServiceImpl implements CompanyService { @Transactional(rollbackFor = Exception.class) public void deleteCompany(HttpServletRequest request, Long companyId) { UserEntity userEntity =validator.validateUser(request); + validator.validateUserWithCompany(request, companyId); companyDao.deleteCompany(userEntity, companyId); } @Override @Transactional(readOnly = true) public List getCompanyByUserId(HttpServletRequest request, Long userId) { - validator.validateUser(request); + validator.validateUserId(request, userId); return companyDao.getCompanyByUserId(userId); } diff --git a/src/main/java/net/gepafin/tendermanagement/util/Validator.java b/src/main/java/net/gepafin/tendermanagement/util/Validator.java index 09563378..785ad3b9 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Validator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Validator.java @@ -4,7 +4,6 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.constants.GepafinConstant; -import net.gepafin.tendermanagement.dao.CallDao; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; @@ -73,8 +72,14 @@ public class Validator { } public CompanyEntity validateUserWithCompany(HttpServletRequest request, Long companyId) { + UserEntity user = validateUser(request); + CompanyEntity companyEntity = companyService.validateCompany(companyId); + if (Boolean.FALSE.equals(user.getHub().getId().equals(companyEntity.getHub().getId()))) { + throw new ForbiddenAccessException(Status.FORBIDDEN, + Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); + } if (checkIsSuperAdmin()) { - return companyService.validateCompany(companyId); + return companyEntity; } Map userInfo = tokenProvider.getUserInfoAndUserIdFromToken(request); companyService.validateUserWithCompny(getUserId(userInfo), companyId); @@ -100,10 +105,15 @@ public class Validator { public UserEntity validateUserId(HttpServletRequest request, Long userId) { UserEntity user = validateUser(request); + UserEntity requestedUser = userService.validateUser(userId); + + if(Boolean.FALSE.equals(requestedUser.getHub().getId().equals(user.getHub().getId()))) { + throw new ForbiddenAccessException(Status.FORBIDDEN, Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); + } if(user.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue()) && Boolean.FALSE.equals(user.getId().equals(userId))) { throw new ForbiddenAccessException(Status.FORBIDDEN, Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); } - return userService.validateUser(userId); + return requestedUser; } private Long getUserIdFromToken(HttpServletRequest request) { 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 5df3a2b7..41a10a1b 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 @@ -1328,4 +1328,70 @@ referencedColumnNames="id"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c688b8a1c5140c1f3ecddbc2ac7f8b44544cef56 Mon Sep 17 00:00:00 2001 From: nisha Date: Thu, 24 Oct 2024 17:42:35 +0530 Subject: [PATCH 4/9] Updated code for label in pdf --- .../gepafin/tendermanagement/dao/PdfDao.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java index 18d3bf1e..1e2d938e 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/PdfDao.java @@ -251,7 +251,7 @@ public class PdfDao { List keys = new ArrayList<>(entry.keySet()); // Get all keys in the current map // Handle based on the number of keys in the map - if (Boolean.FALSE.equals(containsThreeValues) && keys.size() == 2) { + if (Boolean.FALSE.equals(containsThreeValues) && (keys.size() == 2 || keys.size()<2)) { // Treat the first key as the "key" and second key as the "value" String heading = (String) entry.get(keys.get(0)); // Get value of first key String value1 = (String) entry.get(keys.get(1)); // Get value of second key @@ -475,6 +475,16 @@ public class PdfDao { // If the content with the matching fieldId is found, create a label-value pair if (matchingContent.isPresent()) { String name = matchingContent.get().getName(); + ContentResponseBean content = matchingContent.get(); + + // Find the setting where the name is "label" + String contentLabel = content.getSettings().stream() + .filter(setting -> "label".equals(setting.getName())) // Filter settings by name + .map(SettingResponseBean::getValue) // Extract the value from the matching setting + .map(Object::toString) // Convert the value to a string + .findFirst() // Get the first matching value + .orElse(null); // If no match is found, set label to null + if (name.equals("fileupload")) { // Step 1: Check if fieldValue is an instance of List @@ -518,12 +528,9 @@ public class PdfDao { } } } - String label = matchingContent.get().getLabel(); // Add the label-value pair to the list - if (fieldValue != null && !fieldValue.toString().trim().isEmpty()) { fieldValue = findLabelInOptions(matchingContent.get().getSettings(), fieldValue); - labelValuePairs.add(new FieldLabelValuePairRequest(label, fieldValue)); - } + labelValuePairs.add(new FieldLabelValuePairRequest(contentLabel, fieldValue)); } } From 620f5c7c7a5d284c2a177c6e4c1ba1928b83479c Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 18:30:58 +0530 Subject: [PATCH 5/9] Updated code for Assigned Application --- .../dao/AssignedApplicationsDao.java | 51 ++++++++++++++----- .../enums/ApplicationStatusTypeEnum.java | 3 +- .../AssignedApplicationsResponse.java | 5 ++ 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index 03f8f83a..faf0f9ea 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -9,6 +9,7 @@ import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.model.request.AssignedApplicationsRequest; import net.gepafin.tendermanagement.model.response.AssignedApplicationsResponse; +import net.gepafin.tendermanagement.repositories.ApplicationRepository; import net.gepafin.tendermanagement.repositories.AssignedApplicationsRepository; import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.service.UserService; @@ -31,13 +32,16 @@ import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; public class AssignedApplicationsDao { @Autowired - ApplicationService applicationService; + private ApplicationService applicationService; @Autowired - AssignedApplicationsRepository assignedApplicationsRepository; + private ApplicationRepository applicationRepository; @Autowired - UserService userService; + private AssignedApplicationsRepository assignedApplicationsRepository; + + @Autowired + private UserService userService; public AssignedApplicationsResponse createAssignedApplications(Long applicationId, Long userId, UserEntity assignedByUser, AssignedApplicationsRequest assignedApplicationsRequest){ log.info("Assigning application to pre-Instructor with details: {}", applicationId,userId); @@ -47,12 +51,16 @@ public class AssignedApplicationsDao { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_ASSIGNED)); } ApplicationEntity application = applicationService.validateApplication(applicationId); + + if (Boolean.FALSE.equals(ApplicationStatusTypeEnum.SUBMIT.getValue().equals(application.getStatus()))) { throw new CustomValidationException( Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.INVALID_APPLICATION_STATUS) ); } + application.setStatus(ApplicationStatusTypeEnum.EVALUATION.getValue()); + applicationRepository.save(application); UserEntity user = userService.validateUser(userId); AssignedApplicationsEntity assignment = createAssignmentEntity(application, user.getId(), assignedByUser, assignedApplicationsRequest); AssignedApplicationsResponse assignApplicationToInstructorResponse = convertEntityToResponse(assignment); @@ -82,17 +90,34 @@ public class AssignedApplicationsDao { return assignedApplication; } - public AssignedApplicationsResponse convertEntityToResponse(AssignedApplicationsEntity application){ + public AssignedApplicationsResponse convertEntityToResponse(AssignedApplicationsEntity assignedApplications){ AssignedApplicationsResponse assignedApplicationsResponse = new AssignedApplicationsResponse(); - assignedApplicationsResponse.setId(application.getId()); - assignedApplicationsResponse.setApplicationId(application.getApplication().getId()); - assignedApplicationsResponse.setAssignedBy(application.getAssignedBy()); - assignedApplicationsResponse.setUserId(application.getUserId()); - assignedApplicationsResponse.setCreatedDate(application.getCreatedDate()); - assignedApplicationsResponse.setUpdatedDate(application.getUpdatedDate()); - assignedApplicationsResponse.setNote(application.getNote()); - assignedApplicationsResponse.setStatus(AssignedApplicationEnum.valueOf(application.getStatus())); - assignedApplicationsResponse.setAssignedAt(application.getAssignedAt()); + assignedApplicationsResponse.setId(assignedApplications.getId()); + assignedApplicationsResponse.setApplicationId(assignedApplications.getApplication().getId()); + + ApplicationEntity application = applicationService.validateApplication(assignedApplications.getApplication().getId()); + String callName = application.getCall().getName(); + Long protocolNumber = application.getProtocol().getProtocolNumber(); + LocalDateTime submissionDate = application.getSubmissionDate(); + UserEntity userEntity = userService.validateUser(assignedApplications.getUserId()); + String firstName = userEntity.getBeneficiary().getFirstName(); + String lastName = userEntity.getBeneficiary().getLastName(); + String beneficiaryName = + (firstName != null ? firstName : "") + + (lastName != null ? " " + lastName : ""); + + assignedApplicationsResponse.setAssignedBy(assignedApplications.getAssignedBy()); + assignedApplicationsResponse.setUserId(assignedApplications.getUserId()); + assignedApplicationsResponse.setCreatedDate(assignedApplications.getCreatedDate()); + assignedApplicationsResponse.setUpdatedDate(assignedApplications.getUpdatedDate()); + assignedApplicationsResponse.setNote(assignedApplications.getNote()); + assignedApplicationsResponse.setStatus(AssignedApplicationEnum.valueOf(assignedApplications.getStatus())); + assignedApplicationsResponse.setAssignedAt(assignedApplications.getAssignedAt()); + assignedApplicationsResponse.setProtocolNumber(protocolNumber); + assignedApplicationsResponse.setCallName(callName); + assignedApplicationsResponse.setBeneficiaryName(beneficiaryName); + assignedApplicationsResponse.setSubmissionDate(submissionDate); + return assignedApplicationsResponse; } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/ApplicationStatusTypeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/ApplicationStatusTypeEnum.java index 80420c15..e9c1fb7a 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/ApplicationStatusTypeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/ApplicationStatusTypeEnum.java @@ -8,7 +8,8 @@ public enum ApplicationStatusTypeEnum { SUBMIT("SUBMIT"), AWAIT("AWAIT"), READY("READY"), - DISCARD("DISCARD"); + DISCARD("DISCARD"), + EVALUATION("EVALUATION"); private String value; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java index 8714d94c..b5957dd5 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java @@ -14,6 +14,11 @@ public class AssignedApplicationsResponse extends BaseBean { private AssignedApplicationEnum status; private String note; private LocalDateTime assignedAt; + private Long protocolNumber; + private String callName; + private String beneficiaryName; + private LocalDateTime submissionDate; + } From 1fca821e13294203cec8d2dd0f27459c6a4936bd Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 20:16:55 +0530 Subject: [PATCH 6/9] Fixed Issue --- .../dao/AssignedApplicationsDao.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index faf0f9ea..ebdb46a0 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -96,15 +96,20 @@ public class AssignedApplicationsDao { assignedApplicationsResponse.setApplicationId(assignedApplications.getApplication().getId()); ApplicationEntity application = applicationService.validateApplication(assignedApplications.getApplication().getId()); - String callName = application.getCall().getName(); - Long protocolNumber = application.getProtocol().getProtocolNumber(); + String callName = application.getCall() != null ? application.getCall().getName() : ""; + Long protocolNumber = (application.getProtocol() != null && application.getProtocol().getProtocolNumber() != null) + ? application.getProtocol().getProtocolNumber() + : 0; LocalDateTime submissionDate = application.getSubmissionDate(); - UserEntity userEntity = userService.validateUser(assignedApplications.getUserId()); - String firstName = userEntity.getBeneficiary().getFirstName(); - String lastName = userEntity.getBeneficiary().getLastName(); - String beneficiaryName = - (firstName != null ? firstName : "") + - (lastName != null ? " " + lastName : ""); + UserEntity userEntity = userService.validateUser(application.getUserId()); + + String firstName = userEntity.getBeneficiary() != null ? userEntity.getBeneficiary().getFirstName() : null; + String lastName = userEntity.getBeneficiary() != null ? userEntity.getBeneficiary().getLastName() : null; + + String beneficiaryName = (firstName != null && !firstName.isBlank() ? firstName : "") + + (lastName != null && !lastName.isBlank() ? " " + lastName : ""); + + beneficiaryName = beneficiaryName.isBlank() ? "" : beneficiaryName; assignedApplicationsResponse.setAssignedBy(assignedApplications.getAssignedBy()); assignedApplicationsResponse.setUserId(assignedApplications.getUserId()); From 4c29a17c828bd5b8dee9f904a1de702f92853d5d Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 21:57:07 +0530 Subject: [PATCH 7/9] Fixed hub validation issue --- .../tendermanagement/dao/ApplicationDao.java | 12 +++---- .../gepafin/tendermanagement/dao/CallDao.java | 20 +++++------ .../tendermanagement/dao/CompanyDao.java | 5 +-- .../tendermanagement/dao/DashboardDao.java | 8 ++--- .../tendermanagement/dao/DelegationDao.java | 12 +++++-- .../gepafin/tendermanagement/dao/UserDao.java | 15 +++++--- .../model/request/CreateCallRequestStep1.java | 1 - .../repositories/CallRepository.java | 34 +++++++++++++------ .../tendermanagement/service/CallService.java | 4 +-- .../tendermanagement/service/UserService.java | 6 ++-- .../service/impl/ApplicationServiceImpl.java | 2 +- .../service/impl/AuthenticationService.java | 2 +- .../service/impl/CallServiceImpl.java | 8 +++-- .../service/impl/CompanyServiceImpl.java | 4 +-- .../service/impl/UserServiceImpl.java | 9 +++-- .../tendermanagement/util/Validator.java | 25 ++++++++------ .../web/rest/api/UserApi.java | 6 ++-- .../web/rest/api/impl/CallApiController.java | 2 +- .../web/rest/api/impl/UserApiController.java | 12 +++---- 19 files changed, 110 insertions(+), 77 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index fe86a5c6..04eb8b95 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -139,7 +139,7 @@ public class ApplicationDao { } formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity); - createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity,formEntity); + createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity, formEntity); return getApplicationById(applicationEntity.getId(),formEntity.getId()); } public void validateDelegation(UserEntity user, CompanyEntity company) { @@ -288,7 +288,7 @@ public class ApplicationDao { log.info("Fetching applications for RoleType: {}", userEntity.getRoleEntity().getRoleType()); - Specification spec = search(userEntity.getId(), callId, companyId,status); + Specification spec = search(userEntity, callId, companyId,status); List applicationEntities = applicationRepository.findAll(spec); @@ -298,12 +298,12 @@ public class ApplicationDao { } - private Specification search(Long userId, Long callId, Long companyId,String status) { + private Specification search(UserEntity userEntity, Long callId, Long companyId,String status) { return (root, query, builder) -> { Boolean isBeneficiary = validator.checkIsBeneficiary(); Predicate predicate = builder.isFalse(root.get("isDeleted")); if (isBeneficiary) { - predicate = builder.and(predicate, builder.equal(root.get("userId"), userId)); + predicate = builder.and(predicate, builder.equal(root.get("userId"), userEntity.getId())); } if (callId != null) { predicate = builder.and(predicate, builder.equal(root.get("call").get("id"), callId)); @@ -314,7 +314,7 @@ public class ApplicationDao { if (status != null) { predicate = builder.and(predicate, builder.equal(root.get("status"), status)); } - + predicate = builder.and(predicate, builder.equal(root.get("hubId"), userEntity.getHub().getId())); return predicate; }; } @@ -601,7 +601,7 @@ public class ApplicationDao { throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_IN_PREVIOUS_STATUS)); } if (status.equals(ApplicationStatusTypeEnum.SUBMIT) && Boolean.TRUE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.READY.getValue()))) { - callService.validatePublishedCall(applicationEntity.getCall().getId()); + callService.validatePublishedCall(applicationEntity.getCall().getId(), userEntity.getHub().getId()); Long protocolNumber = getProtocolNumber(userEntity.getHub()); ProtocolEntity protocolEntity = createProtocolEntity(applicationEntity,protocolNumber, userEntity.getHub().getId()); applicationEntity.setProtocol(protocolEntity); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index d8cd0a5c..b52aa97b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -654,7 +654,7 @@ public class CallDao { if (Boolean.FALSE.equals(ROLE_SUPER_ADMIN.getValue().equals(type))) { callStatusList = List.of(CallStatusEnum.PUBLISH.getValue()); } - List calls = callRepository.findByStatusIn(callStatusList); + List calls = callRepository.findByStatusInAndHubId(callStatusList, user.getHub().getId()); return calls.stream() .map(this::convertToCallDetailsResponseBean) .collect(Collectors.toList()); @@ -672,13 +672,13 @@ public class CallDao { callResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus())); return callResponseBean; } - public CallEntity getCallEntityById(Long id){ - CallEntity callEntity=callRepository.findByIdAndStatusNotIn(id,List.of(CallStatusEnum.PUBLISH.getValue())); - if(callEntity==null){ - throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)); - } - return callEntity; - } +// public CallEntity getCallEntityById(Long id){ +// CallEntity callEntity=callRepository.findByIdAndStatusNotInAndHubId(id, List.of(CallStatusEnum.PUBLISH.getValue())); +// if(callEntity==null){ +// throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)); +// } +// return callEntity; +// } public CallResponse updateCallStatus(CallEntity callEntity, CallStatusEnum statusReq) { CallStatusEnum currentStatus = CallStatusEnum.valueOf(callEntity.getStatus()); @@ -718,9 +718,9 @@ public class CallDao { } } - public CallEntity validatePublishedCall(Long callId) { + public CallEntity validatePublishedCall(Long callId, Long hubId) { CallEntity callEntity= callRepository - .findByIdAndStatus(callId, CallStatusEnum.PUBLISH.getValue()); + .findByIdAndStatusAndHubId(callId, CallStatusEnum.PUBLISH.getValue(), hubId); if(callEntity==null){ throw new ResourceNotFoundException( Status.NOT_FOUND, diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 0f59fc08..84b01021 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -54,7 +54,7 @@ public class CompanyDao { return convertCompanyEntityToCompanyResponse(existingCompany, userWithCompanyEntity); } else { validateCompany(userEntity, companyRequest); - CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(companyRequest); + CompanyEntity companyEntity = convertCompanyRequestToCompanyEntity(userEntity, companyRequest); companyRepository.save(companyEntity); userWithCompanyEntity = createUserWithCompanyRelation(userEntity, companyEntity, companyRequest.getIsLegalRepresentant()); return convertCompanyEntityToCompanyResponse(companyEntity, userWithCompanyEntity); @@ -91,7 +91,7 @@ public class CompanyDao { return userWithCompanyRepository.save(userWithCompanyEntity); } - private CompanyEntity convertCompanyRequestToCompanyEntity(CompanyRequest request) { + private CompanyEntity convertCompanyRequestToCompanyEntity(UserEntity userEntity, CompanyRequest request) { CompanyEntity entity = new CompanyEntity(); entity.setCompanyName(request.getCompanyName()); entity.setVatNumber(request.getVatNumber()); @@ -108,6 +108,7 @@ public class CompanyDao { entity.setAnnualRevenue(request.getAnnualRevenue()); entity.setContactName(request.getContactName()); entity.setContactEmail(request.getContactEmail()); + entity.setHub(userEntity.getHub()); return entity; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index de20f607..c5afea4e 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -60,7 +60,7 @@ public class DashboardDao { } private void setActiveCalls(Widget1 widget1, UserEntity requestedUserEntity) { - Long activeCalls = callRepository.countByStatus(CallStatusEnum.PUBLISH.getValue()); + Long activeCalls = callRepository.countByStatusAndHubId(CallStatusEnum.PUBLISH.getValue(), requestedUserEntity.getHub().getId()); if (activeCalls != null) { widget1.setNumberOfActiveCalls(activeCalls); } @@ -74,8 +74,8 @@ public class DashboardDao { } } - private void setTotalActiveFinancing(Widget1 widget1, UserEntity requestedUserEntity) { - BigDecimal totalActiveFinancing = callRepository.findTotalAmountOfPublishedCalls(); + private void setTotalActiveFinancing(Widget1 widget1, UserEntity requestedUser) { + BigDecimal totalActiveFinancing = callRepository.findTotalAmountOfPublishedCallsAndHubId(requestedUser.getHub().getId()); widget1.setTotalActiveFinancing(totalActiveFinancing); } @@ -104,7 +104,7 @@ public class DashboardDao { CompanyEntity company) { BeneficiaryWidgetResponseBean beneficiaryWidgetResponseBean = BeneficiaryWidgetResponseBean.builder() .numberOfApplications(0L).numberOfCalls(0L).numberOfIntegratedDocuments(0L).build(); - Long activeCalls = callRepository.countByStatus(CallStatusEnum.PUBLISH.getValue()); + Long activeCalls = callRepository.countByStatusAndHubId(CallStatusEnum.PUBLISH.getValue(), userEntity.getHub().getId()); if (activeCalls != null) { beneficiaryWidgetResponseBean.setNumberOfCalls(activeCalls); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java index f609086f..1d9e904a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java @@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.CompanyEntity; @@ -31,6 +32,7 @@ import net.gepafin.tendermanagement.service.AmazonS3Service; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; +import net.gepafin.tendermanagement.util.Validator; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; @@ -38,7 +40,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status; @Component public class DelegationDao { - private static final String DEFAULT_PLACEHOLDER = "____________________"; +// private static final String DEFAULT_PLACEHOLDER = "____________________"; @Autowired private UserService userService; @@ -57,6 +59,9 @@ public class DelegationDao { @Autowired private UserCompanyDelegationRepository userCompanyDelegationRepository; + + @Autowired + private Validator validator; public ByteArrayOutputStream generateDocument(Map placeholders, String templateName) { @@ -89,9 +94,10 @@ public class DelegationDao { return new XWPFDocument(templateStream); } - public ByteArrayOutputStream downloadCompanyDelegation(UserEntity userEntity, Long companyId, CompanyDelegationRequest companyDelegationRequest) { + public ByteArrayOutputStream downloadCompanyDelegation(HttpServletRequest request, Long companyId, CompanyDelegationRequest companyDelegationRequest) { Map placeholders = getDefaultPlaceholders(); - UserResponseBean user = userService.getUserById(userEntity.getId()); + UserEntity userEntity = validator.validateUser(request); + UserResponseBean user = userService.getUserById(request, userEntity.getId()); CompanyEntity companyEntity = companyDao.validateCompany(companyId); companyDao.getUserWithCompany(userEntity.getId(), companyId); updatePlaceholdersForDelegation(user, companyEntity, placeholders, companyDelegationRequest); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index 6a776f07..33f235a2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -125,11 +125,12 @@ public class UserDao { if (tempToken == null) { validator.validateRequest(request,RoleStatusEnum.ROLE_SUPER_ADMIN); + UserEntity userEntity = validator.validateUser(request); + userReq.setHubUuid(userEntity.getHub().getUniqueUuid()); }else { samlSuccessHandler.validateToken(tempToken, userReq.getCodiceFiscale(), userReq.getHubUuid()); } - RoleEntity role = roleService.validateRole(userReq.getRoleId()); if (Boolean.FALSE.equals(Utils.isValidEmail(userReq.getEmail()))) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VALIDATE_EMAIL)); @@ -153,10 +154,14 @@ public class UserDao { if (tempToken != null) { userReq.setRoleId(null); } - if(tempToken == null && Boolean.TRUE.equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(role.getRoleType()))){ - throw new CustomValidationException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.CANNOT_CREATE_BENEFICIARY_USER)); - } + + if (tempToken == null) { + RoleEntity role = roleService.validateRole(userReq.getRoleId()); + if (Boolean.TRUE.equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(role.getRoleType()))) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CANNOT_CREATE_BENEFICIARY_USER)); + } + } } private void validatePassword(String password, String confirmPassword, String tempToken) { diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java index bdc0d015..6ca30e37 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java @@ -2,7 +2,6 @@ package net.gepafin.tendermanagement.model.request; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.List; import lombok.Data; diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java index 4e651fe0..12934e36 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java @@ -1,8 +1,8 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.CallEntity; -import net.gepafin.tendermanagement.enums.CallStatusEnum; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.math.BigDecimal; @@ -11,18 +11,30 @@ import java.util.List; @Repository public interface CallRepository extends JpaRepository { - public CallEntity findByIdAndStatusNotIn(Long id, List status); - List findByStatusIn(List callStatus); +// public CallEntity findByIdAndStatusNotIn(Long id, List status); + +// List findByStatusIn(List callStatus); - public CallEntity findByIdAndStatus(Long id,String status); +// public CallEntity findByIdAndStatus(Long id,String status); - public Long countByStatus(String status); +// public Long countByStatus(String status); - @Query("SELECT COALESCE(SUM(c.amount), 0) FROM CallEntity c WHERE c.status = 'PUBLISH'") - BigDecimal findTotalAmountOfPublishedCalls(); +// @Query("SELECT COALESCE(SUM(c.amount), 0) FROM CallEntity c WHERE c.status = 'PUBLISH'") +// BigDecimal findTotalAmountOfPublishedCalls(); - @Query("SELECT c.name, COUNT(a.id) " + - "FROM CallEntity c LEFT JOIN ApplicationEntity a ON c.id = a.call.id " + - "GROUP BY c.name") - List findApplicationsPerCall(); +// @Query("SELECT c.name, COUNT(a.id) " + +// "FROM CallEntity c LEFT JOIN ApplicationEntity a ON c.id = a.call.id " + +// "GROUP BY c.name") +// List findApplicationsPerCall(); + + public List findByStatusInAndHubId(List callStatus, Long hubId); + + public CallEntity findByIdAndStatusAndHubId(Long id, String status, Long hubId); + + public Long countByStatusAndHubId(String status, Long hubId); + + public CallEntity findByIdAndStatusNotInAndHubId(Long id, List status, Long hubId); + + @Query("SELECT COALESCE(SUM(c.amount), 0) FROM CallEntity c WHERE c.status = 'PUBLISH' And c.hub.id = :hubId") + BigDecimal findTotalAmountOfPublishedCallsAndHubId(@Param("hubId") 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 8abe4cb5..92a62f02 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -29,6 +29,6 @@ public interface CallService { CallEntity validateCall(Long callId); - CallEntity validatePublishedCall(Long callId); - byte[] downloadCallDocumentsAsZip(Long callId); + CallEntity validatePublishedCall(Long callId, Long hubId); + byte[] downloadCallDocumentsAsZip(HttpServletRequest request, Long callId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/UserService.java b/src/main/java/net/gepafin/tendermanagement/service/UserService.java index 9a1bdf9a..21109a5e 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/UserService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/UserService.java @@ -17,11 +17,11 @@ import java.util.List; public interface UserService { JWTToken createUser(HttpServletRequest request, String tempToken, UserReq userReq); - UserResponseBean updateUser(Long userId, UpdateUserReq userReq); + UserResponseBean updateUser(HttpServletRequest request, Long userId, UpdateUserReq userReq); - UserResponseBean getUserById(Long userId); + UserResponseBean getUserById(HttpServletRequest request, Long userId); - void deleteUser(Long userId); + void deleteUser(HttpServletRequest request, Long userId); JWTToken login(LoginReq loginReq,HttpServletRequest request); 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 e8e8f1f4..779a3d09 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -65,6 +65,7 @@ public class ApplicationServiceImpl implements ApplicationService { public ApplicationResponse createApplication(HttpServletRequest request, Long companyId, ApplicationRequest applicationRequest, Long callId) { UserEntity userEntity = validator.validateUser(request); CompanyEntity companyEntity = validator.validateUserWithCompany(request, companyId); + validator.validateUserWithCall(userEntity, callId); return applicationDao.createApplicationByCallId(companyEntity, applicationRequest, callId, userEntity); } @@ -114,7 +115,6 @@ public class ApplicationServiceImpl implements ApplicationService { @Transactional(rollbackFor = Exception.class) public ApplicationResponse validateApplication(HttpServletRequest request, Long applicationId) { return applicationDao.validateApplication(request, applicationId); - } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java index 0d3dab12..5a2d9ded 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AuthenticationService.java @@ -77,7 +77,7 @@ public class AuthenticationService { public JWTToken login(LoginReq loginReq, HttpServletRequest request) { UserEntity user=null; - + LoginAttemptEntity loginAttemptEntity = prepareLoginAttemptEntity(loginReq, request); log.info("Attempting login for email: {}", loginReq.getEmail()); String emailWithHubId = loginReq.getEmail()+":"+loginReq.getHubUuid(); 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 281b33b1..8004008b 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -91,13 +91,15 @@ public class CallServiceImpl implements CallService { } @Override - public CallEntity validatePublishedCall(Long callId) { - return callDao.validatePublishedCall(callId); + public CallEntity validatePublishedCall(Long callId, Long hubId) { + return callDao.validatePublishedCall(callId, hubId); } @Override @Transactional(readOnly = true) - public byte[] downloadCallDocumentsAsZip(Long callId) { + public byte[] downloadCallDocumentsAsZip(HttpServletRequest request, Long callId) { + UserEntity user = validator.validateUser(request); + validator.validateUserWithCall(user, callId); return callDao.downloadCallDocumentsAsZip(callId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java index 47656b4d..5ab99b13 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java @@ -49,6 +49,7 @@ public class CompanyServiceImpl implements CompanyService { @Transactional(rollbackFor = Exception.class) public CompanyResponse updateCompany(HttpServletRequest request, Long companyId, CompanyRequest companyRequest) { UserEntity userEntity =validator.validateUser(request); + validator.validateUserWithCompany(request, companyId); return companyDao.updateCompany(userEntity, companyId, companyRequest); } @@ -93,8 +94,7 @@ public class CompanyServiceImpl implements CompanyService { @Override @Transactional(readOnly = true) public ByteArrayOutputStream downloadCompanyDelegation(HttpServletRequest request, Long companyId, CompanyDelegationRequest companyDelegationRequest) { - UserEntity userEntity =validator.validateUser(request); - return delegationDao.downloadCompanyDelegation(userEntity, companyId, companyDelegationRequest); + return delegationDao.downloadCompanyDelegation(request, companyId, companyDelegationRequest); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java index 3f325320..5d3640f9 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java @@ -40,19 +40,22 @@ public class UserServiceImpl implements UserService { @Override @Transactional(rollbackFor = Exception.class) - public UserResponseBean updateUser(Long userId, UpdateUserReq userReq) { + public UserResponseBean updateUser(HttpServletRequest request, Long userId, UpdateUserReq userReq) { + validator.validateUserId(request, userId); return userDao.updateUser(userId, userReq); } @Override @Transactional(readOnly = true) - public UserResponseBean getUserById(Long userId) { + public UserResponseBean getUserById(HttpServletRequest request, Long userId) { + validator.validateUserId(request, userId); return userDao.getUserById(userId); } @Override @Transactional(rollbackFor = Exception.class) - public void deleteUser(Long userId) { + public void deleteUser(HttpServletRequest request, Long userId) { + validator.validateUserId(request, userId); userDao.deleteUser(userId); } diff --git a/src/main/java/net/gepafin/tendermanagement/util/Validator.java b/src/main/java/net/gepafin/tendermanagement/util/Validator.java index 785ad3b9..ecf4b3ae 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Validator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Validator.java @@ -72,12 +72,8 @@ public class Validator { } public CompanyEntity validateUserWithCompany(HttpServletRequest request, Long companyId) { - UserEntity user = validateUser(request); CompanyEntity companyEntity = companyService.validateCompany(companyId); - if (Boolean.FALSE.equals(user.getHub().getId().equals(companyEntity.getHub().getId()))) { - throw new ForbiddenAccessException(Status.FORBIDDEN, - Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); - } + validateHubId(request, companyEntity.getHub().getId()); if (checkIsSuperAdmin()) { return companyEntity; } @@ -85,6 +81,15 @@ public class Validator { companyService.validateUserWithCompny(getUserId(userInfo), companyId); return companyService.validateCompany(companyId); } + + public void validateHubId(HttpServletRequest request, Long hubId) { + UserEntity user = validateUser(request); + Long hubIdFromHttpRequest = user.getHub().getId(); + if (Boolean.FALSE.equals(hubIdFromHttpRequest.equals(hubId))) { + throw new ForbiddenAccessException(Status.FORBIDDEN, + Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); + } + } private Long getUserId(Map userInfo) { return Long.parseLong(userInfo.get("userId").toString()); @@ -107,11 +112,11 @@ public class Validator { UserEntity user = validateUser(request); UserEntity requestedUser = userService.validateUser(userId); - if(Boolean.FALSE.equals(requestedUser.getHub().getId().equals(user.getHub().getId()))) { - throw new ForbiddenAccessException(Status.FORBIDDEN, Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); - } - if(user.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_BENEFICIARY.getValue()) && Boolean.FALSE.equals(user.getId().equals(userId))) { - throw new ForbiddenAccessException(Status.FORBIDDEN, Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); + validateHubId(request, requestedUser.getHub().getId()); + if (Boolean.FALSE.equals(user.getRoleEntity().getRoleType().equals(RoleStatusEnum.ROLE_SUPER_ADMIN.getValue())) + && Boolean.FALSE.equals(user.getId().equals(userId))) { + throw new ForbiddenAccessException(Status.FORBIDDEN, + Translator.toLocale(GepafinConstant.PERMISSION_DENIED)); } return requestedUser; } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java index 8982e45e..c7b8e530 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/UserApi.java @@ -59,7 +59,7 @@ public interface UserApi { @RequestMapping(value = "/{userId}", produces = {"application/json"}, method = RequestMethod.PUT) - default ResponseEntity> updateUser( + default ResponseEntity> updateUser(HttpServletRequest request, @Parameter(description = "The user id", required = true) @PathVariable("userId") Long userId, @Parameter(description = "User request object", required = true) @Valid @RequestBody UpdateUserReq userReq) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); @@ -77,7 +77,7 @@ public interface UserApi { @RequestMapping(value = "/{userId}", produces = {"application/json"}, method = RequestMethod.GET) - default ResponseEntity> getUserById( + default ResponseEntity> getUserById(HttpServletRequest request, @Parameter(description = "The user id", required = true) @PathVariable("userId") Long userId) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } @@ -93,7 +93,7 @@ public interface UserApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)}))}) @RequestMapping(value = "/{userId}", method = RequestMethod.DELETE) - default ResponseEntity> deleteUser( + default ResponseEntity> deleteUser(HttpServletRequest request, @Parameter(description = "The user id", required = true) @PathVariable("userId") Long userId) { return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); } 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 b06380e4..69154098 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 @@ -88,7 +88,7 @@ public class CallApiController implements CallApi { } @Override public ResponseEntity downloadCallDocumentsAsZip(HttpServletRequest request, Long callId) { - byte[] zipFile = callService.downloadCallDocumentsAsZip(callId); + byte[] zipFile = callService.downloadCallDocumentsAsZip(request, callId); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java index 413feaac..1a3040c1 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/UserApiController.java @@ -44,29 +44,29 @@ public class UserApiController implements UserApi { } @Override - public ResponseEntity> updateUser( + public ResponseEntity> updateUser(HttpServletRequest request, @PathVariable("userId") Long userId, @Valid @RequestBody UpdateUserReq userReq) { log.info("Update User - User ID: {}, Request Body: {}", userId, userReq); - UserResponseBean updatedUser = userService.updateUser(userId, userReq); + UserResponseBean updatedUser = userService.updateUser(request, userId, userReq); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(updatedUser, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_UPDATED_SUCCESS_MSG))); } @Override - public ResponseEntity> getUserById( + public ResponseEntity> getUserById(HttpServletRequest request, @PathVariable("userId") Long userId) { log.info("Get User by ID - User ID: {}", userId); - UserResponseBean user = userService.getUserById(userId); + UserResponseBean user = userService.getUserById(request, userId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(user, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_USER_SUCCESS_MSG))); } @Override - public ResponseEntity> deleteUser( + public ResponseEntity> deleteUser(HttpServletRequest request, @PathVariable("userId") Long userId) { log.info("Delete User - User ID: {}", userId); - userService.deleteUser(userId); + userService.deleteUser(request, userId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.USER_DELETED_SUCCESS_MSG))); } From 5beea7132e164a565851386164a8c970d539c101 Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 23:02:01 +0530 Subject: [PATCH 8/9] updated code for super user dashboard --- .../gepafin/tendermanagement/dao/DashboardDao.java | 4 ++-- .../repositories/ApplicationRepository.java | 12 ++++++------ .../service/impl/FlowServiceImpl.java | 7 +++++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java index c5afea4e..c76d14c9 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DashboardDao.java @@ -80,14 +80,14 @@ public class DashboardDao { } private void setSubmittedApplications(Widget1 widget1, UserEntity requestedUserEntity) { - Long submittedApplications = applicationRepository.countSubmittedApplications(); + Long submittedApplications = applicationRepository.countSubmittedApplicationsByHubId(requestedUserEntity.getHub().getId()); if (submittedApplications != null) { widget1.setNumberOfSubmittedApplications(submittedApplications); } } private void setDraftApplications(Widget1 widget1, UserEntity requestedUserEntity) { - Long draftApplications = applicationRepository.countDraftApplications(); + Long draftApplications = applicationRepository.countDraftApplicationsByHubId(requestedUserEntity.getHub().getId()); if (draftApplications != null) { widget1.setNumberOfDraftApplications(draftApplications); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index 7b57fcf2..9d52b2aa 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -32,13 +32,13 @@ public interface ApplicationRepository extends JpaRepository findByCompanyIdAndUserIdAndIsDeletedFalse(Long companyId,Long userId); + @Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.status = 'SUBMIT' And a.hubId = :hubId") + public Long countSubmittedApplicationsByHubId(@Param("hubId") Long hubId); + + @Query("SELECT COUNT(a) FROM ApplicationEntity a WHERE a.status = 'DRAFT' And a.hubId = :hubId") + public Long countDraftApplicationsByHubId(@Param("hubId") Long hubId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FlowServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FlowServiceImpl.java index 2ae5546f..5bd9d4d5 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/FlowServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FlowServiceImpl.java @@ -5,6 +5,8 @@ import net.gepafin.tendermanagement.dao.FlowDao; import net.gepafin.tendermanagement.model.request.FlowRequestBean; import net.gepafin.tendermanagement.model.response.FlowResponseBean; import net.gepafin.tendermanagement.service.FlowService; +import net.gepafin.tendermanagement.util.Validator; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,16 +16,21 @@ public class FlowServiceImpl implements FlowService { @Autowired private FlowDao flowDao; + + @Autowired + private Validator validator; @Override @Transactional(rollbackFor = Exception.class) public FlowResponseBean createOrUpdateFlow(HttpServletRequest httpServletRequest, FlowRequestBean flowRequestBean, Long callId) { + validator.validateUserWithCall(validator.validateUser(httpServletRequest), callId); return flowDao.createOrUpdateFlow(flowRequestBean,callId); } @Override @org.springframework.transaction.annotation.Transactional(readOnly = true) public FlowResponseBean getFlowByCallId(HttpServletRequest request, Long callId) { + validator.validateUserWithCall(validator.validateUser(request), callId); return flowDao.getFlowByCallId(callId); } } From ff05d8e29eecfd4e1cbed1c1f6ac9811aca688e2 Mon Sep 17 00:00:00 2001 From: harish Date: Thu, 24 Oct 2024 23:44:32 +0530 Subject: [PATCH 9/9] Added callEndDate and startEndDate to response --- .../tendermanagement/dao/AssignedApplicationsDao.java | 5 +++++ .../model/response/AssignedApplicationsResponse.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index ebdb46a0..bdf85b41 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -97,6 +97,9 @@ public class AssignedApplicationsDao { ApplicationEntity application = applicationService.validateApplication(assignedApplications.getApplication().getId()); String callName = application.getCall() != null ? application.getCall().getName() : ""; + LocalDateTime callEndDate = application.getCall().getEndDate(); + LocalDateTime callStartDate = application.getCall().getStartDate(); + Long protocolNumber = (application.getProtocol() != null && application.getProtocol().getProtocolNumber() != null) ? application.getProtocol().getProtocolNumber() : 0; @@ -122,6 +125,8 @@ public class AssignedApplicationsDao { assignedApplicationsResponse.setCallName(callName); assignedApplicationsResponse.setBeneficiaryName(beneficiaryName); assignedApplicationsResponse.setSubmissionDate(submissionDate); + assignedApplicationsResponse.setCallEndDate(callEndDate); + assignedApplicationsResponse.setCallStartDate(callStartDate); return assignedApplicationsResponse; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java index b5957dd5..b5ad3aae 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java @@ -18,6 +18,8 @@ public class AssignedApplicationsResponse extends BaseBean { private String callName; private String beneficiaryName; private LocalDateTime submissionDate; + private LocalDateTime callStartDate; + private LocalDateTime callEndDate; }