You need to sign in to do that
Don't have an account?

Delete record using trigger
Need help in writing trigger.
I have a custom object 'MPEContact__c' is associated with Account and an standard object 'Contact'. If i delete the Contact record, the record associated with 'MPEContact__c' object should also be deleted.
My Code:
trigger updateContactMpe on MPEContact__c (after update) {
Set<Id> accountId = new Set<Id>();
Set<Id> empAppId = new Set<Id>();
Set<String> ctxType;
List<Contact> contactUpdateList = new List<Contact>();
Map<String,MPEContact__c> mapContact = new Map<String,MPEContact__c>();
Map<String,Contact> accContact = new Map<String,Contact>();
Map<String,Contact> conUpdMap = new Map<String,Contact>();
Schema.DescribeSObjectResult CONT_RT = Schema.SObjectType.Contact;
Map<String,Schema.RecordTypeInfo> CONT_RTMapByName = CONT_RT.getRecordTypeInfosByName();
Schema.RecordTypeInfo MPE_PART_CON_NAME = CONT_RTMapByName.get('MPE Partner Contact');
Id PART_CON_RTId = MPE_PART_CON_NAME.getRecordTypeId();
try{
for(MPEContact__c mpContact: trigger.new)
{
if(mpContact.Account__c!=null && mpContact.Application__c!=null && mpContact.EMail__c!=null)
{
accountId.add(mpContact.Account__c);
empAppId.add(mpContact.Application__c);
mapContact.put(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase(),mpContact);
}
}
List<Empower_Application__c> empApp = new List<Empower_Application__c>();
if(accountId.size()>0)
empApp= [Select Id,Application_Status__c from Empower_Application__c where Id in :empAppId and Application_Status__c in ('Transition Completed','Approved')];
if(empApp.size()>0){
if(accountId.size()>0){
List<Contact> theContact = [Select Id, AccountId, firstName, lastName, Email, Phone, Title, MailingStreet, MailingCity, MailingState,
MailingPostalCode, MailingCountry, MobilePhone, Salutation, Technolgy_Preference__c,
Contact_Type__c, Primary_Contact_Type__c, Vertical_Market_Preference__c, Preferred_Language__c
From Contact Where Accountid in :accountId];
if(theContact.size()>0){
for(Contact con : theContact)
{
if(con.Email != null && mapContact.containsKey(con.lastName.toLowerCase()+'-'+con.Email.toLowerCase())) {
accContact.put(con.lastName.toLowerCase()+'-'+con.Email.toLowerCase(),con);
}
}
}
}
for(MPEContact__c mpContact: trigger.new)
{
if(mpContact.Account__c!=null && mpContact.Application__c!=null && mpContact.EMail__c!=null)
{
Contact cont;
ctxType = new Set<String>();
if (mpContact.Secondary_Role__c != null){
ctxType = new Set<String> (mpContact.Secondary_Role__c.split(';'));
}
if(accContact.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()) &&
!conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())) {
cont = new Contact(Id=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Id,
Primary_Contact_Type__c=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Primary_Contact_Type__c,
Contact_Type__c=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c,
LastName=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).LastName,
Email=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Email);
if(cont.Primary_Contact_Type__c == null || cont.Primary_Contact_Type__c.trim() == ''){
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
} else {
ctxType.add(mpContact.Primary_Role__c);
}
if(cont.Contact_Type__c == null || cont.Contact_Type__c.trim() == ''){
cont.Contact_Type__c = mpContact.Secondary_Role__c;
} else {
if(mpContact.Secondary_Role__c != null && ctxType.size()>0){
for(String sc : ctxType){
if(!accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c.contains(sc)){
cont.Contact_Type__c = cont.Contact_Type__c + ';' + sc;
}
}
}
}
}
if(conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())){
cont = new Contact(Id=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Id,
Primary_Contact_Type__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Primary_Contact_Type__c,
Contact_Type__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c,
LastName=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).LastName,
Email=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Email,
Tag__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Tag__c);
if(cont.Primary_Contact_Type__c == null || cont.Primary_Contact_Type__c.trim() == ''){
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
} else {
ctxType.add(mpContact.Primary_Role__c);
}
if(cont.Contact_Type__c == null || cont.Contact_Type__c.trim() == ''){
cont.Contact_Type__c = mpContact.Secondary_Role__c;
} else {
if(mpContact.Secondary_Role__c != null && ctxType.size()>0){
for(String sc : ctxType){
if(!conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c.contains(sc)){
cont.Contact_Type__c = cont.Contact_Type__c + ';' + sc;
}
}
}
}
}
if(!accContact.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()) &&
!conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())) {
cont = new Contact();
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
cont.Contact_Type__c = mpContact.Secondary_Role__c;
cont.Email=mpContact.Email__c;
cont.LastName = mpContact.Last_Name__c;
}
cont.AccountId = mpContact.Account__c;
cont.FirstName = mpContact.First_Name__c;
cont.First_Name_Local_Language__c = mpContact.First_Name_Local_Language__c;
cont.Last_Name_Local_Language__c = mpContact.Last_Name_Local_Language__c;
cont.Phone = mpContact.Phone__c;
cont.Fax=mpContact.Fax__c;
cont.MobilePhone=mpContact.Mobile__c;
cont.MailingPostalCode=mpContact.Postal_Code__c;
cont.Preferred_Language__c=mpContact.Primary_Language__c;
cont.Salutation=mpContact.Salutation__c;
cont.MailingState=mpContact.State__c;
cont.MailingCountry = mpContact.Country__c;
cont.RecordTypeId=PART_CON_RTId;
if(mpContact.Authorized_Partner_Admin__c){
cont.Tag__c ='SFDC Partner Admin';
}
if (mpContact.Street_Address2__c != null) {
cont.MailingStreet = mpContact.Street_Address1__c+' '+mpContact.Street_Address2__c;
} else {
cont.MailingStreet=mpContact.Street_Address1__c;
}
cont.Technolgy_Preference__c=mpContact.Technolgy_Preference__c;
cont.Title=mpContact.Title__c;
cont.Vertical_Market_Preference__c=mpContact.Vertical_Market_Preference__c;
cont.MailingCity=mpContact.City__c;
conUpdMap.put(cont.LastName.toLowerCase()+'-'+cont.Email.toLowerCase(),cont);
}
}
}
if(conUpdMap.size()>0){
contactUpdateList = conUpdMap.values();
}
if(contactUpdateList.size()>0){
upsert contactUpdateList;
}
}
catch(Exception e)
{
String objectName ='MPEContact__c';
String userName=userInfo.getName();
datetime myDateTime = datetime.now();
CreateErrorLog.createErrorRecord(e.getmessage(),objectName,e.getStackTraceString(),userName,myDateTime,e.getTypeName());
}
}
I have a custom object 'MPEContact__c' is associated with Account and an standard object 'Contact'. If i delete the Contact record, the record associated with 'MPEContact__c' object should also be deleted.
My Code:
trigger updateContactMpe on MPEContact__c (after update) {
Set<Id> accountId = new Set<Id>();
Set<Id> empAppId = new Set<Id>();
Set<String> ctxType;
List<Contact> contactUpdateList = new List<Contact>();
Map<String,MPEContact__c> mapContact = new Map<String,MPEContact__c>();
Map<String,Contact> accContact = new Map<String,Contact>();
Map<String,Contact> conUpdMap = new Map<String,Contact>();
Schema.DescribeSObjectResult CONT_RT = Schema.SObjectType.Contact;
Map<String,Schema.RecordTypeInfo> CONT_RTMapByName = CONT_RT.getRecordTypeInfosByName();
Schema.RecordTypeInfo MPE_PART_CON_NAME = CONT_RTMapByName.get('MPE Partner Contact');
Id PART_CON_RTId = MPE_PART_CON_NAME.getRecordTypeId();
try{
for(MPEContact__c mpContact: trigger.new)
{
if(mpContact.Account__c!=null && mpContact.Application__c!=null && mpContact.EMail__c!=null)
{
accountId.add(mpContact.Account__c);
empAppId.add(mpContact.Application__c);
mapContact.put(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase(),mpContact);
}
}
List<Empower_Application__c> empApp = new List<Empower_Application__c>();
if(accountId.size()>0)
empApp= [Select Id,Application_Status__c from Empower_Application__c where Id in :empAppId and Application_Status__c in ('Transition Completed','Approved')];
if(empApp.size()>0){
if(accountId.size()>0){
List<Contact> theContact = [Select Id, AccountId, firstName, lastName, Email, Phone, Title, MailingStreet, MailingCity, MailingState,
MailingPostalCode, MailingCountry, MobilePhone, Salutation, Technolgy_Preference__c,
Contact_Type__c, Primary_Contact_Type__c, Vertical_Market_Preference__c, Preferred_Language__c
From Contact Where Accountid in :accountId];
if(theContact.size()>0){
for(Contact con : theContact)
{
if(con.Email != null && mapContact.containsKey(con.lastName.toLowerCase()+'-'+con.Email.toLowerCase())) {
accContact.put(con.lastName.toLowerCase()+'-'+con.Email.toLowerCase(),con);
}
}
}
}
for(MPEContact__c mpContact: trigger.new)
{
if(mpContact.Account__c!=null && mpContact.Application__c!=null && mpContact.EMail__c!=null)
{
Contact cont;
ctxType = new Set<String>();
if (mpContact.Secondary_Role__c != null){
ctxType = new Set<String> (mpContact.Secondary_Role__c.split(';'));
}
if(accContact.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()) &&
!conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())) {
cont = new Contact(Id=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Id,
Primary_Contact_Type__c=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Primary_Contact_Type__c,
Contact_Type__c=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c,
LastName=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).LastName,
Email=accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Email);
if(cont.Primary_Contact_Type__c == null || cont.Primary_Contact_Type__c.trim() == ''){
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
} else {
ctxType.add(mpContact.Primary_Role__c);
}
if(cont.Contact_Type__c == null || cont.Contact_Type__c.trim() == ''){
cont.Contact_Type__c = mpContact.Secondary_Role__c;
} else {
if(mpContact.Secondary_Role__c != null && ctxType.size()>0){
for(String sc : ctxType){
if(!accContact.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c.contains(sc)){
cont.Contact_Type__c = cont.Contact_Type__c + ';' + sc;
}
}
}
}
}
if(conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())){
cont = new Contact(Id=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Id,
Primary_Contact_Type__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Primary_Contact_Type__c,
Contact_Type__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c,
LastName=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).LastName,
Email=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Email,
Tag__c=conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Tag__c);
if(cont.Primary_Contact_Type__c == null || cont.Primary_Contact_Type__c.trim() == ''){
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
} else {
ctxType.add(mpContact.Primary_Role__c);
}
if(cont.Contact_Type__c == null || cont.Contact_Type__c.trim() == ''){
cont.Contact_Type__c = mpContact.Secondary_Role__c;
} else {
if(mpContact.Secondary_Role__c != null && ctxType.size()>0){
for(String sc : ctxType){
if(!conUpdMap.get(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()).Contact_Type__c.contains(sc)){
cont.Contact_Type__c = cont.Contact_Type__c + ';' + sc;
}
}
}
}
}
if(!accContact.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase()) &&
!conUpdMap.containsKey(mpContact.Last_Name__c.toLowerCase()+'-'+mpContact.Email__c.toLowerCase())) {
cont = new Contact();
cont.Primary_Contact_Type__c = mpContact.Primary_Role__c;
cont.Contact_Type__c = mpContact.Secondary_Role__c;
cont.Email=mpContact.Email__c;
cont.LastName = mpContact.Last_Name__c;
}
cont.AccountId = mpContact.Account__c;
cont.FirstName = mpContact.First_Name__c;
cont.First_Name_Local_Language__c = mpContact.First_Name_Local_Language__c;
cont.Last_Name_Local_Language__c = mpContact.Last_Name_Local_Language__c;
cont.Phone = mpContact.Phone__c;
cont.Fax=mpContact.Fax__c;
cont.MobilePhone=mpContact.Mobile__c;
cont.MailingPostalCode=mpContact.Postal_Code__c;
cont.Preferred_Language__c=mpContact.Primary_Language__c;
cont.Salutation=mpContact.Salutation__c;
cont.MailingState=mpContact.State__c;
cont.MailingCountry = mpContact.Country__c;
cont.RecordTypeId=PART_CON_RTId;
if(mpContact.Authorized_Partner_Admin__c){
cont.Tag__c ='SFDC Partner Admin';
}
if (mpContact.Street_Address2__c != null) {
cont.MailingStreet = mpContact.Street_Address1__c+' '+mpContact.Street_Address2__c;
} else {
cont.MailingStreet=mpContact.Street_Address1__c;
}
cont.Technolgy_Preference__c=mpContact.Technolgy_Preference__c;
cont.Title=mpContact.Title__c;
cont.Vertical_Market_Preference__c=mpContact.Vertical_Market_Preference__c;
cont.MailingCity=mpContact.City__c;
conUpdMap.put(cont.LastName.toLowerCase()+'-'+cont.Email.toLowerCase(),cont);
}
}
}
if(conUpdMap.size()>0){
contactUpdateList = conUpdMap.values();
}
if(contactUpdateList.size()>0){
upsert contactUpdateList;
}
}
catch(Exception e)
{
String objectName ='MPEContact__c';
String userName=userInfo.getName();
datetime myDateTime = datetime.now();
CreateErrorLog.createErrorRecord(e.getmessage(),objectName,e.getStackTraceString(),userName,myDateTime,e.getTypeName());
}
}
There is obviously a lot more than a normal delete going on in the trigger you have pasted in your question. Here is a simple trigger to delete children when the parent is deleted:
This could obviously use some work, but it gets the point across. Before your contacts are deleted, you want to query for all the related children and delete them.
If the Contact-ChildObject relationship is a Master-Detail, this is not necessary as a cascading delete operation is performed if the master is deleted.
I hope this helps!