From 334f4b3a799320874eb621e42c4500b846c4ecca Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 20 Nov 2024 11:40:12 +0530 Subject: [PATCH 1/2] Issue With Application Deleted Documents --- .../dao/ApplicationAmendmentRequestDao.java | 5 +- .../tendermanagement/dao/ApplicationDao.java | 66 +++++++++- .../dao/ApplicationEvaluationDao.java | 113 ++++++++++-------- 3 files changed, 126 insertions(+), 58 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index d685796f..bead6d7a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -96,6 +96,8 @@ public class ApplicationAmendmentRequestDao { @Autowired private Validator validator; + @Autowired + private ApplicationDao applicationDao; public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(Long applicationEvaluationId) { log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId); @@ -556,11 +558,10 @@ public class ApplicationAmendmentRequestDao { // Add valid new document IDs from the request existingDocumentIds.addAll(validDocumentIds); - + applicationDao.updateDocumentDeletionStatus(formEntity, updatedFormField, formEntity.getApplicationForm().getForm(), null,validDocumentIds); // Set the combined document IDs back as the field value formEntity.setFieldValue(String.join(",", existingDocumentIds)); applicationFormFieldRepository.save(formEntity); - log.info("Updated field value for application ID {} and field ID {} with document IDs {}", applicationAmendment.getApplicationId(), updatedFormField.getFieldId(), String.join(",", existingDocumentIds)); fieldUpdated = true; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index cf2e08c2..1f573195 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -405,7 +405,7 @@ public class ApplicationDao { ApplicationFormFieldEntity applicationFormFieldEntity=null; - validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity); + List newDocumentIds =validateFileUploadDocuments(applicationFormFieldRequestBean, formEntity); if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){ applicationFormFieldEntity = new ApplicationFormFieldEntity(); @@ -427,13 +427,73 @@ public class ApplicationDao { Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId()); if(applicationFormFieldRequestBean.getFieldValue() !=null ) { - applicationFormFieldEntity.setFieldValue(Utils.convertObjectToJsonString(applicationFormFieldRequestBean.getFieldValue())); - } + updateDocumentDeletionStatus(applicationFormFieldEntity, applicationFormFieldRequestBean,formEntity,newDocumentIds,null); + applicationFormFieldEntity.setFieldValue(Utils.convertObjectToJsonString(applicationFormFieldRequestBean.getFieldValue())); + } if(applicationFormFieldRequestBean.getFieldValue() ==null ) { applicationFormFieldEntity.setFieldValue(null); } return applicationFormFieldRepository.save(applicationFormFieldEntity); } + void updateDocumentDeletionStatus(ApplicationFormFieldEntity applicationFormFieldEntity, ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity, List newDocumentIds, + List preInstructorDocumentId) { + if (newDocumentIds == null) { + newDocumentIds = Collections.emptyList(); + } + if (preInstructorDocumentId == null) { + preInstructorDocumentId = Collections.emptyList(); + } + + List contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent(); + for (ContentResponseBean contentResponseBean : contentResponseBeans) { + if (Boolean.FALSE.equals(contentResponseBean.getName().equals("fileupload"))) { + return; + } + } + + List currentDocumentIds = parseDocumentIds(applicationFormFieldEntity.getFieldValue()); + if (Boolean.FALSE.equals(newDocumentIds.isEmpty())) { + List finalNewDocumentIds = newDocumentIds; + List documentsToDelete = currentDocumentIds.stream() + .filter(docId -> !finalNewDocumentIds.contains(docId)) + .toList(); + documentsToDelete.forEach(docId -> documentService.deleteFile(docId)); + } + + if (Boolean.FALSE.equals(preInstructorDocumentId.isEmpty())){ + List preInstructorDocIds = preInstructorDocumentId.stream() + .map(Long::valueOf) + .collect(Collectors.toList()); + + List documentsToDelete = currentDocumentIds.stream() + .filter(docId -> !preInstructorDocIds.contains(docId)) + .toList(); + documentsToDelete.forEach(docId -> documentService.deleteFile(docId)); + } + } + + + private List parseDocumentIds(String fieldValue) { + if (fieldValue == null || fieldValue.isEmpty()) { + return Collections.emptyList(); + } + if (fieldValue.contains(",")) { + return Arrays.stream(fieldValue.split(",")) + .map(String::trim) + .map(Long::parseLong) + .collect(Collectors.toList()); + } else { + try { + return Collections.singletonList(Long.parseLong(fieldValue.trim())); + } catch (NumberFormatException e) { + e.printStackTrace(); + return Collections.emptyList(); + } + } + } + + + private List validateFileUploadDocuments(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity) { List documentIds=null; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 2bcbade9..9ab569b0 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -249,19 +249,21 @@ public class ApplicationEvaluationDao { List documentResponseBeans = new ArrayList<>(); for (String docId : documentIds) { - 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 (Boolean.FALSE.equals(docId.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); + }); + } } mappedField.setFieldValue(documentResponseBeans); } @@ -351,19 +353,21 @@ public class ApplicationEvaluationDao { List documentResponseBeans = new ArrayList<>(); for (String docId : documentIds) { - 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 (Boolean.FALSE.equals(docId.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); + }); + } } fieldResponse.setFileDetail(documentResponseBeans); @@ -888,19 +892,21 @@ public class ApplicationEvaluationDao { List documentResponseBeans = new ArrayList<>(); for (String docId : documentIds) { - 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 (Boolean.FALSE.equals(docId.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); + }); + } } fieldResponse.setFileDetail(documentResponseBeans); @@ -1247,21 +1253,22 @@ public class ApplicationEvaluationDao { List documentResponseBeans = new ArrayList<>(); for (String docId : documentIds) { - 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 (Boolean.FALSE.equals(docId.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); + }); + } } - fieldResponse.setFileDetail(documentResponseBeans); fieldResponses.add(fieldResponse); } From 2a63474fda24d85c1863a1098a6a4abb424d8710 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 20 Nov 2024 14:59:53 +0530 Subject: [PATCH 2/2] Updated code --- .../dao/ApplicationAmendmentRequestDao.java | 2 +- .../tendermanagement/dao/ApplicationDao.java | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index bead6d7a..df073dd9 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -558,7 +558,7 @@ public class ApplicationAmendmentRequestDao { // Add valid new document IDs from the request existingDocumentIds.addAll(validDocumentIds); - applicationDao.updateDocumentDeletionStatus(formEntity, updatedFormField, formEntity.getApplicationForm().getForm(), null,validDocumentIds); + applicationDao.updateDocumentDeletionStatus(formEntity, updatedFormField, formEntity.getApplicationForm().getForm(), null,validDocumentIds,true); // Set the combined document IDs back as the field value formEntity.setFieldValue(String.join(",", existingDocumentIds)); applicationFormFieldRepository.save(formEntity); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 1f573195..19adbb3c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -427,16 +427,17 @@ public class ApplicationDao { Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId()); if(applicationFormFieldRequestBean.getFieldValue() !=null ) { - updateDocumentDeletionStatus(applicationFormFieldEntity, applicationFormFieldRequestBean,formEntity,newDocumentIds,null); + updateDocumentDeletionStatus(applicationFormFieldEntity, applicationFormFieldRequestBean,formEntity,newDocumentIds,null,false); applicationFormFieldEntity.setFieldValue(Utils.convertObjectToJsonString(applicationFormFieldRequestBean.getFieldValue())); } if(applicationFormFieldRequestBean.getFieldValue() ==null ) { + updateDocumentDeletionStatus(applicationFormFieldEntity, applicationFormFieldRequestBean,formEntity,newDocumentIds,null,false); applicationFormFieldEntity.setFieldValue(null); } return applicationFormFieldRepository.save(applicationFormFieldEntity); } void updateDocumentDeletionStatus(ApplicationFormFieldEntity applicationFormFieldEntity, ApplicationFormFieldRequestBean applicationFormFieldRequestBean, FormEntity formEntity, List newDocumentIds, - List preInstructorDocumentId) { + List preInstructorDocumentId,boolean isPreInstructor) { if (newDocumentIds == null) { newDocumentIds = Collections.emptyList(); } @@ -450,17 +451,22 @@ public class ApplicationDao { return; } } - + if(!isPreInstructor){ List currentDocumentIds = parseDocumentIds(applicationFormFieldEntity.getFieldValue()); - if (Boolean.FALSE.equals(newDocumentIds.isEmpty())) { + if (Boolean.TRUE.equals(newDocumentIds.isEmpty())) { + currentDocumentIds.forEach(docId -> documentService.deleteFile(docId)); + } else { List finalNewDocumentIds = newDocumentIds; List documentsToDelete = currentDocumentIds.stream() .filter(docId -> !finalNewDocumentIds.contains(docId)) .toList(); documentsToDelete.forEach(docId -> documentService.deleteFile(docId)); - } - - if (Boolean.FALSE.equals(preInstructorDocumentId.isEmpty())){ + }} + else{ + List currentDocumentIds = parseDocumentIds(applicationFormFieldEntity.getFieldValue()); + if (Boolean.TRUE.equals(preInstructorDocumentId.isEmpty())) { + currentDocumentIds.forEach(docId -> documentService.deleteFile(docId)); + } else { List preInstructorDocIds = preInstructorDocumentId.stream() .map(Long::valueOf) .collect(Collectors.toList()); @@ -469,7 +475,7 @@ public class ApplicationDao { .filter(docId -> !preInstructorDocIds.contains(docId)) .toList(); documentsToDelete.forEach(docId -> documentService.deleteFile(docId)); - } + }} }