From 389edf3b5596d5c682d11f9a710fb274c2445cd5 Mon Sep 17 00:00:00 2001 From: rajeshkhore Date: Thu, 5 Dec 2024 21:42:51 +0530 Subject: [PATCH 1/9] Added application protocol in amendement template --- .../gepafin/tendermanagement/dao/EmailNotificationDao.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index 4bf99110..42eb2ee0 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -152,9 +152,9 @@ public class EmailNotificationDao { ApplicationEntity applicationEntity = applicationService.validateApplication(applicationAmendmentRequestEntity.getApplicationId()); Map bodyPlaceholders = new HashMap<>(); bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); - bodyPlaceholders.put("{{protocol_number}}", applicationAmendmentRequestEntity.getProtocol().getProtocolNumber().toString()); - bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatLocalDateTime(applicationAmendmentRequestEntity.getProtocol().getCreatedDate(), GepafinConstant.DD_MM_YYYY)); - bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationAmendmentRequestEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); + bodyPlaceholders.put("{{protocol_number}}", applicationEntity.getProtocol().getProtocolNumber().toString()); + bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatLocalDateTime(applicationEntity.getProtocol().getCreatedDate(), GepafinConstant.DD_MM_YYYY)); + bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); bodyPlaceholders.put("{{response_days}}", applicationAmendmentRequestEntity.getResponseDays().toString()); try { From 58e01f006c8694c82c2894d9f218cccf5456c744 Mon Sep 17 00:00:00 2001 From: nisha Date: Thu, 5 Dec 2024 21:12:30 +0530 Subject: [PATCH 2/9] 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 f229cbc77d5061c96859b0e1e6c79b236d8acdd8 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 5 Dec 2024 22:12:24 +0530 Subject: [PATCH 3/9] 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); + } } From d8b5b318dd84e95fcb94e10ab6ad378361ac1290 Mon Sep 17 00:00:00 2001 From: rajesh Date: Fri, 6 Dec 2024 12:49:07 +0530 Subject: [PATCH 4/9] Done ticket GEPAFINBE-122 --- .../dao/ApplicationEvaluationDao.java | 143 +++++++++++------- .../ApplicationEvaluationResponse.java | 2 + .../service/impl/AmazonS3ServiceImpl.java | 9 +- 3 files changed, 99 insertions(+), 55 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index b8fc0b35..43440acb 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -12,10 +12,7 @@ import net.gepafin.tendermanagement.enums.*; import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.*; -import net.gepafin.tendermanagement.service.ApplicationService; -import net.gepafin.tendermanagement.service.AssignedApplicationsService; -import net.gepafin.tendermanagement.service.CallService; -import net.gepafin.tendermanagement.service.UserService; +import net.gepafin.tendermanagement.service.*; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.Utils; @@ -93,6 +90,9 @@ public class ApplicationEvaluationDao { @Autowired private HttpServletRequest request; + @Autowired + private CompanyService companyService; + private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) { ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity(); @@ -156,28 +156,32 @@ public class ApplicationEvaluationDao { private void setCriteriaResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List evaluationCriterias) { List criteriaResponsesFromEntity = entity.getCriteria() != null ? - Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { - }) : + Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) : new ArrayList<>(); - List criteriaResponsesFromDB = getCriteriaResponse(entity.getApplicationId()); addMissingCriteriaResponses(criteriaResponsesFromEntity, criteriaResponsesFromDB, entity.getApplicationId()); - criteriaResponsesFromEntity.forEach(criteriaResponse -> { - EvaluationCriteriaEntity matchingEvaluationCriteria = evaluationCriterias.stream() - .filter(evaluationCriteria -> evaluationCriteria.getId().equals(criteriaResponse.getId())).findFirst().orElse(null); - if (matchingEvaluationCriteria != null) { - criteriaResponse.setLabel(matchingEvaluationCriteria.getLookupData().getValue()); - criteriaResponse.setMaxScore(matchingEvaluationCriteria.getScore()); - - List mappedFields = getMappedFieldsForCriteria(matchingEvaluationCriteria.getId(), entity.getApplicationId()); - criteriaResponse.setCriteriaMappedFields(mappedFields); - } - }); + criteriaResponsesFromEntity = criteriaResponsesFromEntity.stream() + .filter(criteriaResponse -> { + EvaluationCriteriaEntity matchingEvaluationCriteria = evaluationCriterias.stream() + .filter(evaluationCriteria -> evaluationCriteria.getId().equals(criteriaResponse.getId())) // Find matching criteria by ID + .findFirst() + .orElse(null); + if (matchingEvaluationCriteria != null) { + criteriaResponse.setLabel(matchingEvaluationCriteria.getLookupData().getValue()); + criteriaResponse.setMaxScore(matchingEvaluationCriteria.getScore()); + List mappedFields = getMappedFieldsForCriteria(matchingEvaluationCriteria.getId(), entity.getApplicationId()); + criteriaResponse.setCriteriaMappedFields(mappedFields); + return true; + } + return false; + }) + .collect(Collectors.toList()); response.setCriteria(criteriaResponsesFromEntity); } + private void addMissingCriteriaResponses(List criteriaResponsesFromEntity, List criteriaResponsesFromDB, Long applicationId) { Set existingCriteriaIds = criteriaResponsesFromEntity.stream().map(CriteriaResponse::getId).collect(Collectors.toSet()); @@ -299,27 +303,30 @@ public class ApplicationEvaluationDao { private void setChecklistResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List checklistEntities) { - List checklistResponsesFromEntity = entity.getChecklist() != null ? - Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { - }) : + Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) : new ArrayList<>(); - List checklistResponsesFromDB = getChecklistResponse(entity.getApplicationId()); addMissingChecklistResponses(checklistResponsesFromEntity, checklistResponsesFromDB); - checklistResponsesFromEntity.forEach(checklistResponse -> { - CallTargetAudienceChecklistEntity matchingChecklist = checklistEntities.stream().filter(checklistEntity -> checklistEntity.getId().equals(checklistResponse.getId())) - .findFirst().orElse(null); - - if (matchingChecklist != null) { - checklistResponse.setLabel(matchingChecklist.getLookupData().getValue()); - } - }); + checklistResponsesFromEntity = checklistResponsesFromEntity.stream() + .filter(checklistResponse -> { + CallTargetAudienceChecklistEntity matchingChecklist = checklistEntities.stream() + .filter(checklistEntity -> checklistEntity.getId().equals(checklistResponse.getId())) // Find matching checklist by ID + .findFirst() + .orElse(null); + if (matchingChecklist != null) { + checklistResponse.setLabel(matchingChecklist.getLookupData().getValue()); + return true; + } + return false; + }) + .collect(Collectors.toList()); response.setChecklist(checklistResponsesFromEntity); } + private void addMissingChecklistResponses(List checklistResponsesFromEntity, List checklistResponsesFromDB) { Set existingChecklistIds = checklistResponsesFromEntity.stream().map(ChecklistResponse::getId).collect(Collectors.toSet()); @@ -333,26 +340,31 @@ public class ApplicationEvaluationDao { private void setFieldResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List applicationFormEntities) { - List fieldResponsesFromEntity = entity.getFile() != null ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { - }) : new ArrayList<>(); + List fieldResponsesFromEntity = entity.getFile() != null ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) : new ArrayList<>(); List fieldResponsesFromDB = getFieldResponses(entity.getApplicationId()); addMissingFieldResponses(fieldResponsesFromEntity, fieldResponsesFromDB); Set processedFieldIds = new HashSet<>(); + List validFieldResponses = new ArrayList<>(); fieldResponsesFromEntity.forEach(fieldResponse -> { if (processedFieldIds.contains(fieldResponse.getId())) { return; } + final Boolean[] allDocumentsDeleted = {true}; + List documentResponseBeans = new ArrayList<>(); + applicationFormEntities.forEach(applicationForm -> { FormEntity formEntity = applicationForm.getForm(); if (formEntity != null) { -// List contentResponseBeans = Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class); + // Convert the form to a list of content response beans List contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent(); contentResponseBeans.forEach(contentResponseBean -> { + // Check if this is a file upload field that matches the current field response if ("fileupload".equals(contentResponseBean.getName()) && contentResponseBean.getId().equals(fieldResponse.getId())) { String label = null; + // Set the label if available if (contentResponseBean.getSettings() != null) { for (SettingResponseBean setting : contentResponseBean.getSettings()) { if ("label".equals(setting.getName())) { @@ -371,36 +383,43 @@ public class ApplicationEvaluationDao { ApplicationFormFieldEntity formField = optionalFormField.get(); if (formField.getFieldValue() != null) { String[] documentIds = formField.getFieldValue().split(","); - List documentResponseBeans = new ArrayList<>(); for (String docId : documentIds) { - if (Boolean.FALSE.equals(docId.isEmpty())){ + if (!docId.trim().isEmpty()) { Long documentId = Long.valueOf(docId.trim()); + documentRepository.findByIdAndNotDeleted(documentId).ifPresent(documentEntity -> { - DocumentResponseBean responseBean = new DocumentResponseBean(); - responseBean.setId(documentEntity.getId()); - responseBean.setName(documentEntity.getFileName()); - responseBean.setType(DocumentTypeEnum.valueOf(documentEntity.getType())); - responseBean.setSource(DocumentSourceTypeEnum.valueOf(documentEntity.getSource())); - responseBean.setSourceId(documentEntity.getSourceId()); - responseBean.setFilePath(documentEntity.getFilePath()); - responseBean.setCreatedDate(documentEntity.getCreatedDate()); - responseBean.setUpdatedDate(documentEntity.getUpdatedDate()); - documentResponseBeans.add(responseBean); + if (documentEntity != null && !documentEntity.getIsDeleted()) { + DocumentResponseBean responseBean = new DocumentResponseBean(); + responseBean.setId(documentEntity.getId()); + responseBean.setName(documentEntity.getFileName()); + responseBean.setType(DocumentTypeEnum.valueOf(documentEntity.getType())); + responseBean.setSource(DocumentSourceTypeEnum.valueOf(documentEntity.getSource())); + responseBean.setSourceId(documentEntity.getSourceId()); + responseBean.setFilePath(documentEntity.getFilePath()); + responseBean.setCreatedDate(documentEntity.getCreatedDate()); + responseBean.setUpdatedDate(documentEntity.getUpdatedDate()); + documentResponseBeans.add(responseBean); + allDocumentsDeleted[0] = false; + } }); } } - - fieldResponse.setFileDetail(documentResponseBeans); } } - processedFieldIds.add(fieldResponse.getId()); } }); } }); + + if (Boolean.FALSE.equals(allDocumentsDeleted[0]) && Boolean.FALSE.equals(documentResponseBeans.isEmpty())) { + fieldResponse.setFileDetail(documentResponseBeans); + validFieldResponses.add(fieldResponse); + } + + processedFieldIds.add(fieldResponse.getId()); }); - response.setFiles(fieldResponsesFromEntity); + response.setFiles(validFieldResponses); } private void addMissingFieldResponses(List fieldResponsesFromEntity, List fieldResponsesFromDB) { @@ -417,6 +436,9 @@ public class ApplicationEvaluationDao { private void setApplicationDetails(ApplicationEvaluationResponse response, ApplicationEvaluationEntity entity) { ApplicationEntity application = applicationService.validateApplication(entity.getApplicationId() != null ? entity.getApplicationId() : null); + AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository + .findByApplicationIdAndIsDeletedFalse(entity.getApplicationId()).orElse(null); + UserEntity user = userService.validateUser(application.getUserId()); CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId()); @@ -426,12 +448,21 @@ public class ApplicationEvaluationDao { String beneficiary = String.join(" ", firstName, lastName).trim(); response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setBeneficiary(beneficiary); + response.setSubmissionDate(application.getSubmissionDate()); response.setMinScore(call.getThreshold() != null ? call.getThreshold() : null); response.setCallName(application.getCall().getName() != null ? application.getCall().getName() : null); response.setProtocolNumber((application.getProtocol() != null && application.getProtocol().getProtocolNumber() != null) ? application.getProtocol().getProtocolNumber() : null); - response.setSubmissionDate(application.getSubmissionDate() != null ? application.getSubmissionDate() : null); + if (assignedApplications != null) { + response.setAssignedAt(assignedApplications.getAssignedAt()); + } + response.setEvaluationEndDate(entity.getEndDate()); + LocalDateTime callEndDate = application.getCall().getEndDate(); response.setCallEndDate(callEndDate); + if (application.getCompanyId() != null) { + CompanyEntity company = companyService.validateCompany(application.getCompanyId()); + response.setCompanyName(company.getCompanyName()); + } } @@ -961,16 +992,24 @@ public class ApplicationEvaluationDao { private void setApplicationDetails(ApplicationEvaluationResponse response, Long applicationId, UserEntity user) { ApplicationEntity application = applicationService.validateApplication(applicationId); + AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository + .findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); userService.validateUser(application.getUserId()); String firstName = user.getFirstName() != null ? user.getFirstName() : ""; String lastName = user.getLastName() != null ? user.getLastName() : ""; String beneficiary = String.join(" ", firstName, lastName).trim(); response.setBeneficiary(beneficiary); - + response.setSubmissionDate(application.getSubmissionDate()); response.setCallName(application.getCall().getName() != null ? application.getCall().getName() : null); response.setProtocolNumber((application.getProtocol() != null && application.getProtocol().getProtocolNumber() != null) ? application.getProtocol().getProtocolNumber() : null); - response.setSubmissionDate(application.getSubmissionDate() != null ? application.getSubmissionDate() : null); + if (assignedApplications != null) { + response.setAssignedAt(assignedApplications.getAssignedAt()); + } + if (application.getCompanyId() != null) { + CompanyEntity company = companyService.validateCompany(application.getCompanyId()); + response.setCompanyName(company.getCompanyName()); + } } private Optional findFormFieldValue(Long applicationId, String formFieldId) { diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java index 8d144e50..3e5c3834 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java @@ -30,4 +30,6 @@ public class ApplicationEvaluationResponse { private LocalDateTime submissionDate; private LocalDateTime evaluationEndDate; private LocalDateTime callEndDate; + private String companyName; + private LocalDateTime assignedAt; } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java index 3ff04c70..3af50f6c 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -87,9 +88,11 @@ public class AmazonS3ServiceImpl implements AmazonS3Service { if(Boolean.FALSE.equals(isTestProfileActivated())) { amazonS3.putObject(bucketName, path, inputStream, objectMetadata); } - path =s3Url + s3Folder +"/"+ fileName; - log.info("File '{}' uploaded successfully to Amazon S3 with URL: {}", fileName, path); - return path; + //getting actual encoded s3 file path + URL amazonS3Url = amazonS3.getUrl(bucketName, path); + String fileUrl = amazonS3Url.toString(); + log.info("File '{}' uploaded successfully to Amazon S3 with URL: {}", fileName, fileUrl); + return fileUrl; } @Override From 88eaa8f9b185a4bc7a7bb9127f378b1c854aa7bc Mon Sep 17 00:00:00 2001 From: rajesh Date: Fri, 6 Dec 2024 15:35:47 +0530 Subject: [PATCH 5/9] Updated code --- .../tendermanagement/dao/ApplicationEvaluationDao.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 43440acb..72ba3ad2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -443,8 +443,8 @@ public class ApplicationEvaluationDao { CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId()); - String firstName = user.getFirstName() != null ? user.getFirstName() : ""; - String lastName = user.getLastName() != null ? user.getLastName() : ""; + String firstName = user.getBeneficiary().getFirstName() != null ? user.getBeneficiary().getFirstName() : ""; + String lastName = user.getBeneficiary().getLastName() != null ? user.getBeneficiary().getLastName() : ""; String beneficiary = String.join(" ", firstName, lastName).trim(); response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setBeneficiary(beneficiary); @@ -995,8 +995,9 @@ public class ApplicationEvaluationDao { AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository .findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); userService.validateUser(application.getUserId()); - String firstName = user.getFirstName() != null ? user.getFirstName() : ""; - String lastName = user.getLastName() != null ? user.getLastName() : ""; + + String firstName = user.getBeneficiary().getFirstName() != null ? user.getBeneficiary().getFirstName() : ""; + String lastName = user.getBeneficiary().getLastName() != null ? user.getBeneficiary().getLastName() : ""; String beneficiary = String.join(" ", firstName, lastName).trim(); response.setBeneficiary(beneficiary); From 88aed061cc1e0e6c4e180d27b053d86b59cf8c82 Mon Sep 17 00:00:00 2001 From: rajesh Date: Fri, 6 Dec 2024 22:17:02 +0530 Subject: [PATCH 6/9] Fixed s3 download issue --- .../service/impl/AmazonS3ServiceImpl.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java index 3af50f6c..8221117a 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/AmazonS3ServiceImpl.java @@ -30,6 +30,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -118,12 +120,15 @@ public class AmazonS3ServiceImpl implements AmazonS3Service { public InputStream getFile(String s3Folder, String filePath) { try { String fileName = Utils.extractFileName(filePath); - String path = s3Folder + "/" + fileName; + // Decode the file name to handle special characters like '+' correctly + String decodedFileName = URLDecoder.decode(fileName, StandardCharsets.UTF_8.toString()); + + String path = s3Folder + "/" + decodedFileName; GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, path); S3Object s3Object = amazonS3.getObject(getObjectRequest); log.info("File fetched successfully from Amazon S3: {}", fileName); return s3Object.getObjectContent(); - } catch (AmazonS3Exception e) { + } catch (Exception e) { log.error("Error occurred while getting file from Amazon S3: {}", e); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.GET_ERROR_S3)); From 1b4b4fa3ccf51349774f694a83960a1db103a80f Mon Sep 17 00:00:00 2001 From: rajesh Date: Sat, 14 Dec 2024 12:11:10 +0530 Subject: [PATCH 7/9] Fixed application form issue --- .../tendermanagement/dao/ApplicationDao.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 1240aa90..8803d46d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -455,8 +455,9 @@ public class ApplicationDao { if (applicationFormFieldEntities == null || applicationFormFieldEntities.isEmpty()) { applicationFormFieldEntity.setApplicationForm(applicationFormEntity); } else { + applicationFormFieldEntity.setApplicationForm(applicationFormEntity); for (ApplicationFormFieldEntity applicationFormFieldEntity1 : applicationFormFieldEntities) { - if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId())) { + if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId()) && checkIfRequestFieldIsDifferent(applicationFormFieldEntity1, applicationFormFieldRequestBean)) { applicationFormFieldEntity = applicationFormFieldEntity1; oldApplicationFormFieldData = Utils.getClonedEntityForData(applicationFormFieldEntity); if (applicationFormEntity.getForm().getId().equals(applicationFormEntity.getApplication().getCall().getInitialForm())) { @@ -464,8 +465,6 @@ public class ApplicationDao { } actionType = VersionActionTypeEnum.UPDATE; break; - } else { - applicationFormFieldEntity.setApplicationForm(applicationFormEntity); } } } @@ -495,7 +494,30 @@ public class ApplicationDao { return applicationFormField; } - void updateDocumentDeletionStatus(ApplicationFormFieldEntity applicationFormFieldEntity, ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity, List newDocumentIds, + private Boolean checkIfRequestFieldIsDifferent(ApplicationFormFieldEntity applicationFormFieldEntity, + ApplicationFormFieldRequestBean applicationFormFieldRequestBean) { + + // Retrieve the field values from both objects + String entityFieldValue = applicationFormFieldEntity.getFieldValue(); + Object requestFieldValue = applicationFormFieldRequestBean.getFieldValue(); + + // Check if both are null + if (entityFieldValue == null && requestFieldValue == null) { + return false; // No difference if both are null + } + + // Compare values + Boolean check = !Objects.equals(entityFieldValue, requestFieldValue); + + // Additional comparison if both are non-null + if (Boolean.TRUE.equals(check) && entityFieldValue != null && requestFieldValue != null) { + check = !entityFieldValue.equals(requestFieldValue.toString()); + } + + return check; + } + + void updateDocumentDeletionStatus(ApplicationFormFieldEntity applicationFormFieldEntity, ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity, List newDocumentIds, List preInstructorDocumentId,boolean isPreInstructor) { if (newDocumentIds == null) { newDocumentIds = Collections.emptyList(); From 23760300950fcda8f82fe5d0e96d348ef96d95b2 Mon Sep 17 00:00:00 2001 From: rajesh Date: Sat, 14 Dec 2024 12:40:40 +0530 Subject: [PATCH 8/9] updated code --- .../net/gepafin/tendermanagement/dao/ApplicationDao.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 8803d46d..0feafec8 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -455,16 +455,17 @@ public class ApplicationDao { if (applicationFormFieldEntities == null || applicationFormFieldEntities.isEmpty()) { applicationFormFieldEntity.setApplicationForm(applicationFormEntity); } else { - applicationFormFieldEntity.setApplicationForm(applicationFormEntity); for (ApplicationFormFieldEntity applicationFormFieldEntity1 : applicationFormFieldEntities) { - if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId()) && checkIfRequestFieldIsDifferent(applicationFormFieldEntity1, applicationFormFieldRequestBean)) { + if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId())) { applicationFormFieldEntity = applicationFormFieldEntity1; oldApplicationFormFieldData = Utils.getClonedEntityForData(applicationFormFieldEntity); - if (applicationFormEntity.getForm().getId().equals(applicationFormEntity.getApplication().getCall().getInitialForm())) { + if (applicationFormEntity.getForm().getId().equals(applicationFormEntity.getApplication().getCall().getInitialForm()) && checkIfRequestFieldIsDifferent(applicationFormFieldEntity1, applicationFormFieldRequestBean)) { validateRequiredFields(applicationFormEntity.getForm(), applicationFormEntity.getApplication(), applicationFormFieldRequestBean.getFieldId()); } actionType = VersionActionTypeEnum.UPDATE; break; + } else { + applicationFormFieldEntity.setApplicationForm(applicationFormEntity); } } } From e083ed39378fb1891d1562a7631bcad4b4bdae8b Mon Sep 17 00:00:00 2001 From: nisha Date: Mon, 16 Dec 2024 14:46:34 +0530 Subject: [PATCH 9/9] Disable auto email sending --- .../scheduler/ApplicationAmendmentScheduler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/scheduler/ApplicationAmendmentScheduler.java b/src/main/java/net/gepafin/tendermanagement/scheduler/ApplicationAmendmentScheduler.java index a3112a1c..56cb3663 100644 --- a/src/main/java/net/gepafin/tendermanagement/scheduler/ApplicationAmendmentScheduler.java +++ b/src/main/java/net/gepafin/tendermanagement/scheduler/ApplicationAmendmentScheduler.java @@ -85,7 +85,7 @@ public class ApplicationAmendmentScheduler { /** This code is responsible for adding a version history log for the "Update Application Amendment" operation. **/ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(httpServletRequest).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAmendmentRequestEntity).newData(request).build()); - emailNotificationDao.sendApplicationFailureNotificationEmail(request); +// emailNotificationDao.sendApplicationFailureNotificationEmail(request); log.info("Updated status to CLOSED for ApplicationAmendmentRequest with ID: {}", request.getId()); } catch (Exception e) { log.error("Error expiring ApplicationAmendmentRequest with ID {}: {}", request.getId(), e.getMessage(),