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)); - } + }} }