Development questions

Write a trigger to send an email notification to the Account Owner whenever a high-value Opportunity (> $50,000) is deleted, including details of who deleted it.

Use after delete, read from Trigger.old, query the Owner emails, and send one batched email call.

apex
trigger OppTrigger on Opportunity (after delete) {
    Set<Id> ownerIds = new Set<Id>();
    for (Opportunity o : Trigger.old) if (o.Amount > 50000) ownerIds.add(o.OwnerId);
    Map<Id, User> owners = new Map<Id, User>([SELECT Id, Email FROM User WHERE Id IN :ownerIds]);
    List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
    for (Opportunity o : Trigger.old) {
        if (o.Amount > 50000) {
            Messaging.SingleEmailMessage m = new Messaging.SingleEmailMessage();
            m.setToAddresses(new String[]{ owners.get(o.OwnerId).Email });
            m.setSubject('High-value Opportunity deleted: ' + o.Name);
            m.setPlainTextBody(o.Name + ' (' + o.Amount + ') was deleted by ' + UserInfo.getName());
            mails.add(m);
        }
    }
    if (!mails.isEmpty()) Messaging.sendEmail(mails);
}

Call sendEmail once with a list, since single-email calls per transaction are limited.

apex-triggertriggercodingscenarioemail