global with sharing class BatchFileUploadController {
    public String newUrl {get; set;}
    public String staticResource {get; set;}

    public BatchFileUploadController(){
        AWS_Integration_Info__mdt awsConfiguration = [SELECT App_Id__c,Token_URL__c,App_Secret__c,Host_URL__c FROM AWS_Integration_Info__mdt  WHERE DeveloperName = 'AWS_Default_Configuration'];
        if (awsConfiguration == null) {
            System.debug('AWS_Integration_Info__mdt没配置');
        }else {
            newUrl = awsConfiguration.Host_URL__c + '/api/file/batchupload';
            staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Document'));
        }
    }

    // @RemoteAction
    // global static String attachBlob(String parentId, String attachmentId, String fileName, String contentType, String base64BlobValue){
    //     /*
    //     parentId: The sfdc object Id this file will be attached to
    //     attachmentId: The record of the current Attachment file being processed
    //     fileName: Name of the attachment
    //     contentTye: Content Type of the file being attached
    //     base64BlobValue: Base64 encoded string of the file piece currently processing
    //     */
               
    //     //If recordId is blank this is the first part of a multi piece upload
    //     if(attachmentId == '' || attachmentId == null){
    //         Attachment att = new Attachment(
    //             ParentId = parentId,
    //             Body = EncodingUtil.Base64Decode(base64BlobValue),
    //             Name = fileName,
    //             ContentType = contentType
    //         );
    //         insert att;
            
    //         //Return the new attachment Id
    //         return att.Id;
            
    //     }else{
    //         for(Attachment atm : [select Id, Body from Attachment where Id = :attachmentId]){
    //             //Take the body of the current attachment, convert to base64 string, append base64 value sent from page, then convert back to binary for the body
    //             update new Attachment(Id = attachmentId, Body = EncodingUtil.Base64Decode(EncodingUtil.Base64Encode(atm.Body) + base64BlobValue));
    //         }
            
    //         //Return the Id of the attachment we are currently processing
    //         return attachmentId;
    //     }
    // }

    global class Response{
        public String recordId{set;get;}
        public String message{set;get;}
        public String status{set;get;}
    }

    @RemoteAction
    global static Response saveFile(String fileName,String key,String transId,String parentId){
        FileAddress__c file = new FileAddress__c();
        PIHelper.PIIntegration pI=PIHelper.getPIIntegrationInfo('Document');
        // 去除filename里得“&” zhj 2022-11-17
        fileName = fileName.remove('&');
        file.DownloadLink__c =pI.undeleteUrl+key+'&fileName='+fileName;
        file.FileName__c =fileName;
        file.ViewLink__c =pI.queryUrl+key;
        file.ParentRecordId__c =parentId;
        file.AWS_File_Key__c = key;
        Response response =new Response();
        Savepoint sp = Database.setSavepoint();
        try {
            insert file;
            //插入日志 
            //update 2022-11-17 加入新的日志方式
            PIHelper.saveTransLog('Document',key,transId,file.Id,JSON.serialize(file),'success','');
            response.recordId=file.Id;
            response.status='success';
            return response;
        } catch (Exception e) {
            System.debug('into catch'+e.getMessage());
            PIHelper.saveTransLog('Document',key,transId,file.Id,JSON.serialize(file),'fail',e.getMessage());
            Database.rollback(sp);
            response.message=e.getMessage();
            response.status='fail';
            return response;
        }
    }
}