Created
May 12, 2016 09:00
-
-
Save adtennant/d821ea2426bbfa44465a6d2fa8499808 to your computer and use it in GitHub Desktop.
Replacing your Apex Triggers with Processes and Invocable Actions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trigger DefaultEntitlement on Case (before insert, before update) { | |
Set<Id> accountIds = new Set<Id>(); | |
for (Case c : Trigger.new){ | |
if (c.EntitlementId == null && c.AccountId != null) { | |
accountIds.add(c.AccountId); | |
} | |
} | |
if(accountIds.size() > 0) { | |
List <Entitlement> entitlements = [ | |
SELECT StartDate, EndDate, AccountId, AssetId | |
FROM Entitlement | |
WHERE AccountId in :accountIds | |
AND StartDate <= TODAY | |
AND EndDate >= TODAY | |
]; | |
if(entitlements.size() > 0) { | |
Map<Id, Entitlement> entitlementsByAccountId = new Map<Id, Entitlement>(); | |
for(Entitlement e : entitlements) { | |
entitlementsByAccountId.put(e.AccountId, e); | |
} | |
for(Case c : Trigger.new) { | |
if(c.EntitlementId == null && c.AccountId != null) { | |
Entitlement e = entitlementsByAccountId.get(c.AccountId); | |
if(e != null) { | |
c.EntitlementId = e.Id; | |
if(c.AssetId == null && e.AssetId != null) { | |
c.AssetId = e.AssetId; | |
} | |
} | |
} | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class DefaultEntitlementAction { | |
@InvocableMethod(label='Update Default Entitlements' description='Determines the default Entitlement for the Case and returns the updated Cases.') | |
public static void updateDefaultEntitlements(List<Case> casesToUpdate) { | |
List<Case> cases = [ | |
SELECT AccountId, EntitlementId, AssetId | |
FROM Case | |
WHERE Id :new Map<Id, Case>(casesToUpdate).keySet() | |
]; | |
Set<Id> accountIds = new Set<Id>(); | |
for (Case c : cases){ | |
if (c.EntitlementId == null && c.AccountId != null) { | |
accountIds.add(c.AccountId); | |
} | |
} | |
if(accountIds.size() > 0) { | |
List <Entitlement> entitlements = [ | |
SELECT StartDate, EndDate, AccountId, AssetId | |
FROM Entitlement | |
WHERE AccountId in :accountIds | |
AND StartDate <= TODAY | |
AND EndDate >= TODAY | |
]; | |
if(entitlements.size() > 0) { | |
Map<Id, Entitlement> entitlementsByAccountId = new Map<Id, Entitlement>(); | |
for(Entitlement e : entitlements) { | |
entitlementsByAccountId.put(e.AccountId, e); | |
} | |
for(Case c : cases){ | |
if(c.EntitlementId == null && c.AccountId != null) { | |
Entitlement e = entitlementsByAccountId.get(c.AccountId); | |
if(e != null) { | |
c.EntitlementId = e.Id; | |
if(c.AssetId == null && e.AssetId != null) { | |
c.AssetId = e.AssetId; | |
} | |
} | |
} | |
} | |
update cases; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment