Триггер для обновления имени учетной записи контакта из записи пользователя (имя учетной записи) - сообщества

В Salesforce Communities я хочу, чтобы клиенты самостоятельно регистрировались в сообществах, чтобы самостоятельно зарегистрировать имя учетной записи по умолчанию (Testaaccount), поэтому мое требование состоит в том, чтобы пользователь создал свою учетную запись сообщества со всеми деталями и ввел имя учетной записи. тоже; На странице сведений о пользователе имя учетной записи будет сохранено в виде текста. Я хочу, чтобы это имя учетной записи было заменено на заданное по умолчанию имя учетной записи (Testaccount); Я написал триггер для контакта, и это работает только тогда, когда я пытаюсь отредактировать и сохранить запись, но я хочу, чтобы учетная запись по умолчанию заменялась на записи контакта, когда любой клиент сам регистрируется;

Открытый класс ContactTriggerHandler {

    public static void updateContactAccount(List<Contact> newList) {
                system.debug('Entered after insert handler******');

        Map<String,String> emailByAcctNameMap = new Map<String,String>();
        Map<String,string> acctNameByIdMap = new Map<String,string>();
        List<User> updateContactList = new List<User>();  
        Set<String> acctNameSet = new set<String>();
        Set<String> emailSet = new set<String>();

        for(Contact u : newList) {
            emailSet.add(u.email);
        }

        for(User usr : [SELECT Id,Account_Name__c,Email FROM User WHERE Email IN: emailSet]) {
            emailByAcctNameMap.put(usr.Email,usr.Account_Name__c);
        }

        for(Account acc : [SELECT Id,Name FROM Account WHERE Name IN: emailByAcctNameMap.values()]) {
            acctNameByIdMap.put(acc.Name,acc.Id);
        } 

        for(contact c : newList) {
            if(emailByAcctNameMap.containsKey(c.Email)) {
                c.AccountId = acctNameByIdMap.get(emailByAcctNameMap.get(c.Email));
            }
        }
    }
}
-----

-----
trigger ContactTrigger on Contact (before insert,before update) 
{
     if(trigger.isBefore) {
        if(trigger.isInsert) {
         system.debug('Entered after insert ******');
            ContactTriggerHandler.updateContactAccount(trigger.new);

        }
        if(trigger.isUpdate) {
            /*** ---- Before Update Events ----- ***/``
            system.debug('Entered after insert ******');
            ContactTriggerHandler.updateContactAccount(trigger.new);
        }
 }
}

0 ответов

Другие вопросы по тегам