Resolve Conflicts

This commit is contained in:
nishainnogent
2024-11-28 13:17:07 +05:30
90 changed files with 3566 additions and 767 deletions

View File

@@ -1,31 +1,41 @@
package net.gepafin.tendermanagement.dao;
import lombok.extern.slf4j.Slf4j;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum;
import net.gepafin.tendermanagement.enums.UserActionContextEnum;
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
import net.gepafin.tendermanagement.repositories.ApplicationRepository;
import net.gepafin.tendermanagement.util.LoggingUtil;
import net.gepafin.tendermanagement.util.Utils;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.ApplicationEntity;
import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.DocumentEntity;
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;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Component
@@ -61,11 +71,17 @@ public class DocumentDao {
@Value("${aws.s3.bucket.name}")
private String bucketName;
@Autowired
private LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
// @Value("${aws.s3.url.folder}")
// private String s3Folder;
public List<DocumentResponseBean> uploadFiles(List<MultipartFile> files, Long sourceId, DocumentSourceTypeEnum sourceType, DocumentTypeEnum fileType) {
List<DocumentEntity> documentEntities = new ArrayList<>();
Long source = resolveSourceId(sourceId, sourceType);
for (MultipartFile file : files) {
@@ -82,9 +98,44 @@ public class DocumentDao {
}
}
documentRepository.saveAll(documentEntities);
/** This code is responsible for adding a version history log for the "Upload call or application document based on source type" operation. **/
documentEntities.forEach(entity -> loggingUtil.addVersionHistory(
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(entity).build()));
return documentEntities.stream().map(callDao::convertToDocumentResponseBean).collect(Collectors.toList());
}
public UserActionContextEnum getUserActionContextEnum(DocumentSourceTypeEnum sourceType, DocumentTypeEnum fileType) {
UserActionContextEnum userActionContext = null;
if (fileType.equals(DocumentTypeEnum.DOCUMENT) && sourceType.equals(DocumentSourceTypeEnum.CALL)) {
userActionContext = UserActionContextEnum.UPLOAD_CALL_DOCUMENT;
} else if (fileType.equals(DocumentTypeEnum.IMAGES) && sourceType.equals(DocumentSourceTypeEnum.CALL)) {
userActionContext = UserActionContextEnum.UPLOAD_CALL_IMAGES;
} else if (fileType.equals(DocumentTypeEnum.DOCUMENT) && sourceType.equals(DocumentSourceTypeEnum.APPLICATION)) {
userActionContext = UserActionContextEnum.UPLOAD_APPLICATION_DOCUMENT;
} else if (fileType.equals(DocumentTypeEnum.IMAGES) && sourceType.equals(DocumentSourceTypeEnum.APPLICATION)) {
userActionContext = UserActionContextEnum.UPLOAD_APPLICATION_IMAGES;
}
return userActionContext;
}
public UserActionContextEnum getUserActionContextForUpdatingDocOrImage(DocumentTypeEnum documentTypeEnum) {
UserActionContextEnum userActionContext;
if (DocumentTypeEnum.DOCUMENT.equals(documentTypeEnum)) {
userActionContext = UserActionContextEnum.UPDATE_DOCUMENT;
} else{
userActionContext = UserActionContextEnum.UPDATE_IMAGES;
}
return userActionContext;
}
private UploadFileOnAmazonS3Response uploadFileOnAmazonS3(MultipartFile file, DocumentSourceTypeEnum type, Long sourceId) {
Long applicationId = 0L;
@@ -117,21 +168,27 @@ public class DocumentDao {
}
private Long resolveSourceId(Long sourceId, DocumentSourceTypeEnum sourceType) {
if (sourceType == DocumentSourceTypeEnum.CALL) {
CallEntity callEntity = callService.validateCall(sourceId);
// callDao.validateUpdate(callEntity);
// callDao.validateUpdate(callEntity);
return callEntity.getId();
}
// else if (sourceType == SourceTypeEnum.APPLICATION) {
// ApplicationEntity applicationEntity = applicationService.validateApplication(sourceId);
// return applicationEntity.getId(); // Assuming ApplicationEntity has getId()
// }
//
// else if (sourceType == SourceTypeEnum.APPLICATION) {
// ApplicationEntity applicationEntity = applicationService.validateApplication(sourceId);
// return applicationEntity.getId(); // Assuming ApplicationEntity has getId()
// }
//
return sourceId;
}
public void deleteFile(Long documentId) {
DocumentEntity documentEntity = validateDocument(documentId);
DocumentEntity documentEntity = documentRepository.findById(documentId).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND)));
if(Boolean.TRUE.equals(documentEntity.getIsDeleted())){
return;
}
DocumentEntity oldDocumentEntity = Utils.getClonedEntityForData(documentEntity);
Long callId = null;
Long applicationId = null;
Long amendmentId = null;
@@ -153,6 +210,10 @@ public class DocumentDao {
amazonS3Service.deleteFileFromS3(documentEntity, callId, applicationId,amendmentId);
documentEntity.setIsDeleted(true);
documentRepository.save(documentEntity);
/** This code is responsible for adding a version history log for the "Soft delete document" operation. **/
loggingUtil.addVersionHistory(
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldDocumentEntity).newData(documentEntity).build());
}
public DocumentEntity validateDocument(Long id) {
@@ -161,7 +222,11 @@ public class DocumentDao {
}
public DocumentResponseBean updateDocument(Long documentId, MultipartFile file, DocumentTypeEnum documentTypeEnum) {
DocumentEntity documentEntity = validateDocument(documentId);
//cloned entity for old data
DocumentEntity oldDocumentData = Utils.getClonedEntityForData(documentEntity);
String type = documentEntity.getSource();
UploadFileOnAmazonS3Response uploadFileOnAmazonS3Response = updateFileOnAmazonS3(file, DocumentSourceTypeEnum.valueOf(type), documentEntity.getSourceId());
if (uploadFileOnAmazonS3Response != null) {
@@ -171,6 +236,10 @@ public class DocumentDao {
documentEntity.setSource(documentEntity.getSource());
documentEntity.setSourceId(documentEntity.getSourceId());
documentRepository.save(documentEntity);
/** This code is responsible for adding a version history log for the "updating doc or image" operation. **/
loggingUtil.addVersionHistory(
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldDocumentData).newData(documentEntity).build());
}
return callDao.convertToDocumentResponseBean(documentEntity);
}