Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, Raj_provider_detail_page: execution of AfterInsert caused by: System.DmlException: Update failed. First exception on row 0 with id a5fM00000000aMYIAY; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, Raj_provider_detail_page: maximum trigger depth exceeded SysConct_Provider_detail trigger event AfterInsert SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate SysConct_Provider_detail trigger event AfterUpdate: [] Trigger.Raj_provider_detail_page: line 85, column 1: []
trigger Raj_provider_detail_page on SysConct_Provider_detail__c (after insert,after Update) { map<string, SysConct_Password__c> userToCustomSetting = new map<string, SysConct_Password__c>(); list<SysConct_Password__c> newSettings = new list<SysConct_Password__c>(); Set<String> providerIds=new Set<String>(); for (SysConct_Provider_detail__c stg : trigger.new){ providerIds.add(stg.Id); } list<SysConct_Password__c> existingSettings = [SELECT Id,Name,Password__c,AuthKey1__c,AuthKey2__c,ProviderID__c,MeterNumber__c,ProviderName__c,TransactionType__c FROM SysConct_Password__c where Name In : providerIds]; // Notice the LIMIT above? Without it, you'll probably receive a mark against you in your // AppExchange Security Review findings report. Queries need a WHERE or LIMIT // Populate the map based on the above query's results - keyed by the Username (name contains username) if (!existingSettings.isEmpty()){ for (SysConct_Password__c s : existingSettings){ userToCustomSetting.put(s.Name,s); } } for (SysConct_Provider_detail__c stg : trigger.new){ if ((stg.SysConct_Password__c != null && stg.SysConct_Password__c != '' )||(stg.SysConct_Transaction_Key__c != null && stg.SysConct_Transaction_Key__c != '')){ SysConct_Password__c newPassword; if(!userToCustomSetting.containsKey(stg.Id)){ newPassword=new SysConct_Password__c(); newPassword.Name = string.valueof(stg.id); newPassword.MeterNumber__c = stg.SysConct_Meter_Number__c; newPassword.ProviderName__c = stg.SysConct_Provider_Name__c; newPassword.TransactionType__c = stg.SysConct_Transaction_Type__c; newPassword.ProviderID__c = stg.id; newPassword.Password__c = stg.SysConct_Password__c; if(stg.SysConct_Transaction_Key__c != null && stg.SysConct_Transaction_Key__c != ''){ string str1 = stg.SysConct_Transaction_Key__c; if(str1.length()<256){ newPassword.AuthKey1__c = str1 ; }else{ string str2 = str1.substring(0,244); string str3 = str1.remove(str2); newPassword.AuthKey1__c = str2; newPassword.AuthKey2__c = str3; } } newSettings.add(newPassword); }else{ newPassword = userToCustomSetting.get(stg.Id); boolean ischangeKey=false; if (stg.SysConct_Password__c != newPassword.Password__c){ newPassword.Password__c = stg.SysConct_Password__c; ischangeKey=true; }if(stg.SysConct_Transaction_Key__c != newPassword.AuthKey1__c+newPassword.AuthKey2__c){ string str1 = stg.SysConct_Transaction_Key__c; if(str1.length()<256){ newPassword.AuthKey1__c = str1 ; }else{ string str2 = str1.substring(0,244); string str3 = str1.remove(str2); newPassword.AuthKey1__c = str2; newPassword.AuthKey2__c = str3; } ischangeKey=true; } if(ischangeKey) newSettings.add(newPassword); } } } if (!newSettings.isEmpty()){ system.debug('newSettings====='+newSettings); upsert newSettings; list<SysConct_Provider_detail__c> validApplicationSettings = new list<SysConct_Provider_detail__c>(); for(SysConct_Password__c password : newSettings){ SysConct_Provider_detail__c stg=new SysConct_Provider_detail__c(Id=password.Name); if(password.Password__c != null && password.Password__c != '') stg.SysConct_Password__c = '************'; if(password.AuthKey1__c != null && password.AuthKey1__c != '') stg.SysConct_Transaction_Key__c = '**************'; validApplicationSettings.add(stg); } if(!validApplicationSettings.isEmpty()) update validApplicationSettings; } }