Skip to main content
Hi, 

I am new to salesforce development.

How to write helper class for below apex trigger.

the handler class should have same logic. 

trigger DefaultEntitlement on Case (Before Insert, Before Update) { Set<Id> contactIds = new Set<Id>();

Set<Id> acctIds = new Set<Id>();

for (Case c : Trigger.new) {

  contactIds.add(c.ContactId);

  acctIds.add(c.AccountId);

}

List <EntitlementContact> entlContacts =

[Select e.EntitlementId,e.ContactId,e.Entitlement.AssetId

From EntitlementContact e

Where e.ContactId in :contactIds

And e.Entitlement.EndDate >= Today

And e.Entitlement.StartDate <= Today];

if(entlContacts.isEmpty()==false){

for(Case c : Trigger.new){

if(c.EntitlementId == null && c.ContactId != null){

for(EntitlementContact ec:entlContacts){

if(ec.ContactId==c.ContactId){

c.EntitlementId = ec.EntitlementId;

if(c.AssetId==null && ec.Entitlement.AssetId!=null) c.AssetId=ec.Entitlement.AssetId;

break;

        }

   }

 }

}

} else{

List <Entitlement> entls = [Select e.StartDate, e.Id, e.EndDate,

e.AccountId, e.AssetId

From Entitlement e

Where e.AccountId in :acctIds And e.EndDate >= Today

And e.StartDate <= Today];

if(entls.isEmpty()==false){

for(Case c : Trigger.new){

if(c.EntitlementId == null && c.AccountId != null){

for(Entitlement e:entls){

if(e.AccountId==c.AccountId){

c.EntitlementId = e.Id;

if(c.AssetId==null && e.AssetId!=null)

c.AssetId=e.AssetId; break;

         }

     }

   }

}

}

}

}
1 Antwort
  1. 5. Jan. 2024, 13:01

    Trigger Code  @Sreekaanth reddy

    trigger DefaultEntitlement on Case (before insert, before update) {

    if(Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) {

    DefaultEntitlementHelper.updateCaseEntitlement(Trigger.new);

    }

    }

    helper Code 

    public class DefaultEntitlementHelper {

    public static void updateCaseEntitlement(List<Case> newCases) {

    Set<Id> contactIds = new Set<Id>();

    Set<Id> acctIds = new Set<Id>();

    for (Case c : newCases) {

    contactIds.add(c.ContactId);

    acctIds.add(c.AccountId);

    }

    List<EntitlementContact> entlContacts = [

    SELECT e.EntitlementId, e.ContactId, e.Entitlement.AssetId

    FROM EntitlementContact e

    WHERE e.ContactId IN :contactIds

    AND e.Entitlement.EndDate >= TODAY

    AND e.Entitlement.StartDate <= TODAY

    ];

    if (!entlContacts.isEmpty()) {

    for (Case c : newCases) {

    if (c.EntitlementId == null && c.ContactId != null) {

    for (EntitlementContact ec : entlContacts) {

    if (ec.ContactId == c.ContactId) {

    c.EntitlementId = ec.EntitlementId;

    if (c.AssetId == null && ec.Entitlement.AssetId != null) {

    c.AssetId = ec.Entitlement.AssetId;

    }

    break;

    }

    }

    }

    }

    } else {

    List<Entitlement> entls = [

    SELECT e.StartDate, e.Id, e.EndDate, e.AccountId, e.AssetId

    FROM Entitlement e

    WHERE e.AccountId IN :acctIds

    AND e.EndDate >= TODAY

    AND e.StartDate <= TODAY

    ];

    if (!entls.isEmpty()) {

    for (Case c : newCases) {

    if (c.EntitlementId == null && c.AccountId != null) {

    for (Entitlement e : entls) {

    if (e.AccountId == c.AccountId) {

    c.EntitlementId = e.Id;

    if (c.AssetId == null && e.AssetId != null) {

    c.AssetId = e.AssetId;

    }

    break;

    }

    }

    }

    }

    }

    }

    }

    }

0/9000