// Apex Trigger : Auto -assign Priority Based on Subject Keywords trigger AutoPriorityTrigger on Case ( before insert) { for( Case c : Trigger .new ) { if( c .Subject != null && c.Subject .toLowerCase ( ) .contains ( 'urgent' ) ) { c.Priority = 'High' ; } else if ( c .Subject != null && c.Subject .toLowerCase ( ) .contains ( 'issue' ) ) { c.Priority = 'Medium' ; } else { c.Priority = 'Low' ; } } }
// Apex Class : Assign Case to Least Busy Agent public class CaseAssignment { public static void assignCase( Case newCase) { List <User > agents = [ SELECT Id FROM User WHERE UserRole .Name = 'Support Agent' AND IsActive = true ] ;
Map <Id , Integer > agentCaseCounts = new Map <Id , Integer >( ) ;
for ( User agent : agents ) {
Integer caseCount = [ SELECT COUNT ( ) FROM Case WHERE OwnerId = :agent .Id AND Status != 'Closed' ] ;
agentCaseCounts.put ( agent .Id , caseCount ) ;
}
Id leastBusyAgent = null ;
Integer minCount = Integer .MAX_VALUE ;
for ( Id agentId : agentCaseCounts .keySet ( ) ) {
if ( agentCaseCounts .get ( agentId ) < minCount) {
Ly8gQXBleCBUcmlnZ2VyOiBBdXRvLWFzc2lnbiBQcmlvcml0eSBCYXNlZCBvbiBTdWJqZWN0IEtleXdvcmRzIHRyaWdnZXIgQXV0b1ByaW9yaXR5VHJpZ2dlciBvbiBDYXNlIChiZWZvcmUgaW5zZXJ0KSB7IGZvcihDYXNlIGMgOiBUcmlnZ2VyLm5ldykgeyBpZihjLlN1YmplY3QgIT0gbnVsbCAmJiBjLlN1YmplY3QudG9Mb3dlckNhc2UoKS5jb250YWlucygndXJnZW50JykpIHsgYy5Qcmlvcml0eSA9ICdIaWdoJzsgfSBlbHNlIGlmIChjLlN1YmplY3QgIT0gbnVsbCAmJiBjLlN1YmplY3QudG9Mb3dlckNhc2UoKS5jb250YWlucygnaXNzdWUnKSkgeyBjLlByaW9yaXR5ID0gJ01lZGl1bSc7IH0gZWxzZSB7IGMuUHJpb3JpdHkgPSAnTG93JzsgfSB9IH0KCi8vIEFwZXggQ2xhc3M6IEFzc2lnbiBDYXNlIHRvIExlYXN0IEJ1c3kgQWdlbnQgcHVibGljIGNsYXNzIENhc2VBc3NpZ25tZW50IHsgcHVibGljIHN0YXRpYyB2b2lkIGFzc2lnbkNhc2UoQ2FzZSBuZXdDYXNlKSB7IExpc3Q8VXNlcj4gYWdlbnRzID0gW1NFTEVDVCBJZCBGUk9NIFVzZXIgV0hFUkUgVXNlclJvbGUuTmFtZSA9ICdTdXBwb3J0IEFnZW50JyBBTkQgSXNBY3RpdmUgPSB0cnVlXTsKCk1hcDxJZCwgSW50ZWdlcj4gYWdlbnRDYXNlQ291bnRzID0gbmV3IE1hcDxJZCwgSW50ZWdlcj4oKTsKICAgIGZvciAoVXNlciBhZ2VudCA6IGFnZW50cykgewogICAgICAgIEludGVnZXIgY2FzZUNvdW50ID0gW1NFTEVDVCBDT1VOVCgpIEZST00gQ2FzZSBXSEVSRSBPd25lcklkID0gOmFnZW50LklkIEFORCBTdGF0dXMgIT0gJ0Nsb3NlZCddOwogICAgICAgIGFnZW50Q2FzZUNvdW50cy5wdXQoYWdlbnQuSWQsIGNhc2VDb3VudCk7CiAgICB9CgogICAgSWQgbGVhc3RCdXN5QWdlbnQgPSBudWxsOwogICAgSW50ZWdlciBtaW5Db3VudCA9IEludGVnZXIuTUFYX1ZBTFVFOwogICAgZm9yIChJZCBhZ2VudElkIDogYWdlbnRDYXNlQ291bnRzLmtleVNldCgpKSB7CiAgICAgICAgaWYgKGFnZW50Q2FzZUNvdW50cy5nZXQoYWdlbnRJZCkgPCBtaW5Db3VudCkgewoK