0

I'm trying to change some code within our org that was created by a third party. I need some help understanding what the first part of the code does as I need to add a new SOQL query and get records from an unrelated object. Please can somebody help explain the first part of code?

public with sharing class COL_JIS_EmailConversationController {

 BMCServiceDesk__Incident__c incident = null;
//List<BMCServiceDesk__CustomAttachment__c> incidentAttachments = null;
//Map<String,String> incidentAttachments = null;

 transient String bodyText = null;
 transient String lastEmailBody = null;
 String subject = null;
//Attachment attachment = null;
//String attID = null;
String toAddresses = '';
String ccAddresses = '';

    public COL_JIS_EmailConversationController(){
  incident =  [select id, name, COL_JIS_Caller_Email__c, COL_JIS_Caller_Name__c, COL_JIS_Subject__c,
                    BMCServiceDesk__openDateTime__c,BMCServiceDesk__IncidentDescription__c,
                    COL_JIS_Service_Desk_Signature__c,COL_JIS_Incident_History_last_entry__c,
                    COL_JIS_Category_Type__c
                           from BMCServiceDesk__Incident__c
            where id = :ApexPages.currentPage().getParameters().get('id') limit 1];

        List<BMCServiceDesk__IncidentHistory__c> inboundEmails = [select Id, BMCServiceDesk__note__c, BMCServiceDesk__EmailConversationData__c,
                                                                                COL_JIS_CCEmailAddresses__c
                                                                                from BMCServiceDesk__IncidentHistory__c 
                                                                                where BMCServiceDesk__actionId__c = 'Email Received'
                                                                                and BMCServiceDesk__FKIncident__c = :ApexPages.currentPage().getParameters().get('id')
                                                                                order by Name DESC Limit 1]; 

        if(inboundEmails != null && inboundEmails.size() > 0){
            lastEmailBody = inboundEmails[0].BMCServiceDesk__note__c;
            if(inboundEmails[0].BMCServiceDesk__EmailConversationData__c != null){toAddresses = inboundEmails[0].BMCServiceDesk__EmailConversationData__c;}
            if(inboundEmails[0].COL_JIS_CCEmailAddresses__c != null){ccAddresses = inboundEmails[0].COL_JIS_CCEmailAddresses__c;}
        }
    if(incident != null){
        toAddresses += incident.COL_JIS_Caller_Email__c;
        subject = incident.COL_JIS_Subject__c;   
    }

}

public PageReference sendEmail() {
    system.debug('enter sendEmail');

    // attach files
    attachFile();
    // create a mail incident history record 

    BMCServiceDesk__Action__c action = null;
    List<BMCServiceDesk__Action__c> actions = [select Id from BMCServiceDesk__Action__c where BMCServiceDesk__Abbreviation__c = 'EMAILOUT' Limit 1];
    if(actions != null && actions.size()>0){
        system.debug('action found');
      action = actions[0];
    }

    String emailBody = bodyText;




    system.debug('************************* To: ' + toAddresses);
    COL_JIS_SingleEmailMessage mail = new COL_JIS_SingleEmailMessage();

    // get the org address to send the email from
    if(incident.COL_JIS_Category_Type__c != ''){
        List<OrgWideEmailAddress> orgWideAddresses = [SELECT Id, Address FROM OrgWideEmailAddress WHERE DisplayName = :incident.COL_JIS_Category_Type__c limit 1 ];
        if(orgWideAddresses != null && orgWideAddresses.size() > 0){
            mail.setReplyTo(orgWideAddresses[0].Address);
            mail.setOrgWideEmailAddressId(orgWideAddresses[0].Id);
        }

    }

    // set the from address as the default no reply
    /*List<OrgWideEmailAddress> replyTo = [SELECT Id, Address FROM OrgWideEmailAddress WHERE DisplayName = 'Jisc Remedyforce' limit 1 ];
        if(replyTo != null && replyTo.size() > 0){
            mail.setOrgWideEmailAddressId(replyTo[0].Id);

        }*/

    mail.setToAddress(toAddresses);
    mail.setSubject(subject + '(Ref:IN:' + incident.Name + ')');
    if(ccAddresses != null && ccAddresses != ''){
        mail.setCcAddresses(ccAddresses);
    }
    mail.setPlainTextBody(buildPlaintextBody());
    mail.setHtmlBody(buildHTMLBody());
    mail.setSaveAsActivity(false);
    Messaging.EmailFileAttachment[] attachArray = new Messaging.EmailFileAttachment[]{};
    String attachmentText = '';
    Integer noOfAttachments = selectedFoos.size();

    if(selectedFoos.size() > 0){
        //noOfAttachments ++;
        attachmentText = 'Attachments sent with this email(' + noOfAttachments + ')';
    }

    //List<Attachment> attachmentsToInsert = new List<Attachment>();
    Integer i = 1;
    for(Attachment a : selectedFoos){

        attachmentText += '\n' + i + '. ' + a.Name;
        i++;
        Messaging.EmailFileAttachment attach = new Messaging.EmailFileAttachment();
        Attachment at = [select body from Attachment where Id = :a.Id limit 1];
        attach.setFileName(a.Name);
        attach.setBody(at.body);
        //a.parentId = incident.Id;
        attachArray.add(attach);

        //if(a.Id == null){
            //attachmentsToInsert.add(a);
        //}
    }
    //insert attachmentsToInsert;

    if(attachmentText != ''){
        attachmentText += '\n***********************';
    }
    mail.setFileAttachments(attachArray);

    if(incident != null && action != null){
        system.debug('incident and action exist');
        Integer actionCount = [select count() from BMCServiceDesk__IncidentHistory__c where BMCServiceDesk__FKIncident__c = :incident.Id];
        actionCount++;
        String actionName = incident.Name + '_' + string.valueOf(actionCount);
        // add a note to the incident

        emailBody = bodyText + '\n\n' + attachmentText ;

        BMCServiceDesk__IncidentHistory__c note = new BMCServiceDesk__IncidentHistory__c(BMCServiceDesk__FKIncident__c = incident.Id,
                                                    BMCServiceDesk__note__c = emailBody,
                                                    BMCServiceDesk__description__c = 'Email sent to ' + toAddresses,
                                                    BMCServiceDesk__FKAction__c = action.Id,
                                                    Name =  actionName,COL_JIS_Caller_Email__c = incident.COL_JIS_Caller_Email__c );
        if(note != null){
            system.debug('insert the note');
            insert note;
        }
    }

try{
    mail.send();
}catch(Exception e){
    ApexPages.addMessages(e);
    return null;
}

//return null; // stay on the same page 
return new PageReference('javascript:window.close()');

}

String[] getAddressArray(String addresses){
    if(addresses == null){addresses = '';}
    String[] addressList = addresses.split(';',0);
    return addressList;

}

public BMCServiceDesk__Incident__c getIncident() {

    return incident;
}

public String getToAddresses() {
    if(toAddresses == null){
        toAddresses = getIncident().COL_JIS_Caller_Email__c;
    }
    return toAddresses;
}

public void setToAddresses(String s){
    toAddresses = s;
}

public String getCcAddresses() {

    return ccAddresses;
}

public void setCcAddresses(String s){
    ccAddresses = s;
}

public String getAdditionalText() {
    return bodyText;
}

public void setAdditionalText(String s) {
    bodyText = s;
}

public String getLastEmailText() {


    return lastEmailBody;
}

public void setLastEmailText(String s) {
    lastEmailBody = s;
}

public String getSubject() {


    return subject;
}

public void setSubject(String s) {
    subject = s;
}

 public String getAttachFiles() {

    String attachmentList = '';

    for(Attachment a : attachments){
        attachmentList += a.name + '\n';
    }   
    return attachmentList;
}



// =====================================================================================
// Private helper methods
// =====================================================================================

private String buildHTMLBody(){
    // we cannot use templates as this would require a contact or user and would 
    // result in a double count of the email limit.


    String body = bodyText;
    body = body.replaceAll('\n','<br>');
    body += '<p>Enquiry Number: '  + incident.Name;
    body += '<br>Subject: ';
    if(incident.COL_JIS_Subject__c != null){body += incident.COL_JIS_Subject__c;}
    body += '<br>Open Date: ';
    if(incident.BMCServiceDesk__openDateTime__c != null){body += incident.BMCServiceDesk__openDateTime__c;}
    body += '<br>Caller Name: ';
    if(incident.COL_JIS_Caller_Name__c != null){body += incident.COL_JIS_Caller_Name__c;}
    body += '<br>Enquiry: <p>';
    if(incident.BMCServiceDesk__incidentDescription__c != null){body += incident.BMCServiceDesk__incidentDescription__c.replaceAll('\n', '<br>');}
    body += '<p>Please reply to this email with any updates on this issue.<p>';
    if(incident.COL_JIS_Service_Desk_Signature__c != null){body += incident.COL_JIS_Service_Desk_Signature__c;}
    body += '<p><hr/><p>';
    if(lastEmailBody != null){body += lastEmailBody.replaceAll('\n', '<br>');}

    return body;

}

private String buildPlaintextBody(){
    // we cannot use templates as this would require a contact or user and would 
    // result in a double count of the email limit.

    String body = bodyText;
    body += '\n\nEnquiry Number: '  + incident.Name;
    body += '\nSubject: ';
    if(incident.COL_JIS_Subject__c != null){body += incident.COL_JIS_Subject__c;}
    body += '\nOpen Date: ';
    if(incident.BMCServiceDesk__openDateTime__c != null){body += incident.BMCServiceDesk__openDateTime__c;}
    body += '\nCaller Name: ';
    if(incident.COL_JIS_Caller_Name__c != null){body += incident.COL_JIS_Caller_Name__c;}
    body += '\nEnquiry: \n';
    if(incident.BMCServiceDesk__incidentDescription__c != null){body += incident.BMCServiceDesk__incidentDescription__c;}
    body += '\nPlease reply to this email with any updates on this issue.\n\n';
    if(incident.COL_JIS_Service_Desk_Signature__c != null){body += incident.COL_JIS_Service_Desk_Signature__c;}
    body += '\n----------------------------------------------------------------\n\n';
    if(lastEmailBody != null){body += lastEmailBody;}

    return body;

}

1 Answer 1

0

These are simple variable declaration and initialization. Are you sure you have uploaded the correct/complete part of the class?

1
  • Sorry Mansoor, the rest of it is above, I'm not sure it's appropriate for me to post such a long piece of code though so don't worry if you can't answer it :). I think I need to write another soql query that pulls a field from the BMCServiceDesk__IncidentHistory__c object. But I don't know exactly how to do that. Everything I try seems to flag a failiure
    – Glenn Daly
    Commented May 12, 2016 at 13:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .