Hello Guys,
I am back with new topic. This time we all are going to discuss about Case Team Via Apex. So first of all let's brief discussion on Case Team.
A case team is a team of users that work together on a case. For example, your case team may include a support rep, support manager, and a product manager.
So the requirement is that whenever a new case is created then creator should be added in Case Team.
The user who edit the case , will be added on that case based on last modified.
To implement this you will need following two main things
~Vikas
I am back with new topic. This time we all are going to discuss about Case Team Via Apex. So first of all let's brief discussion on Case Team.
A case team is a team of users that work together on a case. For example, your case team may include a support rep, support manager, and a product manager.
So the requirement is that whenever a new case is created then creator should be added in Case Team.
The user who edit the case , will be added on that case based on last modified.
To implement this you will need following two main things
- Case Team Roles
- Related List of Case Team in Case detail page.
trigger addTeamMembers on Case (after insert, After Update) {
User Us = [SELECt id, name , profile.name from User WHERE id =: UserInfo.getUserId( )];
if(checkRecursive.runOnce()){
if(us.profile.name != 'TM Customer Community Login'){
Map<Id, CaseTeamMember> membersToAdd = new Map<Id, CaseTeamMember>();
if(trigger.isAfter){
List<Case> cases = [Select Id,OwnerId, LastModifiedById from Case where id IN :Trigger.newMap.keySet()];
if(trigger.IsInsert){
for (Case c : cases) {
membersToAdd.put(c.Id, new CaseTeamMember(ParentId = c.Id, MemberId = UserInfo.getUserId( )));
}
}
if(trigger.IsUpdate){
for (Case c : cases) {
membersToAdd.put(c.Id, new CaseTeamMember(ParentId = c.Id, MemberId = c.LastModifiedById));
}
}
if (!membersToAdd.isEmpty()) {
try {
CaseTeamRole caseTeamRole = [SELECT Id FROM CaseTeamRole WHERE Name = 'Immerti' LIMIT 1];
for (CaseTeamMember ctm : membersToAdd.values()) {
ctm.TeamRoleId = caseTeamRole.Id;
}
for (CaseTeamMember ctm : [SELECT Id, MemberId, ParentId FROM CaseTeamMember
WHERE ParentId IN :membersToAdd.keySet()
AND MemberId = :UserInfo.getUserId()
ORDER BY ParentId]) {
if (membersToAdd.containsKey(ctm.ParentId)) {
membersToAdd.remove(ctm.ParentId);
}
}
if (!membersToAdd.isEmpty()) {
insert membersToAdd.values();
}
} catch (System.QueryException qe) {}
}
}
}else{
User u1 = [SELECT id, name from User WHERE name = 'Carla Martin'];
User u = [SELECT id, name from User WHERE name = 'Zina Sejdic'];
set<Id> csId = new set<Id>();
if(trigger.isInsert){
if(trigger.isAfter){
for(Case c : trigger.new){
csId.add(c.id);
}
if(csId.size() > 0){
Case cs = [SELECT id, ownerId from case WHERE id IN : csId];
cs.ownerId = u1.id;
update cs;
CaseTeamRole caseTeamRole = [SELECT Id FROM CaseTeamRole WHERE Name = 'Immerti' LIMIT 1];
CaseTeamMember tm = new CaseTeamMember();
tm.ParentId = cs.id;
tm.MemberId = u.id;
tm.TeamRoleId = caseTeamRole.id;
insert tm;
}
}
}
}
}
}
~Vikas