Resolved Conflicts.

This commit is contained in:
piyushkag
2024-12-24 18:46:28 +05:30
60 changed files with 1181 additions and 252 deletions

View File

@@ -105,6 +105,12 @@ public class ApplicationAmendmentRequestDao {
@Autowired
private AssignedApplicationsDao assignedApplicationsDao;
@Autowired
private ApplicationEvaluationDao applicationEvaluationDao;
@Autowired
private DocumentRepository documentRepository;
@Autowired
private NotificationDao notificationDao;
@@ -115,8 +121,26 @@ public class ApplicationAmendmentRequestDao {
log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId);
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
Long applicationId = applicationEvaluationEntity.getApplicationId();
ApplicationEntity application = applicationService.validateApplication(applicationId);
List<FieldRequest> evaluationFileRequests=new ArrayList<>();
List<ChecklistRequest> checklistRequests=new ArrayList<>();
ApplicationEntity application = applicationService.validateApplication(applicationId);
String file=applicationEvaluationEntity.getFile();
String checkList=applicationEvaluationEntity.getChecklist();
if(file != null){
evaluationFileRequests=Utils.convertJsonStringToList(file,FieldRequest.class);
}
Boolean allValid = evaluationFileRequests.stream()
.anyMatch(fieldRequest -> fieldRequest.getValid() == null);
if(checkList != null) {
checklistRequests=Utils.convertJsonStringToList(checkList,ChecklistRequest.class);
}
boolean resultCheckList = checklistRequests.stream()
.anyMatch(checklistRequest -> Boolean.TRUE.equals(checklistRequest.getValid())) ? false : true;
if(Boolean.TRUE.equals(allValid) || Boolean.TRUE.equals(resultCheckList)){
throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.All_DOCUMENT_CHECKED_AND_ONE_CHECKLIST_CHECKED));
}
// Set common application-level details
String callName = application.getCall().getName();
Long protocolNumber = (application.getProtocol() != null && application.getProtocol().getProtocolNumber() != null)
@@ -141,11 +165,18 @@ public class ApplicationAmendmentRequestDao {
List<ApplicationFormEntity> forms = applicationFormRepository.findByApplicationId(applicationId);
List<AmendmentFormFieldResponse> allFormFields = new ArrayList<>();
Map<String, FieldRequest> fieldRequestMap = evaluationFileRequests.stream()
.collect(Collectors.toMap(FieldRequest::getId, fieldRequest -> fieldRequest));
for (ApplicationFormEntity form : forms) {
String content = form.getForm().getContent();
List<Map<String, Object>> result = filterByName(content, "fileupload");
allFormFields.addAll(getIdAndLabelFromResult(result));
List<AmendmentFormFieldResponse> amendmentFormFieldResponses= getIdAndLabelFromResult(result);
amendmentFormFieldResponses.removeIf(amendmentFormFieldResponse -> {
FieldRequest matchingRequest = fieldRequestMap.get(amendmentFormFieldResponse.getFieldId());
// Remove if no matching FieldRequest exists or if valid is true
return matchingRequest == null || Boolean.TRUE.equals(matchingRequest.getValid());
});
allFormFields.addAll(amendmentFormFieldResponses);
}
response.setFormFields(allFormFields);
@@ -243,6 +274,7 @@ public class ApplicationAmendmentRequestDao {
AmendmentFormField formField = new AmendmentFormField();
formField.setFieldId(amendmentFormFieldRequest.getFieldId());
formField.setFieldValue(null);
formField.setLabel(amendmentFormFieldRequest.getLabel());
return formField;
})
.collect(Collectors.toList());
@@ -267,7 +299,7 @@ public class ApplicationAmendmentRequestDao {
Long protocolNumber = protocolDao.getProtocolNumber(userEntity.getHub());
ProtocolEntity protocolEntity = protocolDao.createProtocolEntity(
applicationEvaluationEntity.getAssignedApplicationsEntity().getApplication(), protocolNumber,
userEntity.getHub().getId());
userEntity.getHub().getId(),false);
applicationAmendmentRequestEntity.setProtocol(protocolEntity);
ApplicationAmendmentRequestEntity applicationAmendment = saveApplicationAmendmentRequestEntity(applicationAmendmentRequestEntity, null, VersionActionTypeEnum.INSERT);
String evaluationStatusType = applicationEvaluationEntity.getStatus();
@@ -311,6 +343,25 @@ public class ApplicationAmendmentRequestDao {
return applicationAmendment;
}
private void setAmendmentDocuments(String amendmentNotes, String amendmentFieldRequest,
ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity) {
AmendmentDetailsResponseBean amendmentDetails = new AmendmentDetailsResponseBean();
if (amendmentFieldRequest != null && !amendmentFieldRequest.trim().isEmpty()) {
String[] documentIds = amendmentFieldRequest.split(",");
String validDocumentIds = Arrays.stream(documentIds)
.map(String::trim)
.filter(id -> !id.isEmpty())
.collect(Collectors.joining(","));
amendmentDetails.setAmendmentDocuments(validDocumentIds);
}
if (amendmentNotes != null && !amendmentNotes.trim().isEmpty()) {
amendmentDetails.setAmendmentNotes(amendmentNotes.trim());
}
amendmentDetails.setValid(null);
String amendmentDetailsJson = Utils.convertObjectToString(amendmentDetails);
applicationAmendmentRequestEntity.setAmendmentDocument(amendmentDetailsJson);
}
public ApplicationAmendmentRequestEntity saveApplicationAmendmentRequestEntity(ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity,ApplicationAmendmentRequestEntity oldApplicationAmendmentEntity,VersionActionTypeEnum actionTypeEnum) {
ApplicationAmendmentRequestEntity applicationAmendmentRequest = applicationAmendmentRequestRepository.save(applicationAmendmentRequestEntity);
@@ -326,16 +377,70 @@ public class ApplicationAmendmentRequestDao {
List<ApplicationFormEntity> forms = applicationFormRepository.findByApplicationId(applicationAmendmentRequestEntity.getApplicationId());
Map<String, String> fieldIdToLabelMap = extractFieldIdToLabelMap(forms);
// List<AmendmentFieldRequest> amendmentFieldRequests= new ArrayList<>();
List<AmendmentFormField> amendmentFormFields = Utils.convertJsonStringToList(
applicationAmendmentRequestEntity.getFormFields(), AmendmentFormField.class);
Map<String, ApplicationFormFieldEntity> formFieldEntityMap = getApplicationFormFieldEntityMap(applicationAmendmentRequestEntity, amendmentFormFields);
if (applicationAmendmentRequestEntity.getAmendmentDocument() != null) {
// List<AmendmentDetailsResponseBean> amendmentDetailsList =
// Utils.convertJsonStringToList(applicationAmendmentRequestEntity.getAmendmentDocument(),
// AmendmentDetailsResponseBean.class);
AmendmentDetailsResponseBean amendmentDetails = Utils.convertStringToObject(applicationAmendmentRequestEntity.getAmendmentDocument() ,AmendmentDetailsResponseBean.class);
if(amendmentDetails!=null) {
List<DocumentResponseBean> documentResponseBeans = new ArrayList<>();
if (amendmentDetails.getAmendmentDocuments() != null) {
// Extract the comma-separated document IDs as a string
String documentIdsString = amendmentDetails.getAmendmentDocuments();
if (documentIdsString != null && !documentIdsString.trim().isEmpty()) {
// Split the comma-separated values and process them
List<String> documentIds = Arrays.stream(documentIdsString.split(","))
.map(String::trim)
.filter(id -> !id.isEmpty())
.collect(Collectors.toList());
documentResponseBeans.addAll(
documentIds.stream()
.map(id -> {
try {
return createDocumentResponseBean(id); // Convert to Long
} catch (NumberFormatException e) {
// Handle invalid document IDs gracefully
return null;
}
})
.filter(Objects::nonNull) // Skip null responses
.collect(Collectors.toList())
);
response.setAmendmentNotes(amendmentDetails.getAmendmentNotes());
response.setValid(amendmentDetails.getValid());
}
}
response.setAmendmentDocuments(documentResponseBeans);
}
}
processFormFields(amendmentFormFields, fieldIdToLabelMap, formFieldEntityMap, response);
return response;
}
public DocumentResponseBean createDocumentResponseBean(String documentId) {
if (!StringUtils.isEmpty(documentId)) {
Optional<DocumentEntity> documentEntity = documentRepository.findByIdAndNotDeleted(Long.valueOf(documentId));
if(documentEntity.isPresent()){
return applicationEvaluationDao.createDocumentResponseBean(documentEntity.get());
}}
return null;
}
private ApplicationAmendmentRequestResponse initializeBasicResponse(ApplicationAmendmentRequestEntity entity) {
ApplicationAmendmentRequestResponse response = new ApplicationAmendmentRequestResponse();
response.setId(entity.getId());
@@ -509,6 +614,20 @@ public class ApplicationAmendmentRequestDao {
log.info("Updating application amendement with ID: {}", id);
ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id);
Boolean isBeneficiary=false;
if (Boolean.FALSE.equals(validator.checkIsBeneficiary())) {
validator.validatePreInstructor(request, existingApplicationAmendment.getApplicationEvaluationEntity().getUserId());
isBeneficiary=false;
} else {
validator.validateUserId(request, existingApplicationAmendment.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication().getUserId());
isBeneficiary=true;
}
if(Boolean.TRUE.equals(isBeneficiary) && existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue())){
throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.PERMISSION_DENIED));
}
if(Boolean.FALSE.equals(isBeneficiary) && existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.AWAITING.getValue())){
throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.PERMISSION_DENIED));
}
ApplicationAmendmentRequestEntity oldApplicationAmendmentEntity = Utils.getClonedEntityForData(existingApplicationAmendment);
setIfUpdated(existingApplicationAmendment::getNote, existingApplicationAmendment::setNote, updateRequest.getNote());
@@ -521,14 +640,16 @@ public class ApplicationAmendmentRequestDao {
if(updateRequest.getApplicationFormFields() != null) {
updateRequest.getApplicationFormFields().stream().forEach(applicationFormFieldRequest->{
AmendmentFormField amendmentFormField = getAmendmentFormField(amendmentFormFieldMap,applicationFormFieldRequest.getFieldId());
ApplicationFormFieldEntity applicationFormFieldEntity = getApplicationFormField(applicationFormFieldMap, applicationFormFieldRequest.getFieldId());
updateApplicationFormField(applicationFormFieldEntity,applicationFormFieldRequest, amendmentFormField);
// ApplicationFormFieldEntity applicationFormFieldEntity = getApplicationFormField(applicationFormFieldMap, applicationFormFieldRequest.getFieldId());
// updateApplicationFormField(applicationFormFieldEntity,applicationFormFieldRequest, amendmentFormField);
updateFormField(applicationFormFieldRequest, amendmentFormField);
});
existingApplicationAmendment.setFormFields(Utils.convertListToJsonString(amendmentFormFieldMap.values().stream().toList()));
}
existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
if(updateRequest.getAmendmentDocuments()!=null && Boolean.FALSE.equals(updateRequest.getAmendmentDocuments().isEmpty())) {
setAmendmentDocuments(updateRequest.getAmendmentNotes(),updateRequest.getAmendmentDocuments(), existingApplicationAmendment);
}
ApplicationAmendmentRequestEntity updatedApplicationAmendment = saveApplicationAmendmentRequestEntity(existingApplicationAmendment,oldApplicationAmendmentEntity,VersionActionTypeEnum.UPDATE);
ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment);
log.info("Application Amendment updated successfully: {}", response);
@@ -595,13 +716,13 @@ public class ApplicationAmendmentRequestDao {
String fieldId) {
AmendmentFormField amendmentFormField = amendmentFormFieldMap.get(fieldId);
if (amendmentFormField == null) {
throw new CustomValidationException(Status.BAD_REQUEST, GepafinConstant.APPLICATION_FORM_FIELD_NOT_FOUND);
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_FORM_FIELD_NOT_FOUND));
}
return amendmentFormField;
}
private void updateFormField(ApplicationFormFieldRequestBean applicationFormFieldRequest,
private void updateFormField(AmendmentFormFieldRequest applicationFormFieldRequest,
AmendmentFormField amendmentFormField) {
List<Long> requestedDocumentIds = extractIds(applicationFormFieldRequest.getFieldValue());
List<Long> existingDocumentIds = extractIds(amendmentFormField.getFieldValue());
@@ -610,7 +731,8 @@ public class ApplicationAmendmentRequestDao {
if (!existingDocumentIds.isEmpty()) {
existingDocumentIds.forEach(this::softDeleteDocument);
amendmentFormField.setFieldValue(null);
setIsUploadedBy(amendmentFormField);
amendmentFormField.setValid(applicationFormFieldRequest.getValid());
// setIsUploadedBy(amendmentFormField);
}
return;
}
@@ -624,11 +746,12 @@ public class ApplicationAmendmentRequestDao {
if (!newFieldValue.equals(amendmentFormField.getFieldValue())) {
amendmentFormField.setFieldValue(newFieldValue);
setIsUploadedBy(amendmentFormField);
amendmentFormField.setValid(applicationFormFieldRequest.getValid());
// setIsUploadedBy(amendmentFormField);
}
}
private List<Long> extractIds(Object fieldValue) {
public List<Long> extractIds(Object fieldValue) {
if (fieldValue instanceof String && !StringUtils.isEmpty((String) fieldValue)) {
return Arrays.stream(((String) fieldValue).split(","))
.map(Long::valueOf)
@@ -639,14 +762,14 @@ public class ApplicationAmendmentRequestDao {
private void setIsUploadedBy(AmendmentFormField amendmentFormField) {
if(validator.checkIsBeneficiary()) {
amendmentFormField.setIsUploadedBy(AmendmentFormField.AmendmentIsUploadedByEnum.BENEFICIARY.getValue());
}else {
amendmentFormField.setIsUploadedBy(AmendmentFormField.AmendmentIsUploadedByEnum.PRE_INSTRUCTOR.getValue());
}
}
// private void setIsUploadedBy(AmendmentFormField amendmentFormField) {
// if(validator.checkIsBeneficiary()) {
// amendmentFormField.setIsUploadedBy(AmendmentFormField.AmendmentIsUploadedByEnum.BENEFICIARY.getValue());
// }else {
// amendmentFormField.setIsUploadedBy(AmendmentFormField.AmendmentIsUploadedByEnum.PRE_INSTRUCTOR.getValue());
// }
//
// }
// private void updateApplicationFormFields(ApplicationAmendmentRequestEntity applicationAmendment, ApplicationFormFieldRequestBean updatedFormField) {
@@ -959,7 +1082,7 @@ public class ApplicationAmendmentRequestDao {
log.info("Updating application amendment with status: {}", id);
ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id);
ApplicationAmendmentRequestEntity oldApplicationAmendmentEntity = Utils.getClonedEntityForData(existingApplicationAmendment);
if (Boolean.TRUE.equals(existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.AWAITING.getValue())) || Boolean.TRUE.equals(statusTypeEnum.equals(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED))) {
if (Boolean.TRUE.equals(existingApplicationAmendment.getStatus().equals(ApplicationAmendmentRequestEnum.AWAITING.getValue())) && Boolean.TRUE.equals(statusTypeEnum.equals(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED))) {
existingApplicationAmendment.setStatus(ApplicationAmendmentRequestEnum.RESPONSE_RECEIVED.getValue());
existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
applicationAmendmentRequestRepository.save(existingApplicationAmendment);
@@ -1043,12 +1166,6 @@ public class ApplicationAmendmentRequestDao {
}
public List<ApplicationAmendmentRequestEntity> getApplicationAmendmentRequestEntitiesByApplicationEvaluationId(Long applicationEvaluationId){
List<ApplicationAmendmentRequestEntity> applicationAmendmentRequestEntities=new ArrayList<>();
applicationAmendmentRequestEntities=applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndStatusAndIsDeletedFalse(applicationEvaluationId,ApplicationAmendmentRequestEnum.CLOSE.getValue());
return applicationAmendmentRequestEntities;
}
private void softDeleteDocument(Long documentId) {
documentService.deleteFile(documentId);
}