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
Shruthi MN 88Shruthi MN 88 

On account record deletion store that record in Backup object.

Can you help me wirte a handler class for the below senario

            5. On account record deletion store that record in Backup object.

Create a new object Backup. In that create Long Text field - Record Backup.

Only those fields that have values must be saved in this with their fieldname and fieldvalue, also save Name of user who created this record and with createddate, lastmodified date.Each field value must start on new line.




trigger createBackup on Account (after delete) 
{
 if(trigger.isDelete && trigger.isAfter)
 {
  List<My_Backup__c> lstToInsrt = new List<My_Backup__c>();  
  for(Account deletedAcc : trigger.old)
  {
   system.debug('deletedAcc '+deletedAcc );
   My_Backup__c backup = new My_Backup__c();
   backup.Name = deletedAcc.name;
   lstToInsrt.add(backup);
   system.debug('backup '+backup);
  }
  if(lstToInsrt.size()>0)
  {
   insert lstToInsrt;
   system.debug('list'+lstToInsrt);
  }
 }
}
AshwiniAshwini (Salesforce Developers) 
Hi Shruthi,
Can you elaborate more on the scenario?
Have you created any handler class and facing issues?
 
Shruthi MN 88Shruthi MN 88
I have created the below helper class and trigger. The code is not working can you help me with the code?

public class CreateBackupHelper{

public static void afterDelete(List<Account> accountList){

List < Backup__c > lstToInsrt = new List < Backup__c > ();

        for (Account deletedAcc: accountList){

            system.debug('deletedAcc ' + deletedAcc);

           Backup__c backup = new Backup__c();

            backup.Name = deletedAcc.name;

            lstToInsrt.add(backup);

            system.debug('backup ' + backup);

        }

        if (lstToInsrt.size() > 0){

            insert lstToInsrt;

            system.debug('list' + lstToInsrt);

        }

}

}
trigger createBackupTrigger on Account (after insert) {
     if (trigger.isDelete && trigger.isAfter){

        CreateBackupHelper.afterDelete(trigger.old);

    }

}
Arun Kumar 1141Arun Kumar 1141

Hi Shruthi,

Apex handler class:
public class AccountDeletionHandler {
    public static void createBackup(List<Account> deletedAccounts) {
        List<My_Backup__c> backupsToInsert = new List<My_Backup__c>();

        for (Account deletedAccount : deletedAccounts) { 
            My_Backup__c backup = new My_Backup__c();
            backup.Name = deletedAccount.Name;   
             String fieldValues = ''; 
            for (SObjectField field : Account.sObjectType.getDescribe().fields.getMap().values()) {
                String fieldName = field.getDescribe().getName();
                if (deletedAccount.get(fieldName) != null) {
                    String fieldValue = String.valueOf(deletedAccount.get(fieldName));
                    fieldValues += fieldName + ': ' + fieldValue + '\n';
                }
            }

            backup.Record_Backup__c = fieldValues;
            backupsToInsert.add(backup);  
        }   
        if (!backupsToInsert.isEmpty()) {
            insert backupsToInsert; 
        } 
    }
}

Trigger Class:
trigger createBackupTrigger on Account (after delete) {
    if (Trigger.isDelete && Trigger.isAfter) {
        AccountDeletionHandler.createBackup(Trigger.old);
    }
}

Hope this will be helpful.
Thanks!