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
alex jainalex jain 

hello all! how to write trigger for Object A to getting lookup? Based on Compare two fields in object A with one field in object B.

Best Answer chosen by alex jain
Narayanan NatarajanNarayanan Natarajan
Hi Jain,

Please find corrected code below.,

public class UpdateMemberShipHistoryDetailsHelper 
{
    public static void updateLookUpFields(List<Membership_History__c> newList)
    {
        if(newList != NULL && newList.size() > 0) {

            Map<String,ID> accountsMap = new Map<String,ID>();
            Map<String,ID> contactsMap = new Map<String,ID>();
            Map<String,ID> branchesMap = new Map<String,ID>();
            Map<String, Id> memberShipIdMap = new Map<String, Id>();
        
            Set<String> memberShipSet = new Set<String>();
            Set<String> historyTypeSet = new Set<String>();
            Set<String> memberNumberSet = new Set<String>();
            Set<String> activityBranchSet = new Set<String>();

            for(Membership_History__c m:newList)
            {
                if(m.History_Type__c != NULL)
                    historyTypeSet.add(m.History_Type__c);
                
                if(m.Membership__c != NULL)
                    memberShipSet.add(m.Membership__c);

                if(m.Member_Number__c !=NULL)
                    memberNumberSet.add(m.Member_Number__c);
                
                if(m.Activity_Branch__c !=NULL)
                    activityBranchSet.add(m.Activity_Branch__c);                
            }

            System.debug('<--historyTypeSet-->'+historyTypeSet);
            System.debug('<--memberShipSet-->'+memberShipSet);
            System.debug('<--memberNumberSet-->'+memberNumberSet);
            System.debug('<--activityBranchSet-->'+activityBranchSet);

            if(memberNumberSet.size() > 0 || activityBranchSet.size() > 0 || historyTypeSet.size() > 0 || memberShipSet.size() > 0) {

                for(Membership_Type__c mt : [select id,Type_Code__c from Membership_Type__c WHERE Type_Code__c != NULL AND (Type_Code__c IN :memberShipSet OR Type_Code__c IN :historyTypeSet)]){
                        
                    memberShipIdMap.put(m.Type_Code__c, m.ID);        
                }

                System.debug('<--memberShipIdMap-->'+memberShipIdMap);

                if(memberNumberSet.size() > 0) {

                    for(Account a:[SELECT ID,Member_Number__c FROM Account WHERE Member_Number__c != NULL AND Member_Number__c IN:memberNumberSet])
                    {
                        accountsMap.put(a.Member_Number__c, a.ID);
                    }

                    for(Contact c:[Select ID,Member_Number__c from Contact where Member_Number__c != NULL AND Member_Number__c IN:memberNumberSet])
                    {
                        contactsMap.put(c.Member_Number__c, c.ID);            
                    }

                    System.debug('<--accountsMap-->'+accountsMap);
                    System.debug('<--contactsMap-->'+contactsMap);
                }

                if(activityBranchSet.size() > 0) {
                    
                    for(Branch__c b:[SELECT ID,Branch_Number__c FROM Branch__c WHERE Branch_Number__c!=NULL AND Branch_Number__c IN:activityBranchSet])
                    {
                        branchesMap.put(b.Branch_Number__c, b.ID);
                    }

                    System.debug('<--branchesMap-->'+branchesMap);
                }

                if(accountsMap.size() > 0 || contactsMap.size() > 0 || branchesMap.size() > 0 || memberShipIdMap.size() > 0) {

                    for(Membership_History__c m:newList)
                    {
                        m.Account__c=m.Member_Number__c != NULL && accountsMap.containsKey(m.Member_Number__c) ? accountsMap.get(m.Member_Number__c) : NULL;
                        m.Member__c=m.Member_Number__c != NULL && contactsMap.containsKey(m.Member_Number__c) ? contactsMap.get(m.Member_Number__c) : NULL;
                        m.Branch__c=m.Activity_Branch__c != NULL && branchesMap.containsKey(m.Activity_Branch__c) ? branchesMap.get(m.Activity_Branch__c) : NULL;
                        m.Membership_Type__c=m.History_Type__c != NULL && memberShipIdMap.containsKey(m.History_Type__c) ? memberShipIdMap.get(m.History_Type__c) : NULL; 
                    } 
                }
            }
        }      
    }
}
Thanks, 
Narayanan Natarajan

All Answers

Narayanan NatarajanNarayanan Natarajan

Hi Jain, 

Can you please give clear knowledge about it?

Thanks,
Narayanan Natarajan

Narayanan NatarajanNarayanan Natarajan
Hi Jain,

Please find corrected code below.,

public class UpdateMemberShipHistoryDetailsHelper 
{
    public static void updateLookUpFields(List<Membership_History__c> newList)
    {
        if(newList != NULL && newList.size() > 0) {

            Map<String,ID> accountsMap = new Map<String,ID>();
            Map<String,ID> contactsMap = new Map<String,ID>();
            Map<String,ID> branchesMap = new Map<String,ID>();
            Map<String, Id> memberShipIdMap = new Map<String, Id>();
        
            Set<String> memberShipSet = new Set<String>();
            Set<String> historyTypeSet = new Set<String>();
            Set<String> memberNumberSet = new Set<String>();
            Set<String> activityBranchSet = new Set<String>();

            for(Membership_History__c m:newList)
            {
                if(m.History_Type__c != NULL)
                    historyTypeSet.add(m.History_Type__c);
                
                if(m.Membership__c != NULL)
                    memberShipSet.add(m.Membership__c);

                if(m.Member_Number__c !=NULL)
                    memberNumberSet.add(m.Member_Number__c);
                
                if(m.Activity_Branch__c !=NULL)
                    activityBranchSet.add(m.Activity_Branch__c);                
            }

            System.debug('<--historyTypeSet-->'+historyTypeSet);
            System.debug('<--memberShipSet-->'+memberShipSet);
            System.debug('<--memberNumberSet-->'+memberNumberSet);
            System.debug('<--activityBranchSet-->'+activityBranchSet);

            if(memberNumberSet.size() > 0 || activityBranchSet.size() > 0 || historyTypeSet.size() > 0 || memberShipSet.size() > 0) {

                for(Membership_Type__c mt : [select id,Type_Code__c from Membership_Type__c WHERE Type_Code__c != NULL AND (Type_Code__c IN :memberShipSet OR Type_Code__c IN :historyTypeSet)]){
                        
                    memberShipIdMap.put(m.Type_Code__c, m.ID);        
                }

                System.debug('<--memberShipIdMap-->'+memberShipIdMap);

                if(memberNumberSet.size() > 0) {

                    for(Account a:[SELECT ID,Member_Number__c FROM Account WHERE Member_Number__c != NULL AND Member_Number__c IN:memberNumberSet])
                    {
                        accountsMap.put(a.Member_Number__c, a.ID);
                    }

                    for(Contact c:[Select ID,Member_Number__c from Contact where Member_Number__c != NULL AND Member_Number__c IN:memberNumberSet])
                    {
                        contactsMap.put(c.Member_Number__c, c.ID);            
                    }

                    System.debug('<--accountsMap-->'+accountsMap);
                    System.debug('<--contactsMap-->'+contactsMap);
                }

                if(activityBranchSet.size() > 0) {
                    
                    for(Branch__c b:[SELECT ID,Branch_Number__c FROM Branch__c WHERE Branch_Number__c!=NULL AND Branch_Number__c IN:activityBranchSet])
                    {
                        branchesMap.put(b.Branch_Number__c, b.ID);
                    }

                    System.debug('<--branchesMap-->'+branchesMap);
                }

                if(accountsMap.size() > 0 || contactsMap.size() > 0 || branchesMap.size() > 0 || memberShipIdMap.size() > 0) {

                    for(Membership_History__c m:newList)
                    {
                        m.Account__c=m.Member_Number__c != NULL && accountsMap.containsKey(m.Member_Number__c) ? accountsMap.get(m.Member_Number__c) : NULL;
                        m.Member__c=m.Member_Number__c != NULL && contactsMap.containsKey(m.Member_Number__c) ? contactsMap.get(m.Member_Number__c) : NULL;
                        m.Branch__c=m.Activity_Branch__c != NULL && branchesMap.containsKey(m.Activity_Branch__c) ? branchesMap.get(m.Activity_Branch__c) : NULL;
                        m.Membership_Type__c=m.History_Type__c != NULL && memberShipIdMap.containsKey(m.History_Type__c) ? memberShipIdMap.get(m.History_Type__c) : NULL; 
                    } 
                }
            }
        }      
    }
}
Thanks, 
Narayanan Natarajan
This was selected as the best answer
alex jainalex jain
Thanks for your reply.
Narayanan NatarajanNarayanan Natarajan

Hi Jain,

Please give like if its a best answer.

Thanks,
Narayanan Natarajan

Narayanan NatarajanNarayanan Natarajan

Hi Jain,

Please find code below for that trigger.

trigger LeadTrigger on Lead(before insert, before update) {

    Set<String> emailSet = new Set<String>();

    for(Lead lead1 : trigger.new) {

        if(lead1.Email != NULL && (Trigger.isInsert || (trigger.isUpdate && trigger.oldMap.containsKey(lead1.Id) && trigger.oldMap.get(lead1.Id).Email))) 
            emailSet.add(lead1);
    }

    System.debug('<--emailSet-->'+emailSet);

    if(emailSet.size() > 0) {

        List<Lead> leadList = new List<Lead>();

        for(Lead lead1 : [SELECT Id, Email FROM Lead WHERE Email IN :emailList]) {

            emailSet.remove(String.valueOf(lead1.Email));            lead1.ContactedDate__c = Date.today();
            leadList.add(lead1);
        }

        System.debug('<--emailSet-->'+emailSet);
        System.debug('<--leadList-->'+leadList);

        if(emailSet.size() > 0 && leadList.size() > 0) {

            Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
            message.toAddresses = new String[] { 'test@gmail.com'};
            message.subject = 'Duplicate Lead Record Found for';
            message.plainTextBody = 'Duplicate Lead to be found for ';

            for(String str : emailSet) {

                message.subject += str + ',';
            }

            message.subject.remove(',');

            System.debug('<--emailSet-->'+message);
            
            Messaging.SendEmailResult[] results = Messaging.sendEmail(new List<Messaging.SingleEmailMessage> {message});

            if (results[0].success) {
                System.debug('The email was sent successfully.');
            } else {
                System.debug('The email failed to send: ' + results[0].errors[0].message);
            }

        }
    }
}


NOTE : I didnt understand that Contact URL logic. Could you please give detail about it?

Thanks,
Narayanan Natarajan

alex jainalex jain
It is not working for me.