Can anyone help me in changing this query.
public void ReAssignTask(List<Task> taskList){
//Initialize variables
String tempContainer;
Set<Id> taskOwners = new Set<Id>();
Map<Id,Id> taskOwnerMap = new Map<Id,Id>();
Map<Id,Id> taskParentMap = new Map<Id,Id>();
Map<Id,String> userProfileMap = new Map<Id,String>();
Map<Id,Id> vsrToSR = new Map<Id,Id>();
Map<Id,Id> srToVSR = new Map<Id,Id>();
//Get owners of the tasks
for(Task loopTask : taskList){
taskOwnerMap.put(loopTask.Id, loopTask.OwnerId);
taskParentMap.put(loopTask.Id, loopTask.WhatId);
}
//Group tasks depending on the profile of the owners of the tasks
for(User loopUser : [SELECT id, profile.name FROM User WHERE Id IN :taskOwnerMap.values()]){
userProfileMap.put(loopUser.Id, loopUser.profile.name);
}
for(Veeva_Service_Request__c loopVSR : [SELECT Id, Service_Request_Id__c
FROM Veeva_Service_Request__c
WHERE Id IN :taskParentMap.values()
OR Service_Request_Id__c IN :taskParentMap.values()]){
//Get Service Request for Veeva Service Request
srToVSR.put(loopVSR.Service_Request_Id__c, loopVSR.Id);
//Get Veeva Service Request for Service Requests
vsrToSR.put(loopVSR.Id, loopVSR.Service_Request_Id__c);
}
//Re-assign service request tasks to its veeva service request counterpart
for(Task loopTask : taskList){
if(loopTask.WhatId.getSobjectType().getDescribe().getName() != 'Case' &&
loopTask.WhatId.getSobjectType().getDescribe().getName() != 'Veeva_Service_Request__c' &&
(userProfileMap.get(loopTask.OwnerId).contains('NAM') ||
userProfileMap.get(loopTask.OwnerId).contains('LSM'))){
loopTask.addError('A task cannot be assigned to LSM/NAM users if it is not related to a Case.');
}
if((userProfileMap.get(taskOwnerMap.get(loopTask.Id)).toLowerCase()).contains('nam')){
//Assign task from service request to veeva service request
if(srToVSR.containsKey(loopTask.whatId)){
loopTask.Service_Request_LookUp__c = loopTask.whatId;
loopTask.whatId = srToVSR.get(loopTask.whatId);
}
}else if((userProfileMap.get(taskOwnerMap.get(loopTask.Id)).toLowerCase()).contains('lsm')){
//Assign task from service request to veeva service request
if(srToVSR.containsKey(loopTask.whatId)){
loopTask.Service_Request_LookUp__c = loopTask.whatId;
loopTask.whatId = srToVSR.get(loopTask.whatId);
}
}else{
//Assign task from veeva service request to service request
if(vsrToSR.containsKey(loopTask.whatId)){
loopTask.Veeva_Service_Request_LookUp__c = loopTask.whatId;
loopTask.whatId = vsrToSR.get(loopTask.whatId);
}
}
}
}
}
taskParentMap
is null then you would get that error.