You need to sign in to do that
Don't have an account?
GYAN ANDRUS
Below trigger i have denoted the queue id,I want to get the queue nam,e dynamically,Added the trigger,please help me
trigger ParentChildcase on Case (before update) { List<Case> listCase = [select Id,parentId,status from case where parentId != null ]; ////List<Queues> listqueue = [select Id from Queues where name = 'Welcome_Call_Queue']; system.debug('listCase'+listCase); map<Id,list<Case>> mapCase = new map<Id,list<Case>>(); for(Case objCase : listCase){ if(objCase.status != 'Closed'){ List<Case> listCasemap = new List<Case>(); if(mapCase.containskey(objCase.parentId)) listCasemap = mapCase.get(objCase.parentId); listCasemap.add(objCase); mapCase.put(objCase.parentId,listCasemap); } } system.debug('mapCase'+mapCase); for(case caseObj:Trigger.New){ if(caseObj.parentId == null && caseObj.Status == 'Closed'){ if(mapCase.containskey(caseObj.Id)){ List<Case> listCasemap = mapCase.get(caseObj.Id); if(listCasemap.size() != 0){ caseObj.addError('Unclosed Child Records are Present.'); } } } system.debug('caseObj.Owner.Name'+caseObj.Owner.Name); if(caseObj.OwnerID == '00GO0000001iIbf' && caseObj.Status == 'Closed'){ caseObj.addError('please own the case and close'); } } }
In order to fetch queue id dynamically, you need to put SOQL on Group object with type as 'Queue' and by specifying developer name of queue.
For example, you queue name( label in queue detail page ) is "Test 1". Find the developername of queue (Queue name in queue detail page). In my case the developername is "Test1". Now use below SOQL:
Group CaseQueue=[select id,name,DeveloperName from group where type='Queue' AND developername='Test1'];
system.debug('*****CaseQueue:'+CaseQueue);
Now in you if condition, use it as :
if(caseObj.OwnerID == CaseQueue.id && caseObj.Status == 'Closed'){
//put your code here
}
Hope this will help you.
[If it solves your problem, please mark it as solution]
Thanks,
Sunil Kumar
thanks hema
Updated Trigger Code:
trigger ParentChildcase on Case (before update) {
String QueueDeveloperName='test1';//here specify your queue developer name
Group CaseQueue=[select id,name,DeveloperName from group where type='Queue' AND developername=:QueueDeveloperName];
system.debug('*****CaseQueue:'+CaseQueue);
List<Case> listCase = [select Id,parentId,status from case where parentId != null ];
////List<Queues> listqueue = [select Id from Queues where name = 'Welcome_Call_Queue'];
system.debug('listCase'+listCase);
map<Id,list<Case>> mapCase = new map<Id,list<Case>>();
for(Case objCase : listCase){
if(objCase.status != 'Closed'){
List<Case> listCasemap = new List<Case>();
if(mapCase.containskey(objCase.parentId))
listCasemap = mapCase.get(objCase.parentId);
listCasemap.add(objCase);
mapCase.put(objCase.parentId,listCasemap);
}
}
system.debug('mapCase'+mapCase);
for(case caseObj:Trigger.New){
if(caseObj.parentId == null && caseObj.Status == 'Closed'){
if(mapCase.containskey(caseObj.Id)){
List<Case> listCasemap = mapCase.get(caseObj.Id);
if(listCasemap.size() != 0){
caseObj.addError('Unclosed Child Records are Present.');
}
}
}
system.debug('caseObj.Owner.Name'+caseObj.Owner.Name);
if(caseObj.OwnerID == CaseQueue.id && caseObj.Status == 'Closed'){
caseObj.addError('please own the case and close');
}
}
}
Hope this will help you.
[If it solves your problem, please mark it as solution]
Thanks,
Sunil Kumar
String QueueDeveloperName='Welcome_Call_Queue';//here specify your queue developer name
Group CaseQueue=[select id,name,DeveloperName from group where type='Queue' AND developername=:QueueDeveloperName]; system.debug('*****CaseQueue:'+CaseQueue);
Hope this will help you.
[If it solves your problem, please mark it as solution]
Thanks,
Sunil Kumar