• Anjana Sharma 9
  • NEWBIE
  • 30 Points
  • Member since 2021

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 8
    Questions
  • 11
    Replies
Hello everone ,
I dont understand that how can i get the object dynamically from object like , i have two arguments:-
1.Map<String,List<String>>: Key:Parent Object , Val: List of Child Object
 2.Map<String, Map<String, String>>: Key: Object , Value = Key: Field, Value: Field Value

For example:
In argument i passsed
Account => new List<String>{Contact}
And in argument 2 i passed
Account => new Map<String, String>{Name => Test, website = test.com} Contact => new Map<String, String>{FirstName => Test, FirstName = Last name Test}

i want to insert account then insert all child objct records in that parent account
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;  
    }
 }
}
public static void createContactsv1 (List<Account> listOfAccounts, Map<Id, Account> mapoldAccount){
    
    
    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
                        moveToContact = '\n';
                    }
                    else{
                         moveToContact = moveToContact+contact+'\n';
                    }
                   
                }
                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; 
    }
    
}
 

this is my code but it is not working properly ...i want to move contacts from account1 to account2 when my condtion is true...my condtion is that move_to_account__c field is not blank and contact__c == move_to__contacts__c then move all contacts from account1 to lookup account2...like i have 2 contacts in account1 and if my condtions which i mention is true..then these 2 contacts move to lookup account2.

now i want account1 = 0 contact and account2 = 2 contacts

 
trigger AccountTrigger1 on Account (after insert ) {
    if(trigger.isAfter && trigger.isInsert){
        list<Contact> lstContact = new list<Contact>();
        list<Account> lstAccount = new list<Account>();
        set<Id> setAccountIds = new set<Id>();
        for(account acc : trigger.new){
            setAccountIds.add(acc.Id);
            }
        if(setAccountIds.size() > 0){
            for(account acc : [SELECT Id,Name From Account Where Id In : setAccountIds]){
            contact con = new contact();
            con.firstname = acc.Name;
            con.LastName = acc.Name;
            con.AccountId = acc.Id;
            acc.Contacts__c = con.firstname + ' ' +  con.LastName;
            lstAccount.add(acc);  
            lstContact.add(con);
                
            }
        }
        if(lstContact.size() > 0){ 
            insert lstContact;
            
        }
        if(lstAccount.size() > 0){
            update lstAccount;
        }
    }
}

This is my code but in this but i want that i add first name and last name during inserting a new account.For example i add a new account the add firtsname='helo' , lastname='world' in my custom fild in that format then it add that field values to contact , i can add multtiple contact through this field
public with sharing class MyApexFirstClass {
  public static void myFirstMethod() {
            List<String>listOfStrings = new List<String>{'Anjana','Sharma'};
                listOfStrings.add('Test');
                listOfStrings.add('Test1');
            system.debug(listOfStrings);
            
            Set<String>SetStrings = new Set<String>{'Hello','World'};
                setStrings.add('Case');
                setStrings.add('Case1');
            system.debug(SetStrings);
            
            Map<String , String>mapStrings = new Map<String , String>{'a' => 'b', 'c' => 'd'};
            mapStrings.put('pink' ,'blue');
                mapStrings.put('red','green');
            system.debug(mapStrings);
        }
    
    
    public static void mySecondMethod() { 
        
        List<String>listOfStrings = new List<String>{'Jaipur','Bhilwara'};
            listOfStrings.add('Test');
            listOfStrings.add('Test1');
     for(String s :listOfStrings ){
         System.debug('We have List are ' +  s);
     }
        system.debug(listOfStrings.get(0));
       
        Set<String>SetStrings = new Set<String>{'Good','Bad'};
            setStrings.add('Case');
            setStrings.add('Case1');
     for(String str :SetStrings ){
         System.debug('We have Sets are ' + str);
     }
     
     Map<String , String>mapStrings = new Map<String , String>();
        mapStrings.put('pink' ,'blue');
            mapStrings.put('red','green');
     
     String color = mapStrings.get('pink');
      System.debug('The color is: ' + color);
     
        for(String mkey :mapStrings.keyset() ){
          System.debug('Map key is ' + mkey);
       }
     for(String mvalue :mapStrings.values() ){
          System.debug('Map value is ' + mvalue);
       }
    }
    
  
    
 
    public static void myThirdMethod() {
        
        List<String>list1 = new List<String>{'Jaipur','Bhilwara'};
           List<List<String>> list2 = new List<List<String>>();
        list2.add(list1);     
        system.debug(list2);
        
        Set<String>SetStrings = new Set<String>{'Good','Bad'};
           Set<Set<String>>SetStrings1 = new Set<Set<String>>();
        SetStrings1.add(SetStrings);
        system.debug(SetStrings1);
        
        Map<String , String>mapStrings = new Map<String , String>{'a' => 'b', 'c' => 'd'};
            Map<String,Map<String,String>>mapStrings1 = new  Map<String,Map<String,String>>();
        for(String mkey :mapStrings.keyset() )
        { 
            mapStrings1.put(mkey ,mapStrings);  
        }
        for(String mvalue :mapStrings.values() )
        { 
            mapStrings1.put(mvalue ,mapStrings);  
            System.debug(mapStrings1); 
        }
     }
    
           :   
      
    public static void myFourthMethod() {
      Date someDate = Date.newInstance(2016, 4, 28);
         List<Date> dates = new List<Date>();
        dates.add(someDate);
      system.debug(dates);   
  }  
    
  
      public static  Map<String,Map<String, Map<String, String>>> myFivthMethod() {
     
           Map<String, String> mapFirstStrings = new Map<String, String>{'Test' => 'Test'};
            Map<String, Map<String, String>> mapSecondString = new Map<String, Map<String, String>>();
            mapSecondString.put('Test1', mapFirstStrings);
             Map<String, Map<String, Map<String, String>>> mapThirdString = new Map<String, Map<String, Map<String, String>>>();
             mapThirdString.put('Test2', mapSecondString);
      
           system.debug(mapThirdString);
           return mapThirdString;
     
 }
 
I have a method with two arguments List<Account>, List<Contact>  with return type void and in the list<Account > i have to do that some records in this list will have Id field populated and some of the records will not have Id field populated .and then Update the records where Id is populated and insert the records where Id is not populated. (Use Database.upsert for this) .Check the Database.upsert result and if there is any error with any of the record then create a new record of Error Log(in my custom object) for each error.  Now how can i cause error in this and how i hold that error in database.saveresult .

And in second argument of contact i have to hold only the new Contact Records. and like i have 2 contact then these 2 contacts were add to each account details which give success not error
Hello everone ,
I dont understand that how can i get the object dynamically from object like , i have two arguments:-
1.Map<String,List<String>>: Key:Parent Object , Val: List of Child Object
 2.Map<String, Map<String, String>>: Key: Object , Value = Key: Field, Value: Field Value

For example:
In argument i passsed
Account => new List<String>{Contact}
And in argument 2 i passed
Account => new Map<String, String>{Name => Test, website = test.com} Contact => new Map<String, String>{FirstName => Test, FirstName = Last name Test}

i want to insert account then insert all child objct records in that parent account
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;  
    }
 }
}
public with sharing class MyApexFirstClass {
  public static void myFirstMethod() {
            List<String>listOfStrings = new List<String>{'Anjana','Sharma'};
                listOfStrings.add('Test');
                listOfStrings.add('Test1');
            system.debug(listOfStrings);
            
            Set<String>SetStrings = new Set<String>{'Hello','World'};
                setStrings.add('Case');
                setStrings.add('Case1');
            system.debug(SetStrings);
            
            Map<String , String>mapStrings = new Map<String , String>{'a' => 'b', 'c' => 'd'};
            mapStrings.put('pink' ,'blue');
                mapStrings.put('red','green');
            system.debug(mapStrings);
        }
    
    
    public static void mySecondMethod() { 
        
        List<String>listOfStrings = new List<String>{'Jaipur','Bhilwara'};
            listOfStrings.add('Test');
            listOfStrings.add('Test1');
     for(String s :listOfStrings ){
         System.debug('We have List are ' +  s);
     }
        system.debug(listOfStrings.get(0));
       
        Set<String>SetStrings = new Set<String>{'Good','Bad'};
            setStrings.add('Case');
            setStrings.add('Case1');
     for(String str :SetStrings ){
         System.debug('We have Sets are ' + str);
     }
     
     Map<String , String>mapStrings = new Map<String , String>();
        mapStrings.put('pink' ,'blue');
            mapStrings.put('red','green');
     
     String color = mapStrings.get('pink');
      System.debug('The color is: ' + color);
     
        for(String mkey :mapStrings.keyset() ){
          System.debug('Map key is ' + mkey);
       }
     for(String mvalue :mapStrings.values() ){
          System.debug('Map value is ' + mvalue);
       }
    }
    
  
    
 
    public static void myThirdMethod() {
        
        List<String>list1 = new List<String>{'Jaipur','Bhilwara'};
           List<List<String>> list2 = new List<List<String>>();
        list2.add(list1);     
        system.debug(list2);
        
        Set<String>SetStrings = new Set<String>{'Good','Bad'};
           Set<Set<String>>SetStrings1 = new Set<Set<String>>();
        SetStrings1.add(SetStrings);
        system.debug(SetStrings1);
        
        Map<String , String>mapStrings = new Map<String , String>{'a' => 'b', 'c' => 'd'};
            Map<String,Map<String,String>>mapStrings1 = new  Map<String,Map<String,String>>();
        for(String mkey :mapStrings.keyset() )
        { 
            mapStrings1.put(mkey ,mapStrings);  
        }
        for(String mvalue :mapStrings.values() )
        { 
            mapStrings1.put(mvalue ,mapStrings);  
            System.debug(mapStrings1); 
        }
     }
    
           :   
      
    public static void myFourthMethod() {
      Date someDate = Date.newInstance(2016, 4, 28);
         List<Date> dates = new List<Date>();
        dates.add(someDate);
      system.debug(dates);   
  }  
    
  
      public static  Map<String,Map<String, Map<String, String>>> myFivthMethod() {
     
           Map<String, String> mapFirstStrings = new Map<String, String>{'Test' => 'Test'};
            Map<String, Map<String, String>> mapSecondString = new Map<String, Map<String, String>>();
            mapSecondString.put('Test1', mapFirstStrings);
             Map<String, Map<String, Map<String, String>>> mapThirdString = new Map<String, Map<String, Map<String, String>>>();
             mapThirdString.put('Test2', mapSecondString);
      
           system.debug(mapThirdString);
           return mapThirdString;
     
 }
 
I have a method with two arguments List<Account>, List<Contact>  with return type void and in the list<Account > i have to do that some records in this list will have Id field populated and some of the records will not have Id field populated .and then Update the records where Id is populated and insert the records where Id is not populated. (Use Database.upsert for this) .Check the Database.upsert result and if there is any error with any of the record then create a new record of Error Log(in my custom object) for each error.  Now how can i cause error in this and how i hold that error in database.saveresult .

And in second argument of contact i have to hold only the new Contact Records. and like i have 2 contact then these 2 contacts were add to each account details which give success not error