Come spostare gli account in contatti – Codice Salesforce Apex

Esercizio per spostare certi Account in Contact

Questo codice è solo un test.

public with sharing class MoveAccountToContact {
    public MoveAccountToContact() {

        static final String ACCOUNT_ID = '0010Y00000HRUrbQAH'

        // Creo una lista di nuovi contatti da popolare
        List<Contact> NuoviContatti = new List<Contact>();

        // Selezionare tutti gli Account il cui nome è una email        
        List<Account> OldAccount = [SELECT id,Name
                             FROM Account
                             WHERE name like:('%@%')];
                             
        // per oggi dato recuperato creo un oggetto Contact
        // ogni oggetto contact va inserito alla lista dei nuovi contatti        
        for(Account OldAccountItem:OldAccount){

            Contact NuovoContatto = new Contact();
            NuovoContatto.AccountId = ACCOUNT_ID;
            NuovoContatto.FirstName = getFirstNameFromEmail(OldAccountItem.Name);
            NuovoContatto.LastName = getLastNameFromEmail(OldAccountItem.Name);
            NuovoContatto.Email = OldAccountItem.Name;
            NuoviContatti.add(NuovoContatto);
        }

        
        try{
            // Inserisco i nuovi contatti 
            if(NuoviContatti.size() > 0){
                insert NuoviContatti;
            }else{
                System.debug('Lista nuovi contatti vuota');    
            }
            
        }catch(DmlException e){
            
            System.debug('Si è verificato un errore nella creazione dei nuovi contatti: ');
            System.debug(e);

        }

        try{
            // cancello i vecchi account
            if(NuoviContatti.size() > 0){
                delete OldAccount;
            }else{
                System.debug('Lista vecchi account vuota');    
            }
        }catch(DmlException e){
            
            System.debug('Si è verificato un errore nella cancellazione dei vecchi account: ');
            System.debug(e);

        }


        


    }

    public static String getNameFromEmail(String email){
        String name = '';
        String leftPart = email.substringBefore('@');
        String[] leftPartSplitted = leftPart.split('\\.');        

        if(leftPartSplitted.size() == 2){

            String firstName = leftPartSplitted[0];
            String lastName = leftPartSplitted[1];
            name = firstName + ' ' + lastName;

        }else{
            name = leftPartSplitted[0];
        }

        return name;
    }


    public static String getFirstNameFromEmail(String email){
        
        String firstName = '';
        String leftPart = email.substringBefore('@');
        String[] leftPartSplitted = leftPart.split('\\.');        

        if(leftPartSplitted.size() == 2){

            firstName = leftPartSplitted[0];            
            

        }else{
            firstName = leftPartSplitted[0];
        }

        return firstName;
    }

    public static String getLastNameFromEmail(String email){
        String lastname = '';
        String leftPart = email.substringBefore('@');
        String[] leftPartSplitted = leftPart.split('\\.');        

        if(leftPartSplitted.size() == 2){
            
            lastName = leftPartSplitted[1];
            
        }else{
            lastname = leftPartSplitted[0];
        }

        return lastname;
    }
}