• soumya 1
  • NEWBIE
  • 0 Points
  • Member since 2022

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
In TriggerHandler i am getting 'FATAL_ERROR System.TypeException: Invalid conversion from runtime type Contact to REO_Application__c'
line number 15
REO_Application__c reo = (REO_Application__c)application;


Trigger:

trigger REOApplicationTrigger on REO_Application__c (before insert, before update, after update) {
    new REOApplicationTriggerHandler().run();
}

TriggerHandler :

public without sharing class REOApplicationTriggerHandler extends TriggerHandler {
    public REOApplicationTriggerHandler() {}
   
    override public void beforeInsert() {
        List<REO_Application__c> REOsToCreateContact = new List<REO_Application__c>();
        for(REO_Application__c reo : (List<REO_Application__c>)Trigger.new) {
            if(reo.Applicant_Contact__c == null) {
                REOsToCreateContact.add(reo);
            }                                                        
        }  
        if(!REOsToCreateContact.isEmpty()) {
            Map<SObject, Id> applicationContactIds = Utility.createContact(REOsToCreateContact, Utility.getContactFieldMapping('REO'));
            if(applicationContactIds != null) {
                for(SObject application : applicationContactIds.keySet()) {
                    REO_Application__c reo = (REO_Application__c)application;
                    reo.Applicant_Contact__c = applicationContactIds.get(reo);
                }                
            }          
        }
    }

Utility: getContactFieldMapping

  public static Map<String, String> getContactFieldMapping(String objType) {
        Map<String, String> fieldMap = new Map<String, String>();
        switch on objType {
            when 'REO' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');
            }
            when 'RES' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');        
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');                
            }
            when else {
                return null;
            }
        }
        return fieldMap;
    }
In TriggerHandler i am getting 'FATAL_ERROR System.TypeException: Invalid conversion from runtime type Contact to REO_Application__c'
line number 15 
REO_Application__c reo = (REO_Application__c)application;


Trigger:

trigger REOApplicationTrigger on REO_Application__c (before insert, before update, after update) {
    new REOApplicationTriggerHandler().run();
}

TriggerHandler :

public without sharing class REOApplicationTriggerHandler extends TriggerHandler {
    public REOApplicationTriggerHandler() {}
    
    override public void beforeInsert() {
        List<REO_Application__c> REOsToCreateContact = new List<REO_Application__c>();
        for(REO_Application__c reo : (List<REO_Application__c>)Trigger.new) {
            if(reo.Applicant_Contact__c == null) {
                REOsToCreateContact.add(reo);
            }                                                        
        }   
        if(!REOsToCreateContact.isEmpty()) {
            Map<SObject, Id> applicationContactIds = Utility.createContact(REOsToCreateContact, Utility.getContactFieldMapping('REO'));
            if(applicationContactIds != null) {
                for(SObject application : applicationContactIds.keySet()) {
                    REO_Application__c reo = (REO_Application__c)application;
                    reo.Applicant_Contact__c = applicationContactIds.get(reo);
                }                 
            }           
        }
    }

Utility: getContactFieldMapping

  public static Map<String, String> getContactFieldMapping(String objType) {
        Map<String, String> fieldMap = new Map<String, String>();
        switch on objType {
            when 'REO' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');
            }
            when 'RES' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');        
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');                
            }
            when else {
                return null;
            }
        }
        return fieldMap;
    }
 
In TriggerHandler i am getting 'FATAL_ERROR System.TypeException: Invalid conversion from runtime type Contact to REO_Application__c'
line number 15
REO_Application__c reo = (REO_Application__c)application;


Trigger:

trigger REOApplicationTrigger on REO_Application__c (before insert, before update, after update) {
    new REOApplicationTriggerHandler().run();
}

TriggerHandler :

public without sharing class REOApplicationTriggerHandler extends TriggerHandler {
    public REOApplicationTriggerHandler() {}
   
    override public void beforeInsert() {
        List<REO_Application__c> REOsToCreateContact = new List<REO_Application__c>();
        for(REO_Application__c reo : (List<REO_Application__c>)Trigger.new) {
            if(reo.Applicant_Contact__c == null) {
                REOsToCreateContact.add(reo);
            }                                                        
        }  
        if(!REOsToCreateContact.isEmpty()) {
            Map<SObject, Id> applicationContactIds = Utility.createContact(REOsToCreateContact, Utility.getContactFieldMapping('REO'));
            if(applicationContactIds != null) {
                for(SObject application : applicationContactIds.keySet()) {
                    REO_Application__c reo = (REO_Application__c)application;
                    reo.Applicant_Contact__c = applicationContactIds.get(reo);
                }                
            }          
        }
    }

Utility: getContactFieldMapping

  public static Map<String, String> getContactFieldMapping(String objType) {
        Map<String, String> fieldMap = new Map<String, String>();
        switch on objType {
            when 'REO' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');
            }
            when 'RES' {
                fieldMap.put('Applicant_Last_Name__c', 'LastName');
                fieldMap.put('Applicant_Country__c', 'MailingCountry');
                fieldMap.put('Applicant_Postal_Code__c', 'MailingPostalCode');
                fieldMap.put('Applicant_Street__c', 'MailingStreet');
                fieldMap.put('Applicant_Mobile__c', 'MobilePhone');
                fieldMap.put('Applicant_NRIC_FIN__c', 'NRIC_FIN__c');
                fieldMap.put('Applicant_Phone__c', 'Phone');
                fieldMap.put('Date_of_Birth__c', 'Birthdate');                
                fieldMap.put('Gender__c', 'Gender__c');        
                fieldmap.put('Applicant_Nationality__c', 'Nationality__c');
                fieldMap.put('Work_Permit_Expiry_Date__c', 'Work_Permit_Expiry_Date__c');
                fieldMap.put('Work_Permit_Number__c', 'Work_Permit_Number__c');                
            }
            when else {
                return null;
            }
        }
        return fieldMap;
    }