function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
RahulRahul 

hello friends, Iam new to apex trigger handler. can you tell me how to convert this code into class and call it from Trigger.Thanks


trigger AccountTrigger on Account (after insert, after update) {

set<string> setstring = new set<string>();

list<Account> listAccount = new list<Account>();

Pincode__mdt[]   pin= [select city__C, state__C from Pincode__mdt ];


for(Account a : trigger.new){
if(Trigger.IsInsert && Trigger.isAfter ){
if(a.Pincode__C != null){
setstring.add(a.Pincode__C);

system.debug('value in pin' + Pin);
system.debug('This is insert Trigger');

}
}
}

Pincode__mdt[]   pin2= [select city__C, state__C,pincode__C from Pincode__mdt where pincode__C =:setstring ];

system.debug('this is pin2'+ pin2);

for(Pincode__mdt pt : pin2){

for(Account ac : trigger.new){
if(ac.pincode__C == pt.pincode__C){

ac.Billing_City__c   = pt.city__C;

ac.Billing_State__c    = pt.state__C;

listAccount.add(ac);

system.debug('Values in ListAccount'+listAccount);
}


}
}
insert listAccount;

if(Trigger.isUpdate){

system.debug('This is Update');

}

}
 
Best Answer chosen by Rahul
Ajay K DubediAjay K Dubedi
Hi Sumit,
Here is the Trigger :
trigger AccountTrigger on Account (after insert, after update) {
    
    if(Trigger.IsInsert && Trigger.isAfter ){
        AccountTrigger_Handler.handlerFunction(trigger.new);
    }
    
    if(Trigger.isUpdate){
        system.debug('This is Update');
    }
}
This is for Trigger Handler:
 
public class AccountTrigger_Handler {
    public static void handlerFunction(List <Account> accList) {
        try {
            set<string> setstring = new set<string>();
            list<Account> listAccount = new list<Account>();
            List<Pincode__mdt> pin = new List<Pincode__mdt>();
            List<Pincode__mdt> pin2 = new List<Pincode__mdt>();
            
            if(accList.size() > 0) {
                pin = [select city__C, state__C from Pincode__mdt Limit 10000];//Use List insted of array.
                
                for(Account a : accList){
                    
                    if(a.Pincode__C != null){
                        
                        setstring.add(a.Pincode__C);
                        system.debug('value in pin' + Pin);
                        system.debug('This is insert Trigger');
                        
                    }
                }
                pin2 = [select city__C, state__C, pincode__C from Pincode__mdt where pincode__C IN : setstring Limit 10000];
                system.debug('This is pin2------>'+ pin2);
                
                if(pin2.size() > 0) {
                    for(Pincode__mdt pt : pin2) {
                        for(Account ac : accList) {
                            if(ac.pincode__C == pt.pincode__C){
                                
                                ac.Billing_City__c = pt.city__C;
                                
                                ac.Billing_State__c = pt.state__C;
                                
                                listAccount.add(ac);
                                
                                system.debug('Values in ListAccount------>'+listAccount);
                            }
                        }
                    }
                    insert listAccount;
                }
            }
        } catch(Exception ex){
            system.debug('Exception---ofLine--->'+ex.getLineNumber());
            system.debug('Exception---Message--->'+ex.getMessage());
            
        }
    }
}
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks,
Ajay Dubedi

 

All Answers

Harsh P.Harsh P.
Hi,
Check the Opening and closing brackets and Try below one: 

HelperClass:

public with sharing class AccountTriggerHelper {

public static void accountHelperMtd(List<Account> accList) {
set<string> setstring = new set<string>();

list<Account> listAccount = new list<Account>();

Pincode__mdt[]   pin= [select city__C, state__C from Pincode__mdt ];


for(Account a : accList {

if(a.Pincode__C != null){
setstring.add(a.Pincode__C);

system.debug('value in pin' + Pin);
system.debug('This is insert Trigger');

}
}

Pincode__mdt[]   pin2= [select city__C, state__C,pincode__C from Pincode__mdt where pincode__C =:setstring ];

system.debug('this is pin2'+ pin2);

for(Pincode__mdt pt : pin2){

for(Account ac : accList){
if(ac.pincode__C == pt.pincode__C){

ac.Billing_City__c   = pt.city__C;

ac.Billing_State__c    = pt.state__C;

listAccount.add(ac);

system.debug('Values in ListAccount'+listAccount);
}


}
}
insert listAccount;

}



Trigger :

trigger AccountTrigger on Account (after insert, after update) {
if(Trigger.IsInsert && Trigger.isAfter ){
AccountTriggerHelper .accountHelperMtd(Trigger.new);
}
if(Trigger.isUpdate){
system.debug('This is Update');

}
}
Harsh P.Harsh P.
Above code having some brackets missing. Use below Error free code :


Helper class:

public with sharing class AccountTriggerHelper {

public static void accountHelperMtd(List<Account> accList) {
set<string> setstring = new set<string>();

list<Account> listAccount = new list<Account>();

Pincode__mdt[]   pin= [select city__C, state__C from Pincode__mdt ];


for(Account a : accList) {

if(a.Pincode__C != null){
setstring.add(a.Pincode__C);

system.debug('value in pin' + Pin);
system.debug('This is insert Trigger');

}
}

Pincode__mdt[]   pin2= [select city__C, state__C,pincode__C from Pincode__mdt where pincode__C =:setstring ];

system.debug('this is pin2'+ pin2);

for(Pincode__mdt pt : pin2){

for(Account ac : accList){
if(ac.pincode__C == pt.pincode__C){
ac.Billing_City__c   = pt.city__C;
ac.Billing_State__c    = pt.state__C;

listAccount.add(ac);

system.debug('Values in ListAccount'+listAccount);
}


}
}
insert listAccount;

}
}

Trigger:


trigger AccountTrigger on Account (after insert, after update) {
if(Trigger.IsInsert && Trigger.isAfter ){
AccountTriggerHelper .accountHelperMtd(Trigger.new);
}
if(Trigger.isUpdate){
system.debug('This is Update');

}
}

Please mark as best answere..........................!
Ajay K DubediAjay K Dubedi
Hi Sumit,
Here is the Trigger :
trigger AccountTrigger on Account (after insert, after update) {
    
    if(Trigger.IsInsert && Trigger.isAfter ){
        AccountTrigger_Handler.handlerFunction(trigger.new);
    }
    
    if(Trigger.isUpdate){
        system.debug('This is Update');
    }
}
This is for Trigger Handler:
 
public class AccountTrigger_Handler {
    public static void handlerFunction(List <Account> accList) {
        try {
            set<string> setstring = new set<string>();
            list<Account> listAccount = new list<Account>();
            List<Pincode__mdt> pin = new List<Pincode__mdt>();
            List<Pincode__mdt> pin2 = new List<Pincode__mdt>();
            
            if(accList.size() > 0) {
                pin = [select city__C, state__C from Pincode__mdt Limit 10000];//Use List insted of array.
                
                for(Account a : accList){
                    
                    if(a.Pincode__C != null){
                        
                        setstring.add(a.Pincode__C);
                        system.debug('value in pin' + Pin);
                        system.debug('This is insert Trigger');
                        
                    }
                }
                pin2 = [select city__C, state__C, pincode__C from Pincode__mdt where pincode__C IN : setstring Limit 10000];
                system.debug('This is pin2------>'+ pin2);
                
                if(pin2.size() > 0) {
                    for(Pincode__mdt pt : pin2) {
                        for(Account ac : accList) {
                            if(ac.pincode__C == pt.pincode__C){
                                
                                ac.Billing_City__c = pt.city__C;
                                
                                ac.Billing_State__c = pt.state__C;
                                
                                listAccount.add(ac);
                                
                                system.debug('Values in ListAccount------>'+listAccount);
                            }
                        }
                    }
                    insert listAccount;
                }
            }
        } catch(Exception ex){
            system.debug('Exception---ofLine--->'+ex.getLineNumber());
            system.debug('Exception---Message--->'+ex.getMessage());
            
        }
    }
}
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks,
Ajay Dubedi

 
This was selected as the best answer
RahulRahul
Thanks for your support friends