Closed Cases – When a case is closed and a new email comes from customer in the same mail chain, user wants a new case to be created and tagged with the information of the previously closed case. (case details on new case like Status as new, same Origin from parent case and case-history will be copied in the new case).
Please suggest me how do i add case history from parent case?
Code :
trigger CloneClosedCase on EmailMessage (after insert) {
Set<ID> caseSet = new Set<ID>();
List<Case>cloneList = new List<Case>();
Map<Id, String> emailBodyMap = new Map<Id, String>{};
for (EmailMessage so : Trigger.new) {
if(so.ParentId.getSObjectType() == Case.sObjectType && so.Incoming){
caseSet.add(so.parentid);
emailBodyMap.put(so.ParentId, so.TextBody);
}
}
Map<Id,case> caseMAP = new Map<Id,case>([SELECT id,origin,subject,Policy__c,Type,Claim__c,Complainant__c,SR_Sub_Type__c,Remarks_for_pending_status__c,status,description,parentid FROM Case WHERE id in:caseSet]);
for(Case c:caseMAP.values()){
if(c.Status=='Closed') {
system.debug('@@@@@@@@@@@@@@@'+c.Id);
system.debug('##############'+c.subject);
Case cloneCase = c.clone(false,true);
cloneCase.parentid=c.id;
cloneCase.Origin=c.Origin;
cloneCase.subject=c.subject;
cloneCase.Policy__c=c.Policy__c;
cloneCase.Claim__c=c.Claim__c;
cloneCase.Type=c.Type;
cloneCase.SR_Sub_Type__c=c.SR_Sub_Type__c;
cloneCase.Remarks_for_pending_status__c=c.Remarks_for_pending_status__c;
cloneCase.Status='New';
cloneCase.Description= emailBodyMap.get(c.Id);
cloneList.add(cloneCase);
system.debug('*********************' +cloneList);
}
}
try {
insert cloneList;
} catch(DMLException e) {
System.debug('The following exception has occurred: ' + e.getMessage());
}
}