From 8473346e4bb667028d7b3851fb5cb0a948f2c7f8 Mon Sep 17 00:00:00 2001 From: nisha Date: Tue, 4 Mar 2025 15:45:09 +0530 Subject: [PATCH 1/7] Fixed application amendment issue --- .../tendermanagement/dao/ApplicationAmendmentRequestDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index 23747301..e9621798 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -1047,7 +1047,7 @@ public class ApplicationAmendmentRequestDao { List amendmentRequests = applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse( existingApplicationAmendment.getApplicationEvaluationEntity().getId()); - Boolean allClosed = amendmentRequests.stream().allMatch(amendment -> amendment.getStatus().equals(ApplicationAmendmentRequestEnum.CLOSE.getValue())); + Boolean allClosed = amendmentRequests.stream().allMatch(amendment -> (amendment.getStatus().equals(ApplicationAmendmentRequestEnum.CLOSE.getValue()) || amendment.getStatus().equals(ApplicationAmendmentRequestEnum.EXPIRED.getValue()))); ApplicationEntity application = applicationService.validateApplication(existingApplicationAmendment.getApplicationId()); ApplicationEntity oldApplicationEntityData = Utils.getClonedEntityForData(application); if (Boolean.TRUE.equals(allClosed)) { From e32ee6314f815e3ab28270ac15f9ae9bb3a279da Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 4 Mar 2025 16:41:34 +0530 Subject: [PATCH 2/7] updated code --- .../tendermanagement/dao/CompanyDocumentDao.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java index f43c6a90..0ef3349a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java @@ -1,5 +1,6 @@ package net.gepafin.tendermanagement.dao; +import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.CopyObjectRequest; import jakarta.persistence.criteria.Predicate; @@ -33,6 +34,7 @@ import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import java.net.URL; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -86,6 +88,9 @@ public class CompanyDocumentDao { @Autowired private Validator validator; + @Autowired + private AmazonS3 amazonS3; + public List uploadFileForCompany(HttpServletRequest request, Long userId, List files, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum companyDocumentSourceTypeEnum, LocalDateTime expirationDate,String name){ DocumentCategoryEntity categoryEntity = categoryDao.validateCategory(documentCategoryId); validator.validateUserWithCompany(request,companyId); @@ -271,8 +276,11 @@ public class CompanyDocumentDao { s3Client.copyObject(copyRequest); log.info("File copied successfully from {} to {}", oldS3Path, newS3Path); + URL amazonS3Url = amazonS3.getUrl(bucketName, newS3Path); + String fileUrl = amazonS3Url.toString(); + DocumentEntity entity = new DocumentEntity(); - entity.setFilePath(newS3Path); + entity.setFilePath(fileUrl); entity.setFileName(companyDocumentEntity.getFileName()); entity.setSource(DocumentSourceTypeEnum.APPLICATION.getValue()); entity.setType(documentTypeEnum.getValue()); From 8b25340838b815d964fdedff3ebd08e8c758ae2b Mon Sep 17 00:00:00 2001 From: nisha Date: Tue, 4 Mar 2025 19:15:27 +0530 Subject: [PATCH 3/7] Fixed issue for application updated date --- .../java/net/gepafin/tendermanagement/dao/ApplicationDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 0b565c89..9b3466fe 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -424,7 +424,7 @@ public class ApplicationDao { responseBean.setCallTitle(applicationEntity.getCall().getName()); responseBean.setCallEndDate(applicationEntity.getCall().getEndDate()); responseBean.setCallEndTime(applicationEntity.getCall().getEndTime()); - responseBean.setModifiedDate(applicationEntity.getCall().getUpdatedDate()); + responseBean.setModifiedDate(applicationEntity.getUpdatedDate()); responseBean.setCallId(applicationEntity.getCall().getId()); responseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); responseBean.setStatus(applicationEntity.getStatus()); From 6156cb29e9cf32d7f84cc694d97507503e440418 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 6 Mar 2025 20:00:34 +0530 Subject: [PATCH 4/7] Done ticket GEPAFINBE-180 --- .../constants/GepafinConstant.java | 2 ++ .../dao/ApplicationAmendmentRequestDao.java | 8 +++++-- .../dao/ApplicationEvaluationDao.java | 22 +++++++++++++------ .../dao/EmailNotificationDao.java | 7 ++++-- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 8f29a46f..f4d5c1e6 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -485,6 +485,8 @@ public class GepafinConstant { public static final String USAGE="usage"; public static final String LIMIT="limit"; public static final String DATA="data"; + + public static final String FILE_SELECT = "fileselect"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index e9621798..aa112e63 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -181,6 +181,7 @@ public class ApplicationAmendmentRequestDao { for (ApplicationFormEntity form : forms) { String content = form.getForm().getContent(); List> result = filterByName(content, "fileupload"); + result.addAll(filterByName(content, GepafinConstant.FILE_SELECT)); List amendmentFormFieldResponses= getIdAndLabelFromResult(result); amendmentFormFieldResponses.removeIf(amendmentFormFieldResponse -> { FieldRequest matchingRequest = fieldRequestMap.get(amendmentFormFieldResponse.getFieldId()); @@ -533,12 +534,15 @@ public class ApplicationAmendmentRequestDao { } return response; } - + private Map extractFieldIdToLabelMap(List forms) { return forms.stream() .flatMap(form -> { String content = form.getForm().getContent(); - return getIdAndLabelFromResult(filterByName(content, "fileupload")).stream(); + List> filteredResults = new ArrayList<>(); + filteredResults.addAll(filterByName(content, "fileupload")); + filteredResults.addAll(filterByName(content, GepafinConstant.FILE_SELECT)); + return getIdAndLabelFromResult(filteredResults).stream(); }) .collect(Collectors.toMap(AmendmentFormFieldResponse::getFieldId, AmendmentFormFieldResponse::getLabel)); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 336db880..7a5807a2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -378,6 +378,9 @@ public class ApplicationEvaluationDao { case "fileupload": mapFileFieldDetails(mappedField, formFieldId, applicationForm.getId(), applicationId); break; + case "fileselect": + mapFileFieldDetails(mappedField, formFieldId, applicationForm.getId(), applicationId); + break; case "checkboxes": populateOptionFieldsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId, contentBean); break; @@ -516,7 +519,7 @@ public class ApplicationEvaluationDao { 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())) { + if (("fileupload".equals(contentResponseBean.getName()) || GepafinConstant.FILE_SELECT.equals(contentResponseBean.getName())) && contentResponseBean.getId().equals(fieldResponse.getId())) { String label = null; // Set the label if available if (contentResponseBean.getSettings() != null) { @@ -1252,7 +1255,9 @@ public class ApplicationEvaluationDao { case "fileupload": populateFileDetailsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId); break; - + case "fileselect": + populateFileDetailsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId); + break; case "checkboxes": populateOptionFieldsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId, contentResponseBean); break; @@ -1402,7 +1407,7 @@ public class ApplicationEvaluationDao { // List contentResponseBeans = Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class); List contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent(); contentResponseBeans.forEach(contentResponseBean -> { - if ("fileupload".equals(contentResponseBean.getName()) && contentResponseBean.getId().equals(fieldResponse.getId())) { + if (("fileupload".equals(contentResponseBean.getName()) || GepafinConstant.FILE_SELECT.equals(contentResponseBean.getName())) && contentResponseBean.getId().equals(fieldResponse.getId())) { String label = null; if (contentResponseBean.getSettings() != null) { for (SettingResponseBean setting : contentResponseBean.getSettings()) { @@ -1564,9 +1569,10 @@ public class ApplicationEvaluationDao { mappedField.setFieldName(contentResponseBean.getName()); boolean isCheckbox = "checkboxes".equals(contentResponseBean.getName()); boolean isFileUpload = "fileupload".equals(contentResponseBean.getName()); + boolean isFileSelect = GepafinConstant.FILE_SELECT.equals(contentResponseBean.getName()); boolean isParagraph = "paragraph".equals(contentResponseBean.getName()); boolean isTable = "table".equals(contentResponseBean.getName()); - if (isFileUpload) { + if (isFileUpload || isFileSelect ) { handleFileUpload(applicationId, criteriaFormField, mappedField); } else if (isCheckbox) { handleCheckbox(applicationId, criteriaFormField, contentResponseBean, mappedField); @@ -1773,7 +1779,7 @@ public class ApplicationEvaluationDao { List contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent(); for (ContentResponseBean contentResponseBean : contentResponseBeans) { - if ("fileupload".equals(contentResponseBean.getName())) { + if ("fileupload".equals(contentResponseBean.getName()) || GepafinConstant.FILE_SELECT.equals(contentResponseBean.getName())) { String fieldId = contentResponseBean.getId(); Long applicationFormId = applicationForm.getId(); @@ -2103,7 +2109,8 @@ public class ApplicationEvaluationDao { List contentResponseBeans=evaluationFormDao.convertEvaluationFormEntityToEvaluationFormResponseBean(evaluationFormEntity).getContent(); for (ContentResponseBean contentResponseBean:contentResponseBeans){ - if(Boolean.TRUE.equals(contentResponseBean.getName().equals("fileupload"))) { + if(Boolean.TRUE.equals(contentResponseBean.getName().equals("fileupload")) || + Boolean.TRUE.equals(contentResponseBean.getName().equals(GepafinConstant.FILE_SELECT))){ if (contentResponseBean.getId().equals(applicationFormFieldRequestBean.getFieldId())) { Object fieldValueObject = applicationFormFieldRequestBean.getFieldValue(); if (fieldValueObject instanceof String) { @@ -2128,7 +2135,8 @@ public class ApplicationEvaluationDao { for (ApplicationEvaluationFormFieldEntity applicationEvaluationFormFieldEntity : evaluationFormFieldEntities) { Optional fileUploadContent = contentResponseBeans.stream() - .filter(contentResponseBean -> "fileupload".equals(contentResponseBean.getName()) && + .filter(contentResponseBean -> ("fileupload".equals(contentResponseBean.getName()) || + GepafinConstant.FILE_SELECT.equals(contentResponseBean.getName())) && contentResponseBean.getId().equals(applicationEvaluationFormFieldEntity.getFieldId())) .findFirst(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index 25b54319..185d1c62 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -184,8 +184,11 @@ public class EmailNotificationDao { // Extract data from forms for (ApplicationFormEntity form : forms) { String content = form.getForm().getContent(); - List> result = filterByName(content, "fileupload"); - allFormFields.addAll(getIdAndLabelFromResult(result)); + List> fileUploadResult = filterByName(content, "fileupload"); + allFormFields.addAll(getIdAndLabelFromResult(fileUploadResult)); + + List> fileSelectResult = filterByName(content,GepafinConstant.FILE_SELECT); + allFormFields.addAll(getIdAndLabelFromResult(fileSelectResult)); } // Process allFormFields and generate bullet points From 8430662578239f96c2aa9ac0c9f0e3a5a700bf9e Mon Sep 17 00:00:00 2001 From: Piyush Date: Mon, 10 Mar 2025 16:49:27 +0530 Subject: [PATCH 5/7] Fixed number parsing issue --- .../net/gepafin/tendermanagement/util/FieldValidator.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java index caccec60..6b286642 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java @@ -63,8 +63,8 @@ public class FieldValidator { if (value != null) { if(min!=null) { if(contentResponseBean.getName().equals(GepafinConstant.NUMBER_INPUT)) { - long numericValue = Long.parseLong(value); // Convert String to Long - if (numericValue < min) { + double numericValue = Double.parseDouble(value); // Use double instead of long + if (numericValue < min.doubleValue()) { errors.add(MessageFormat.format( Translator.toLocale(GepafinConstant.VALIDATION_FIELD_MIN), fieldLabel, min)); } @@ -90,8 +90,8 @@ public class FieldValidator { if (value != null) { if (max != null) { if(contentResponseBean.getName().equals(GepafinConstant.NUMBER_INPUT)) { - long numericValue = Long.parseLong(value); // Convert String to Long - if (numericValue > max) { + double numericValue = Double.parseDouble(value); // Convert String to Long + if (numericValue > max.doubleValue()) { errors.add(MessageFormat.format( Translator.toLocale(GepafinConstant.VALIDATION_FIELD_MAX), fieldLabel, max)); } From 126e9fe94b88cdd08b66bccefd44c4826ef26f21 Mon Sep 17 00:00:00 2001 From: Piyush Date: Tue, 11 Mar 2025 13:00:12 +0530 Subject: [PATCH 6/7] Fixed null request in version history logging --- .../gepafin/tendermanagement/dao/ApplicationEvaluationDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 7a5807a2..e43ef991 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -745,7 +745,7 @@ public class ApplicationEvaluationDao { applicationAmendmentRequestEntities.forEach(applicationAmendmentRequestEntity->{ ApplicationAmendmentRequestEntity oldEntity = Utils.getClonedEntityForData(applicationAmendmentRequestEntity); updateAmendment(applicationAmendmentRequestEntity, amendmentFormFieldsMap.get(applicationAmendmentRequestEntity.getId())); - loggingUtil.addVersionHistory(VersionHistoryRequest.builder().actionType(VersionActionTypeEnum.UPDATE).oldData(oldEntity).newData(applicationAmendmentRequestEntity).build()); + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldEntity).newData(applicationAmendmentRequestEntity).build()); }); applicationAmendmentRequestRepository.saveAll(applicationAmendmentRequestEntities); From dc2e0548cb9d7e068a946119d553d59d59d7e421 Mon Sep 17 00:00:00 2001 From: nisha Date: Mon, 17 Mar 2025 16:36:58 +0530 Subject: [PATCH 7/7] Fixed issue in form field map --- .../tendermanagement/dao/ApplicationEvaluationDao.java | 4 +++- .../gepafin/tendermanagement/dao/AssignedApplicationsDao.java | 1 + .../model/response/AssignedApplicationsResponse.java | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index e43ef991..0fd56e6c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -887,7 +887,9 @@ public class ApplicationEvaluationDao { amendmentFormField.setValid(amendmentDetailsRequest.getValid()); } }); - applicationAmendmentRequestEntity.setFormFields(Utils.convertListToJsonString(formFieldsMap.values().stream().toList())); + if(Boolean.FALSE.equals(CollectionUtils.isEmpty(formFieldsMap))) { + applicationAmendmentRequestEntity.setFormFields(Utils.convertListToJsonString(formFieldsMap.values().stream().toList())); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java index 1105a7fb..c09c0fb6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/AssignedApplicationsDao.java @@ -214,6 +214,7 @@ public class AssignedApplicationsDao { assignedApplicationsResponse.setAppointmentTemplateId(application.getCall().getAppointmentTemplateId()); assignedApplicationsResponse.setNdg(application.getNdg()); assignedApplicationsResponse.setAppointmentId(application.getAppointmentId()); + assignedApplicationsResponse.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); 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 7f80e8f0..58a6e7da 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/AssignedApplicationsResponse.java @@ -1,6 +1,8 @@ package net.gepafin.tendermanagement.model.response; +import com.amazonaws.services.dynamodbv2.xspec.S; import lombok.Data; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.AssignedApplicationEnum; import net.gepafin.tendermanagement.enums.EvaluationVersionEnum; import net.gepafin.tendermanagement.model.BaseBean; @@ -28,6 +30,7 @@ public class AssignedApplicationsResponse extends BaseBean { private EvaluationVersionEnum evaluationVersion; private String ndg; private String appointmentId; + private ApplicationStatusTypeEnum applicationStatus; }