Untitled

 avatar
unknown
apex
a month ago
2.1 kB
2
Indexable
// Trigger für Case Status Änderungen
trigger CaseStatusChangeTrigger on Case (after update) {
    // Liste für Cases die eine E-Mail erhalten sollen
    List<Case> casesToNotify = new List<Case>();
    
    // E-Mail Template ID dynamisch laden
    EmailTemplate template = [SELECT Id FROM EmailTemplate WHERE Name = 'CaseStatus' LIMIT 1];
    ID emailTemplateId = template.Id;
    
    for(Case newCase : Trigger.new) {
        Case oldCase = Trigger.oldMap.get(newCase.Id);
        
        // Prüfen ob sich der Status geändert hat
        if(newCase.Status != oldCase.Status) {
            casesToNotify.add(newCase);
        }
    }
    
    if(!casesToNotify.isEmpty()) {
        // E-Mails erstellen und senden
        List<Messaging.SingleEmailMessage> emailsToSend = new List<Messaging.SingleEmailMessage>();
        
        for(Case c : casesToNotify) {
            // Nur fortfahren wenn Kontakt-Email vorhanden
            if(c.ContactEmail != null) {
                Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
                
                // E-Mail Empfänger setzen
                mail.setToAddresses(new String[] { c.ContactEmail });
                
                // Template zuweisen
                mail.setTemplateId(emailTemplateId);
                
                // WhatId auf Case setzen für Template-Merge
                mail.setWhatId(c.Id);
                
                // TargetObjectId muss auf einen Kontakt oder User gesetzt werden
                mail.setTargetObjectId(c.ContactId);
                
                // SaveAsActivity auf true setzen um E-Mail im Case zu protokollieren
                mail.setSaveAsActivity(true);
                
                emailsToSend.add(mail);
            }
        }
        
        // E-Mails senden wenn vorhanden
        if(!emailsToSend.isEmpty()) {
            try {
                Messaging.sendEmail(emailsToSend);
            } catch(Exception e) {
                System.debug('Fehler beim E-Mail-Versand: ' + e.getMessage());
            }
        }
    }
}
Leave a Comment