Amendment Documents

This commit is contained in:
nishainnogent
2024-11-28 12:17:31 +05:30
parent 80cd8c4bb0
commit d21445be38
13 changed files with 132 additions and 41 deletions

View File

@@ -9,9 +9,11 @@ import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
import net.gepafin.tendermanagement.enums.DocumentTypeEnum;
import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
import net.gepafin.tendermanagement.model.response.UploadFileOnAmazonS3Response;
import net.gepafin.tendermanagement.repositories.ApplicationAmendmentRequestRepository;
import net.gepafin.tendermanagement.repositories.ApplicationRepository;
import net.gepafin.tendermanagement.repositories.DocumentRepository;
import net.gepafin.tendermanagement.service.AmazonS3Service;
import net.gepafin.tendermanagement.service.ApplicationAmendmentRequestService;
import net.gepafin.tendermanagement.service.ApplicationService;
import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
@@ -50,11 +52,16 @@ public class DocumentDao {
@Autowired
ApplicationService applicationService;
@Autowired
ApplicationAmendmentRequestService applicationAmendmentRequestService;
@Autowired
ApplicationAmendmentRequestRepository applicationAmendmentRequestRepository;
@Value("${aws.s3.bucket.name}")
private String bucketName;
// @Value("${aws.s3.url.folder}")
// private String s3Folder;
@@ -77,30 +84,38 @@ public class DocumentDao {
documentRepository.saveAll(documentEntities);
return documentEntities.stream().map(callDao::convertToDocumentResponseBean).collect(Collectors.toList());
}
private UploadFileOnAmazonS3Response uploadFileOnAmazonS3(MultipartFile file, DocumentSourceTypeEnum type, Long sourceId) {
Long applicationId = 0L;
Long applicationId = 0L;
Long amendmentId = 0L;
Long callId = sourceId;
if (type == DocumentSourceTypeEnum.APPLICATION) {
applicationId = sourceId;
callId = applicationFormRepository.findCallIdById(applicationId);
} else if (type == DocumentSourceTypeEnum.AMENDMENT) {
amendmentId = sourceId;
ApplicationEntity applicationEntity = applicationAmendmentRequestRepository.findApplicationByAmendmentId(amendmentId);
applicationId = applicationEntity.getId();
callId = applicationEntity.getCall().getId();
}
try {
String s3Path = generateS3Path(type, callId, applicationId);
String s3Path = generateS3Path(type, callId, applicationId, amendmentId);
log.info("Generated S3 path {}", s3Path);
return amazonS3Service.uploadFileOnAmazonS3(s3Path, file);
} catch (Exception e) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.UPLOAD_ERROR_S3));
}
}
public String generateS3Path(DocumentSourceTypeEnum typeOfDocument, Long callId, Long applicationId) {
public String generateS3Path(DocumentSourceTypeEnum typeOfDocument, Long callId, Long applicationId, Long amendmentId) {
try {
return s3ConfigBean.generateDocumentPath(typeOfDocument, callId, applicationId);
return s3ConfigBean.generateDocumentPath(typeOfDocument, callId, applicationId, amendmentId);
} catch (IllegalArgumentException e) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.S3_PATH_GENERATION_ERROR_MSG));
}
}
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
if (sourceType == DocumentSourceTypeEnum.CALL) {
CallEntity callEntity = callService.validateCall(sourceId);
@@ -119,16 +134,23 @@ public class DocumentDao {
DocumentEntity documentEntity = validateDocument(documentId);
Long callId = null;
Long applicationId = null;
Long amendmentId = null;
if ("CALL".equalsIgnoreCase(documentEntity.getSource())) {
if (DocumentSourceTypeEnum.CALL.getValue().equalsIgnoreCase(documentEntity.getSource())) {
callId = documentEntity.getSourceId();
} else if ("APPLICATION".equalsIgnoreCase(documentEntity.getSource())) {
} else if (DocumentSourceTypeEnum.APPLICATION.getValue().equalsIgnoreCase(documentEntity.getSource())) {
applicationId = documentEntity.getSourceId();
ApplicationEntity applicationEntity = applicationService.validateApplication(applicationId);
callId = applicationEntity.getCall().getId();
}
else if(DocumentSourceTypeEnum.AMENDMENT.getValue().equalsIgnoreCase(documentEntity.getSource())){
amendmentId = documentEntity.getSourceId();
ApplicationEntity applicationEntity = applicationAmendmentRequestRepository.findApplicationByAmendmentId(amendmentId);
applicationId = applicationEntity.getId();
callId = applicationEntity.getCall().getId();
}
amazonS3Service.deleteFileFromS3(documentEntity,callId,applicationId);
amazonS3Service.deleteFileFromS3(documentEntity, callId, applicationId,amendmentId);
documentEntity.setIsDeleted(true);
documentRepository.save(documentEntity);
}
@@ -142,7 +164,7 @@ public class DocumentDao {
DocumentEntity documentEntity = validateDocument(documentId);
String type = documentEntity.getSource();
UploadFileOnAmazonS3Response uploadFileOnAmazonS3Response = updateFileOnAmazonS3(file, DocumentSourceTypeEnum.valueOf(type), documentEntity.getSourceId());
if (uploadFileOnAmazonS3Response != null) {
if (uploadFileOnAmazonS3Response != null) {
documentEntity.setFileName(uploadFileOnAmazonS3Response.getFileName());
documentEntity.setFilePath(uploadFileOnAmazonS3Response.getFilePath());
documentEntity.setType(documentTypeEnum.getValue());
@@ -152,19 +174,28 @@ public class DocumentDao {
}
return callDao.convertToDocumentResponseBean(documentEntity);
}
private UploadFileOnAmazonS3Response updateFileOnAmazonS3(MultipartFile file, DocumentSourceTypeEnum type, Long id) {
try {
Long callId;
Long applicationId;
if(type.equals(DocumentSourceTypeEnum.APPLICATION)){
Long callId=null;
Long applicationId=null;
Long amendmentId=null;
if (type.equals(DocumentSourceTypeEnum.APPLICATION)) {
callId = applicationFormRepository.findCallIdById(id);
applicationId = id;
}else{
}
else if(type.equals(DocumentSourceTypeEnum.AMENDMENT)){
amendmentId = id;
ApplicationEntity applicationEntity = applicationAmendmentRequestRepository.findApplicationByAmendmentId(amendmentId);
applicationId = applicationEntity.getId();
callId = applicationEntity.getCall().getId();
}
else {
callId = id;
applicationId = 0L;
}
String s3Path = generateS3Path(type, callId, applicationId);
String s3Path = generateS3Path(type, callId, applicationId,amendmentId);
log.info("Generated S3 path {}", s3Path);
return amazonS3Service.uploadFileOnAmazonS3(s3Path, file);
} catch (Exception e) {