Backup_FME_personal/force-app/main/default/classes/InvocableApexActionHandler.cls

122 lines
6.0 KiB
OpenEdge ABL

public without sharing class InvocableApexActionHandler {
private static final String GOOGLE_DRIVE_API_URL = 'https://www.googleapis.com/drive/v3/files';
private static String externalStorage = 'Google Drive';
public static Map<String,String> createFolderFromAction(Boolean isServiceMode,String userId,String folderName, String parentFolderId ,String recordId,String newAccessTokenGnt) {
Map<String,String> newAccessTokenMap=new Map<String,String>();
String ACCESS_TOKEN;
String refreshToken;
System.debug('parentFolderId >>>'+parentFolderId);
Map<String, String> accessTokenMap=new Map<String, String>();
// Map<String,Map<String,Object>> storageTokenMap=new Map<String,Map<String,Object>>();
Map<String,String> googleDriveMap=new Map<String,String>();
try{
System.debug('newAccessTokenGnt'+newAccessTokenGnt);
if(newAccessTokenGnt == null){
accessTokenMap = CloudStorageUtlilty.getAccessToken(isServiceMode, userId, externalStorage);
ACCESS_TOKEN=(String)accessTokenMap.get('ACCESS_TOKEN');
refreshToken = (String) accessTokenMap.get('REFRESH_TOKEN');
}
else{
ACCESS_TOKEN=newAccessTokenGnt;
}
String folderMetadata = '{' +
'"name": "' + folderName + '",' +
'"mimeType": "application/vnd.google-apps.folder"';
if (parentFolderId != null && parentFolderId != '') {
folderMetadata += ',"parents": ["' + parentFolderId + '"]';
}
folderMetadata += '}';
Map<String, String> headers = new Map<String, String>();
headers.put('Authorization', 'Bearer ' + ACCESS_TOKEN);
headers.put( 'Content-Type', 'application/json');
HttpResponse res = CloudStorageUtlilty.makeCallout(folderMetadata, GOOGLE_DRIVE_API_URL, headers, 'POST');
String createdFolderName;
String folderId;
if (res.getStatusCode() == 200) {
System.debug('resBody'+JSON.serializePretty(res.getBody()));
String responseBody = res.getBody();
Map<String, object> resultMap = (Map<String, object>) JSON.deserializeUntyped(responseBody);
folderId=(String) resultMap.get('id');
createdFolderName=(String) resultMap.get('name');
googleDriveMap.put('folderName',createdFolderName);
googleDriveMap.put('parentFolderId',folderId);
}
else if(res.getStatusCode() == 401){
newAccessTokenMap = CloudStorageUtlilty.refreshAndReturn(refreshToken, externalStorage);
googleDriveMap.put('isnewAccesstoken' ,'true');
googleDriveMap.put('newAccessToken', newAccessTokenMap.get('ACCESS_TOKEN'));
Map<String, String> headers1 = new Map<String, String>();
headers1.put('Authorization', 'Bearer ' + newAccessTokenMap.get('ACCESS_TOKEN'));
headers1.put( 'Content-Type', 'application/json');
HttpResponse res1 = CloudStorageUtlilty.makeCallout(folderMetadata, GOOGLE_DRIVE_API_URL, headers1, 'POST');
String responseBody = res1.getBody();
Map<String, object> resultMap = (Map<String, object>) JSON.deserializeUntyped(responseBody);
folderId=(String) resultMap.get('id');
createdFolderName=(String) resultMap.get('name');
googleDriveMap.put('folderName',createdFolderName);
googleDriveMap.put('parentFolderId',folderId);
// storageTokenMap.put('Google Drive',googleDriveMap);
}
return googleDriveMap;
}
catch (Exception e) {
FME_Logger.error(e.getMessage(), 'InvocableApexActionHandler' + e.getLineNumber(), 'createFolderFromAction');
// System.debug('>>>error='+e.getMessage());
// throw new AuraHandledException(e.getMessage());
}
finally{
FME_Logger.saveLog();
}
return new Map<String, String>();
}
public static void linkFilesWithRecord(String recordId,String folderId,String storageType,String folderName){
try{
List<HIC_FilesME__File_Link__c> fileLinkList = new List<HIC_FilesME__File_Link__c>();
HIC_FilesME__File_Link__c fileLink = new HIC_FilesME__File_Link__c();
fileLink.HIC_FilesME__Linked_Entity_Id__c = folderId;
fileLink.HIC_FilesME__Linked_Storage_Type__c = storageType;
fileLink.HIC_FilesME__Linked_Entity_Name__c = folderName;
fileLink.HIC_FilesME__Linked_Mimetype__c = 'application/vnd.google-apps.folder';
fileLink.HIC_FilesME__Linked_Record_Id__c = recordId;
fileLinkList.add(fileLink);
if(fileLinkList.size()>0){
insert fileLinkList;
}
}
catch(Exception e){
FME_Logger.error(e.getMessage(), 'InvocableApexActionHandler' + e.getLineNumber(), 'linkFilesWithRecord');
}
finally{
FME_Logger.saveLog();
}
}
public static void moveSalesforceFiles(String storageType,String recordId,String folderId,String driveId){
try{
ContentVersion cv = [SELECT Id, VersionData,Title,FileExtension FROM ContentVersion WHERE Id = :recordId];
Integer fileSize = cv.VersionData.size();
if (fileSize <= 6000000) {
//String cloudFileId = 'test';
String fileId = FME_GoogleDriveService.uploadFile(cv, folderId);
System.debug('✅ File uploaded to Google Drive, fileId = ' + fileId);
}
}
catch(Exception e){
FME_Logger.error(e.getMessage(), 'InvocableApexActionHandler' + e.getLineNumber(), 'linkFilesWithRecord');
}
finally{
FME_Logger.saveLog();
}
}
}