Saturday 14 December 2013

AutoClose Child Cases whenever a Parent Case is closed

This post is just to expose the way to auto close the child cases, whenever a parent for those child cases are closed, Just some simple workaround to achieve it .

In Case Object, i'm having many closed status vaues, i prefixed it by Closed as per my requirement .
And i dont want to update the already closed unnecesarily.

Code:
  1. Trigger AutoCloseChildCases on Case (after update) {
  2.   Case[] casesToUpdate = new Case[0];
  3. Set<Id>CaseSet = new Set<Id>();
  4. for (Integer c=0;c<Trigger.size;c++) {  
  5.     if ((Trigger.old[c].Status.contains('Closed')== false) && (Trigger.new[c].Status.contains('Closed')== true)) {
  6.   CaseSet.add(Trigger.New[c].Id);
  7.   }
  8.   }
  9.  
  10.   If(CaseSet.Size()>0){
  11.   Case[] cases = [select Id, Status, ParentId from Case where ParentId in:CaseSet];
  12.  
  13.   for (Integer i=0;i<Trigger.size;i++) {
  14.     if ((Trigger.old[i].Status.contains('Closed')== false) && (Trigger.new[i].Status.contains('Closed')== true)) {
  15.       for (Integer j=0;j<cases.size();j++) {
  16.         if (cases[j].ParentId == Trigger.new[i].Id) {
  17.           if(cases[j].Status.contains('Closed')==false)
  18.           {
  19.           cases[j].Status = 'Closed';
  20.           casesToUpdate.add(cases[j]);
  21.           }
  22.         } //end if
  23.       } //end for
  24.     } //end if
  25.   } //end for
  26. } //update the list
  27. if(casesToUpdate.size()>0){
  28.   update casesToUpdate;
  29.   }
  30. } //end trigger
..