19626
2023-07-17 254ea442ff0e0a7a97e9f481e9f127a782cba840
force-app/main/default/classes/OFSRepairConsignPDFOuterController.cls
@@ -10,45 +10,113 @@
    
    public void saveSign() {
        // Sign画像は一つでいいじゃない?Delete⇒Insertにする
        List<Attachment> atts = [select Id from Attachment where ParentId = :rp.Id and Name = :(rp.Name + '_Sign')];
        if (atts.size() > 0) delete atts;
        // List<Attachment> atts = [select Id from Attachment where ParentId = :rp.Id and Name = :(rp.Name + '_Sign')];
        // if (atts.size() > 0) delete atts;
        
        Attachment ac = new Attachment();
        ac.Body = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,'));
        ac.Name = rp.Name + '_Sign';
        ac.ParentId = rp.Id;
        ac.ContentType = 'jpg';
        // Attachment ac = new Attachment();
        // ac.Body = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,'));
        // ac.Name = rp.Name + '_Sign';
        // ac.ParentId = rp.Id;
        // ac.ContentType = 'jpg';
        // try {
        //     insert ac;
        //     rp.Sign__c = '<img src="/servlet/servlet.FileDownload?file=' + ac.Id + '"/>';
        //     rp.SignUrl__c = '/servlet/servlet.FileDownload?file=' + ac.Id;
        //     rp.SignDate__c = Date.today();
        //     update rp;
        // } catch (Exception ex) {
        //     ApexPages.addMessages(ex);
        //     //return;
        // }
        List<ContentDocumentLink> cdlList = [SELECT ContentDocumentId
                                                   FROM ContentDocumentLink
                                                   WHERE LinkedEntityId = :rp.Id];
        List<ID> fileIDs = new List<ID>();
        for (ContentDocumentLink docLink : cdlList) {
            fileIDs.add(docLink.ContentDocumentId);
        }
        List<ContentDocument> attachmentinfo=[SELECT Title,OwnerId from ContentDocument WHERE id IN :fileIDs and Title =: (rp.Name + '_Sign')];
        if (attachmentinfo.size() > 0) delete attachmentinfo;
        ContentVersion contVerFile = new ContentVersion();
        contVerFile.VersionData = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,'));
        contVerFile.Title = rp.Name + '_Sign';
        contVerFile.ContentLocation= 's';
        contVerFile.PathOnClient=rp.Name + '_Sign.jpg';
        insert contVerFile;
        Id conDoc = [SELECT ContentDocumentId FROM ContentVersion WHERE Id =:contVerFile.Id].ContentDocumentId;
        ContentDocumentLink cDe = new ContentDocumentLink();
        cDe.ContentDocumentId = conDoc;
        cDe.LinkedEntityId = rp.Id;
        cDe.ShareType = 'I';
        cDe.Visibility = 'AllUsers';
        insert cDe;
        try {
            insert ac;
            rp.Sign__c = '<img src="/servlet/servlet.FileDownload?file=' + ac.Id + '"/>';
            rp.SignUrl__c = '/servlet/servlet.FileDownload?file=' + ac.Id;
            rp.Sign__c = '<img src="/lightning/r/ContentDocument/' + contVerFile.ContentDocumentId + '/view"/>';
            rp.SignUrl__c = '/lightning/r/ContentDocument/' + contVerFile.ContentDocumentId + '/view';
            rp.SignDate__c = Date.today();
            update rp;
        } catch (Exception ex) {
            ApexPages.addMessages(ex);
            //return;
        }
    }
    
    public void savePDF() {
        // String pdfPageURL = '/apex/OFSRepairConsignPDF?id=' + rp.Id;
        // PageReference pageRef = new PageReference(pdfPageURL);
        // Attachment att = new Attachment();
        // // TODO TestMethodはgetContentをサポートしない
        // if (!Test.isRunningTest()) {
        //     att.body = pageRef.getContent();
        // } else {
        //     att.body = EncodingUtil.base64Decode('test');
        // }
        // att.Name = rp.Name + '_维修委托书_' + String.valueOf(Datetime.now()) + '.pdf';
        // att.ParentId = rp.Id;
        // try {
        //     insert att;
        // } catch (Exception ex) {
        //     ApexPages.addMessages(ex);
        //     //return;
        // }
        String pdfPageURL = '/apex/OFSRepairConsignPDF?id=' + rp.Id;
        PageReference pageRef = new PageReference(pdfPageURL);
        Attachment att = new Attachment();
        ContentVersion contVerFile = new ContentVersion();
        // TODO TestMethodはgetContentをサポートしない
        if (!Test.isRunningTest()) {
            att.body = pageRef.getContent();
            contVerFile.VersionData = pageRef.getContent();
        } else {
            att.body = EncodingUtil.base64Decode('test');
            contVerFile.VersionData = EncodingUtil.base64Decode('test');
        }
        att.Name = rp.Name + '_维修委托书_' + String.valueOf(Datetime.now()) + '.pdf';
        att.ParentId = rp.Id;
        contVerFile.Title = rp.Name + '_维修委托书_' + String.valueOf(Datetime.now()) + '.pdf';
        contVerFile.ContentLocation= 's';
        contVerFile.PathOnClient=rp.Name + '_维修委托书_' + String.valueOf(Datetime.now()) + '.pdf';
        // att.ParentId = rp.Id;
        try {
            insert att;
            insert contVerFile;
            Id conDoc = [SELECT ContentDocumentId FROM ContentVersion WHERE Id =:contVerFile.Id].ContentDocumentId;
            ContentDocumentLink cDe = new ContentDocumentLink();
            cDe.ContentDocumentId = conDoc;
            cDe.LinkedEntityId = rp.Id;
            cDe.ShareType = 'I';
            cDe.Visibility = 'AllUsers';
            insert cDe;
        } catch (Exception ex) {
            ApexPages.addMessages(ex);
            //return;
        }
    }
    
    private Repair__c getReportData(String id) {