From 1790bbf52b0cee742afd1914241c0903aa428638 Mon Sep 17 00:00:00 2001 From: nisha Date: Thu, 5 Dec 2024 21:12:30 +0530 Subject: [PATCH 1/2] updated code for company delegation --- .../constants/GepafinConstant.java | 1 + .../tendermanagement/dao/DelegationDao.java | 33 ++++++++++++++++--- .../service/CompanyService.java | 2 +- .../service/impl/CompanyServiceImpl.java | 5 ++- .../web/rest/api/CompanyApi.java | 5 +-- .../rest/api/impl/CompanyApiController.java | 7 ++-- src/main/resources/message_en.properties | 2 ++ src/main/resources/message_it.properties | 1 + 8 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index dbf39e8f..d60b0da7 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -305,5 +305,6 @@ public class GepafinConstant { public static final String USER_ID = "userId"; public static final String LOGIN_ATTEMPT_ID = "loginAttemptId"; public static final String USER_ACTION_ID = "userActionId"; + public static final String ATLEAST_ONE_ID_REQUIRED="atleast.one.id.required"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java index f5006e2f..17920473 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java @@ -5,13 +5,14 @@ import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; -import java.util.Optional; import java.util.function.Function; import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.enums.DocOtherSourceTypeEnum; +import net.gepafin.tendermanagement.repositories.ApplicationEvaluationRepository; import net.gepafin.tendermanagement.repositories.UserWithCompanyRepository; +import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.service.CompanyService; import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; @@ -82,6 +83,12 @@ public class DelegationDao { @Autowired private HttpServletRequest request; + @Autowired + private ApplicationService applicationService; + + @Autowired + private ApplicationEvaluationRepository applicationEvaluationRepository; + public ByteArrayOutputStream generateDocument(Map placeholders, String templateName) { try { String s3Folder = s3ConfigBean.generateDocumentPathForOther(DocOtherSourceTypeEnum.TEMPLATE, 0L, 0L,0L); @@ -257,10 +264,28 @@ public class DelegationDao { } } - public CompanyDelegationResponse getCompanyDelegation(UserEntity userEntity, Long companyId) { - UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(userEntity.getId(),companyId); + public CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId, Long applicationId) { + if(companyId==null && applicationId==null){ + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.ATLEAST_ONE_ID_REQUIRED)); + } + if(validator.checkIsPreInstructor()) { + ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElseThrow(()-> + throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.APPLICATION_EVALUATION_NOT_FOUND, companyId)); + + validator.validateUserWithCompany(); + } else { + validator.validateUserWithCompany(); + } + + Long userId=userEntity.getId(); + if(applicationId != null) { + ApplicationEntity application = applicationService.validateApplication(applicationId); + userId=application.getUserId(); + companyId=application.getCompanyId(); + } + UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(userId,companyId); UserCompanyDelegationEntity userCompanyDelegationEntity = userCompanyDelegationRepository - .findByUserIdAndUserWithCompanyIdAndStatus(userEntity.getId(), userWithCompanyEntity.getId(), + .findByUserIdAndUserWithCompanyIdAndStatus(userId, userWithCompanyEntity.getId(), UserCompanyDelegationStatusEnum.ACTIVE.getValue()); companyDao.getUserWithCompany(userEntity.getId(), companyId); if(userCompanyDelegationEntity == null) { diff --git a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java index 2896419a..a1120587 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java @@ -38,7 +38,7 @@ public interface CompanyService { CompanyDelegationResponse uploadCompanyDelegation(HttpServletRequest request, Long companyId, MultipartFile file); - CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId); + CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId,Long applicationId); void deleteCompanyDelegation(HttpServletRequest request, Long companyId); UserWithCompanyEntity getUserWithCompanyEntity(Long userId,Long companyId); 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 3f5e326f..2bddb1cf 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java @@ -110,9 +110,8 @@ public class CompanyServiceImpl implements CompanyService { @Override @Transactional - public CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId) { - UserEntity userEntity =validator.validateUser(request); - return delegationDao.getCompanyDelegation(userEntity, companyId); + public CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId,Long applicationId) { + return delegationDao.getCompanyDelegation(request, companyId,applicationId); } @Override @Transactional(rollbackFor = Exception.class) diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java index bc016334..baf1671e 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyApi.java @@ -128,9 +128,10 @@ public interface CompanyApi { @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) - @GetMapping(value = "{companyId}/delegation", produces = { "application/json" }) + @GetMapping(value = "delegation", produces = { "application/json" }) ResponseEntity> getCompanyDelegation(HttpServletRequest request, - @Parameter(description = "The company id", required = true) @PathVariable("companyId") Long companyId); + @Parameter(description = "The company ID") @RequestParam(value = "companyId", required = false) Long companyId, + @Parameter(description = "The application ID") @RequestParam(value = "applicationId", required = false) Long applicationId); @Operation(summary = "Api to delete company delegation", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java index ef73e985..127edbe1 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyApiController.java @@ -8,6 +8,7 @@ import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.util.LoggingUtil; +import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -152,13 +153,13 @@ public class CompanyApiController implements CompanyApi{ @Override public ResponseEntity> getCompanyDelegation(HttpServletRequest request, - Long companyId) { + Long companyId,Long applicationId) { log.info("get company delegation with companyId: {}", companyId); /** This code is responsible for creating user action logs for the "Get company delegation" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_COMPANY_DELEGATION).build()); - - CompanyDelegationResponse companyDelegationResponse = companyService.getCompanyDelegation(request, companyId); + + CompanyDelegationResponse companyDelegationResponse = companyService.getCompanyDelegation(request, companyId,applicationId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(companyDelegationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.DELEGATION_FETCH_SUCCESS))); } diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index d6aa4578..68d7a49b 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -313,3 +313,5 @@ company.id.required.for.preferred.call=Company ID is required when requesting on response.days.not.null=Response days should not be null and greater than zero. application.cannot.approved.or.rejected=Application cannot be approved and rejected because amendment is active. + +atleast.one.id.required=At least one of companyId or applicationId must be provided \ No newline at end of file diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 051ed432..30ffc1ac 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -307,3 +307,4 @@ user.must.be.associated.with.company.to.create.application=Devi essere associato company.id.required.for.preferred.call=ID azienda obbligatorio quando si richiedono solo chiamate preferite. response.days.not.null=I giorni di risposta non devono essere nulli e maggiori di zero. application.cannot.approved.or.rejected=La domanda non può essere approvata o rifiutata perché l'emendamento è attivo. +atleast.one.id.required=Almeno uno tra companyId o applicationId deve essere fornito. \ No newline at end of file From cbaf25801f1c214365992533f4acafe3c60d3e24 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 5 Dec 2024 22:12:24 +0530 Subject: [PATCH 2/2] updated code for get company delegation --- .../tendermanagement/dao/ApplicationDao.java | 12 ++++- .../dao/ApplicationEvaluationDao.java | 7 +++ .../tendermanagement/dao/DelegationDao.java | 46 ++++++++++--------- .../service/ApplicationEvaluationService.java | 2 + .../ApplicationEvaluationServiceImpl.java | 5 ++ 5 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index e3726e41..1240aa90 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -14,6 +14,7 @@ import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.AmazonS3Service; +import net.gepafin.tendermanagement.service.ApplicationEvaluationService; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CompanyService; import net.gepafin.tendermanagement.service.DocumentService; @@ -159,7 +160,7 @@ public class ApplicationDao { private HttpServletRequest request; @Autowired - private TokenProvider tokenProvider; + private ApplicationEvaluationService applicationEvaluationService; public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId, Long applicationId) { FormEntity formEntity = formService.validateForm(formId); @@ -1110,7 +1111,14 @@ public class ApplicationDao { public ApplicationSignedDocumentResponse getSignedDocument(HttpServletRequest request, Long applicationId) { ApplicationEntity applicationEntity = validateApplication(applicationId); - validator.validateUserWithCompany(request, applicationEntity.getCompanyId()); +// validator.validateUserWithCompany(request, applicationEntity.getCompanyId()); + + if (validator.checkIsPreInstructor()) { + ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluationByApplicationId(applicationId); + validator.validatePreInstructor(request, applicationEvaluationEntity.getUserId()); + } else { + validator.validateUserId(request, applicationEntity.getUserId()); + } ApplicationSignedDocumentEntity applicationSignedDocument = applicationSignedDocumentRepository .findByApplicationIdAndStatus(applicationId, ApplicationSignedDocumentStatusEnum.ACTIVE.getValue()); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 7c25401b..b8fc0b35 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -1396,5 +1396,12 @@ public class ApplicationEvaluationDao { } return null; } + + public ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId) { + return applicationEvaluationRepository + .findByApplicationIdAndIsDeletedFalse(applicationId) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, + Translator.toLocale(GepafinConstant.APPLICATION_EVALUATION_NOT_FOUND))); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java index 17920473..670f9444 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DelegationDao.java @@ -34,6 +34,7 @@ import net.gepafin.tendermanagement.model.response.UserResponseBean; import net.gepafin.tendermanagement.repositories.DocumentRepository; import net.gepafin.tendermanagement.repositories.UserCompanyDelegationRepository; import net.gepafin.tendermanagement.service.AmazonS3Service; +import net.gepafin.tendermanagement.service.ApplicationEvaluationService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; @@ -87,7 +88,7 @@ public class DelegationDao { private ApplicationService applicationService; @Autowired - private ApplicationEvaluationRepository applicationEvaluationRepository; + private ApplicationEvaluationService applicationEvaluationService; public ByteArrayOutputStream generateDocument(Map placeholders, String templateName) { try { @@ -265,29 +266,11 @@ public class DelegationDao { } public CompanyDelegationResponse getCompanyDelegation(HttpServletRequest request, Long companyId, Long applicationId) { - if(companyId==null && applicationId==null){ - throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.ATLEAST_ONE_ID_REQUIRED)); - } - if(validator.checkIsPreInstructor()) { - ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElseThrow(()-> - throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.APPLICATION_EVALUATION_NOT_FOUND, companyId)); - - validator.validateUserWithCompany(); - } else { - validator.validateUserWithCompany(); - } - Long userId=userEntity.getId(); - if(applicationId != null) { - ApplicationEntity application = applicationService.validateApplication(applicationId); - userId=application.getUserId(); - companyId=application.getCompanyId(); - } - UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(userId,companyId); + UserWithCompanyEntity userWithCompanyEntity= validateUserAndGetUserWithCompany(request, companyId, applicationId); UserCompanyDelegationEntity userCompanyDelegationEntity = userCompanyDelegationRepository - .findByUserIdAndUserWithCompanyIdAndStatus(userId, userWithCompanyEntity.getId(), + .findByUserIdAndUserWithCompanyIdAndStatus(userWithCompanyEntity.getUserId(), userWithCompanyEntity.getId(), UserCompanyDelegationStatusEnum.ACTIVE.getValue()); - companyDao.getUserWithCompany(userEntity.getId(), companyId); if(userCompanyDelegationEntity == null) { throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.DELEGATION_NOT_FOUND)); @@ -295,6 +278,27 @@ public class DelegationDao { return convertUserCompanyDelegationToCompanyDelegationResponse(userCompanyDelegationEntity); } + private UserWithCompanyEntity validateUserAndGetUserWithCompany(HttpServletRequest request, Long companyId, + Long applicationId) { + Long userId = null; + if (companyId == null && applicationId == null) { + throw new CustomValidationException(Status.BAD_REQUEST, + Translator.toLocale(GepafinConstant.ATLEAST_ONE_ID_REQUIRED)); + } + if (applicationId != null) { + ApplicationEntity application = applicationService.validateApplication(applicationId); + userId = application.getUserId(); + companyId = application.getCompanyId(); + } + if (validator.checkIsPreInstructor()) { + ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluationByApplicationId(applicationId); + validator.validatePreInstructor(request, applicationEvaluationEntity.getUserId()); + } else if (validator.checkIsBeneficiary()) { + userId = validator.validateUser(request).getId(); + } + return companyService.getUserWithCompany(userId, companyId); + } + public void deleteCompanyDelegation(UserEntity userEntity, Long companyId) { UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(userEntity.getId(),companyId); UserCompanyDelegationEntity userCompanyDelegationEntity = userCompanyDelegationRepository diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java index c9f72e6a..c7bde2db 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java @@ -16,4 +16,6 @@ public interface ApplicationEvaluationService { ApplicationEvaluationResponse getApplicationEvaluationByApplicationId(HttpServletRequest request,Long applicationId,Long assignedApplicationId); ApplicationEvaluationEntity validateApplicationEvaluation(Long applicationEvaluationId); + + ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java index 30cdaf80..0a6feb1f 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java @@ -93,4 +93,9 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe public ApplicationEvaluationEntity validateApplicationEvaluation(Long applicationEvaluationId) { return applicationEvaluationDao.validateApplicationEvaluation(applicationEvaluationId); } + + @Override + public ApplicationEvaluationEntity validateApplicationEvaluationByApplicationId(Long applicationId) { + return applicationEvaluationDao.validateApplicationEvaluationByApplicationId(applicationId); + } }