You need to sign in to do that
Don't have an account?
Anjana Sharma 9
how to write test class for this trigger for bulk data?
public static void createContactsv1 (List<Account> listOfAccounts, Map<Id, Account> mapoldAccount){
Set<Id> setOfIds = new Set<Id>();
Map<Id, List<String>> mapOfAccountIdAndString = new Map<Id, List<String>>();
List<Account> accountToUpdate = new List<Account>();
for(Account account : listOfAccounts){
if(String.isNotBlank(account.Move_To_Account__c) && String.isNotBlank(account.Move_To_Contacts__c) && (mapoldAccount == null
|| mapoldAccount.get(account.Id).Move_To_Account__c != account.Move_To_Account__c
|| mapoldAccount.get(account.Id).Move_To_Contacts__c != account.Move_To_Contacts__c))
{
List<String> listOfContacts = account.Contacts__c.split('\n');
List<String> listOfMoveToContacts = account.Move_To_Contacts__c.split('\n');
if(listOfContacts.size()>0)
{
String moveToContact = '';
for(String contact : listOfMoveToContacts)
{
if(listOfMoveToContacts.size()>0 && listOfContacts.contains(contact)) {
if(!mapOfAccountIdAndString.containsKey(account.Move_To_Account__c)) //false
mapOfAccountIdAndString.put(account.Move_To_Account__c, new List<String>());
mapOfAccountIdAndString.get(account.Move_To_Account__c).add(contact); //st/ st2 //st3
setOfIds.add(account.Id);
moveToContact = '\n';//if move to contact value is contains in contact__c value
}
else{
moveToContact = moveToContact+contact+'\n'; //if not contains then add contact to movettocontact
}
}
moveToContact = String.isNotBlank(moveToContact)?moveToContact:moveToContact.replaceAll('\\s', '');
accountToUpdate.add(new Account(Id = account.Id, Move_To_Contacts__c = moveToContact));
}
}
}
if(mapOfAccountIdAndString.size() > 0)
{
for(Id accountId : mapOfAccountIdAndString.keySet())
{
String contactValue = '';
for(String contact : mapOfAccountIdAndString.get(accountId))
{
contactValue = contactValue+contact+'\n';
}
accountToUpdate.add(new Account(Id = accountId, Contacts__c = contactValue));
}
if(accountToUpdate.size()>0) update accountToUpdate;
}
if(setOfIds.size()>0)
{
List<Contact> contacts = [SELECT Id, Email, FirstName, LastName, Account.Move_To_Account__c, AccountId FROM Contact WHERE AccountId IN :setOfIds];
list<Contact> contactsTomoved = new List<Contact>();
if(contacts.size()>0)
{
for(Contact contact : contacts)
{
for(String contString : mapOfAccountIdAndString.get(contact.Account.Move_To_Account__c))
{
if(contact.FirstName == contString.substringAfter('FirstName=').substringBefore(',')
&& contact.LastName == contString.substringAfter('LastName=').substringBefore(',')
&& contact.Email == contString.substringAfter('Email=').substringBefore(','))
{
contact.AccountId = contact.Account.Move_To_Account__c;
contactsTomoved.add(contact);
}
}
}
}
if(contactsTomoved.size() > 0)
update contactsTomoved;
}
}
}
Set<Id> setOfIds = new Set<Id>();
Map<Id, List<String>> mapOfAccountIdAndString = new Map<Id, List<String>>();
List<Account> accountToUpdate = new List<Account>();
for(Account account : listOfAccounts){
if(String.isNotBlank(account.Move_To_Account__c) && String.isNotBlank(account.Move_To_Contacts__c) && (mapoldAccount == null
|| mapoldAccount.get(account.Id).Move_To_Account__c != account.Move_To_Account__c
|| mapoldAccount.get(account.Id).Move_To_Contacts__c != account.Move_To_Contacts__c))
{
List<String> listOfContacts = account.Contacts__c.split('\n');
List<String> listOfMoveToContacts = account.Move_To_Contacts__c.split('\n');
if(listOfContacts.size()>0)
{
String moveToContact = '';
for(String contact : listOfMoveToContacts)
{
if(listOfMoveToContacts.size()>0 && listOfContacts.contains(contact)) {
if(!mapOfAccountIdAndString.containsKey(account.Move_To_Account__c)) //false
mapOfAccountIdAndString.put(account.Move_To_Account__c, new List<String>());
mapOfAccountIdAndString.get(account.Move_To_Account__c).add(contact); //st/ st2 //st3
setOfIds.add(account.Id);
moveToContact = '\n';//if move to contact value is contains in contact__c value
}
else{
moveToContact = moveToContact+contact+'\n'; //if not contains then add contact to movettocontact
}
}
moveToContact = String.isNotBlank(moveToContact)?moveToContact:moveToContact.replaceAll('\\s', '');
accountToUpdate.add(new Account(Id = account.Id, Move_To_Contacts__c = moveToContact));
}
}
}
if(mapOfAccountIdAndString.size() > 0)
{
for(Id accountId : mapOfAccountIdAndString.keySet())
{
String contactValue = '';
for(String contact : mapOfAccountIdAndString.get(accountId))
{
contactValue = contactValue+contact+'\n';
}
accountToUpdate.add(new Account(Id = accountId, Contacts__c = contactValue));
}
if(accountToUpdate.size()>0) update accountToUpdate;
}
if(setOfIds.size()>0)
{
List<Contact> contacts = [SELECT Id, Email, FirstName, LastName, Account.Move_To_Account__c, AccountId FROM Contact WHERE AccountId IN :setOfIds];
list<Contact> contactsTomoved = new List<Contact>();
if(contacts.size()>0)
{
for(Contact contact : contacts)
{
for(String contString : mapOfAccountIdAndString.get(contact.Account.Move_To_Account__c))
{
if(contact.FirstName == contString.substringAfter('FirstName=').substringBefore(',')
&& contact.LastName == contString.substringAfter('LastName=').substringBefore(',')
&& contact.Email == contString.substringAfter('Email=').substringBefore(','))
{
contact.AccountId = contact.Account.Move_To_Account__c;
contactsTomoved.add(contact);
}
}
}
}
if(contactsTomoved.size() > 0)
update contactsTomoved;
}
}
}
Hi Anjana,
The developer community recommends providing any attempts/code you've started, any errors you're getting, or where exactly you're struggling in achieving this while posting a question.
Regards,
Priya Ranjan