Untitled
unknown
plain_text
a year ago
1.7 kB
8
Indexable
trigger HandleOverflowChildCases on Case (before insert, before update) {
Set<Id> parentCaseIds = new Set<Id>();
Map<Id, Integer> agentCapacityMap = new Map<Id, Integer>();
for (Case childCase : Trigger.new) {
if (childCase.ParentId != null) {
parentCaseIds.add(childCase.ParentId);
}
}
if (!parentCaseIds.isEmpty()) {
// Query parent cases to get their owners
List<Case> parentCases = [SELECT Id, OwnerId FROM Case WHERE Id IN :parentCaseIds];
// Query the current case count for each agent
for (Case parentCase : parentCases) {
Integer currentCapacity = [SELECT COUNT() FROM Case WHERE OwnerId = :parentCase.OwnerId];
agentCapacityMap.put(parentCase.OwnerId, currentCapacity);
}
for (Case childCase : Trigger.new) {
if (childCase.ParentId != null) {
Case parentCase = parentCases.get(parentCaseMap.get(childCase.ParentId));
if (parentCase != null && parentCase.OwnerId != null) {
Integer currentCapacity = agentCapacityMap.get(parentCase.OwnerId);
if (currentCapacity != null && currentCapacity >= [YOUR_CAPACITY_LIMIT]) {
childCase.Deferred_Assignment__c = true;
childCase.OwnerId = [SELECT Id FROM Group WHERE Name = 'Deferred Child Cases Queue' LIMIT 1].Id;
} else {
childCase.OwnerId = parentCase.OwnerId;
agentCapacityMap.put(parentCase.OwnerId, currentCapacity + 1); // Increment capacity count
}
}
}
}
}
}
Editor is loading...
Leave a Comment