function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Paul87Paul87 

Integration - SOAP and Classic Email Template

Hi all,
i'm trying to build this solution (if it has sense).
Scenario: generate a default Mail for quote on Case Feed using web service SOAP and Classic Email Template.
I already have the web service and a classic email template, but i don't know how handle the soap response to generate the mail with data obtained.

Callout Method to external service
public void callQuoteService(Datetime dateFrom, Datetime dateTo, String npaxString, String tipoRisorsa, String extraString, String idLingua, String campingCode){

		String body = generateRequestBody(dateFrom, dateTo, npaxString, tipoRisorsa, extraString, idLingua);

		//Note: it is not possible to use the standard WSDL2APEX generator because the WSDL from SGS contains s:any blocks,
		//whìch are not supported
		HttpRequest soapRequest = this.createSoapRequest(campingCode,body);
 		Http http = new Http();
		HTTPResponse res = http.send(soapRequest);

		if (res.getStatusCode()==200){
			Trattamento result = TrattamentoXmlParser.parser(res.getBody());
			System.debug(result);
		}
}
 
global class JK_AutomaticCaseMail implements QuickAction.QuickActionDefaultsHandler {
    
    Case currentCase = new Case();

    // Constructor
    public JK_AutomaticCaseMail() {
        SERVICE_GenerateQuote requestData = new SERVICE_GenerateQuote();
        
        currentCase = [SELECT CaseNumber, data_di_partenza__c, data_di_arrivo__c, Tipologia_Richiesta__c, Campeggio__r.IdSGS__c FROM Case WHERE Id=:sendEmailDefault.getContextId()];
        Date dateFrom      = currentCase.data_di_partenza__c;
        Date dateTo        = currentCase.data_di_arrivo__c;
        // npax
        String tipoRisorsa = currentCase.Tipologia_Richiesta__c;
        // extraString
        // idLingua
        String campingCode = current.Case.Campeggio__r.IdSGS__c;


        requestData.callQuoteService(dateFrom, dateTo, npaxString, tipoRisorsa, extraString, idLingua, campingCode);

        /** i don't know how to handle the response after callQuoteService. **/
    }

    // Init mail template 
    global void onInitDefaults(QuickAction.QuickActionDefaults[] defaults) {
        QuickAction.SendEmailQuickActionDefaults sendEmailDefault = (QuickAction.SendEmailQuickActionDefaults)defaults.get(0);

        EmailTemplate em = [Select Id,HtmlValue from EmailTemplate where name ='JK_Template_MailToCustomer'];

        if (sendEmailDefaults != null && currentCase.CaseNumber != null) {

            EmailMessage emailMessage = (EmailMessage)sendEmailDefaults.getTargetSObject();
            emailMessage.BccAddress = c.ContactEmail;


            if (sendEmailDefault.getInReplyToId() == null) {
                Integer emailCount = [SELECT count() FROM EmailMessage 
                                      WHERE ParentId=:sendEmailDefaults.getContextId()];
                if (emailCount!= null && emailCount > 0) {
                    sendEmailDefault.setTemplateId(
                        getTemplateIdHelper('Automatic_Response'));
                } else {
                    sendEmailDefault.setTemplateId(
                        getTemplateIdHelper('New_Case_Created'));
                }
                sendEmailDefault.setInsertTemplateBody(false);
                sendEmailDefault.setIgnoreTemplateSubject(false);
            } else {
                sendEmailDefault.setTemplateId(
                    getTemplateIdHelper('Default_reply_template'));
                sendEmailDefault.setInsertTemplateBody(false);
                sendEmailDefault.setIgnoreTemplateSubject(true);
            }
        }
    }  
}

Bye,
Paolo.​​​​​​​