I need to have a trigger that updates a date on the contact based on whether a task was created with two specific dispositions (Call_Disposition__c is a custom field on the Activity). Since the field that I need to filter by is on the activity and not on the task it appears that I cannot do this - just checking to see if I am correct and this is not going to be possible. I get the message - No Access to Entity: Activity.
trigger LastQteamUpdate on Task (after insert, after update) {
// set up lists you will need
datetime myDate = datetime.now();
List<Contact> consToUpdate = new List<Contact>();
Map<Id, Task> taskMap = new Map<Id, Task>();
// go through the list of tasks that were inserted
for (Task t: Trigger.New){
// if they are related to a contact, add the contact id (whoID) and their values to a map
if (t.WhatId != null && (Activity.Call_Disposition__c == 'Contact - Call'|Activity.Call_Disposition__c == 'Contact - Email' ) ){
taskMap.put(t.WhatId, t);
}
}
// if the map isnt empty
// *** saying !taskMap.isEmpty() costs much less than using taskMap.size()>0 ***
system.debug('taskMap = '+taskMap);
if (taskMap.size() > 0)
{
// get all of the contacts related to the tasks
consToUpdate = [SELECT Id, Last_SDR_Update__c, Last_person_to_edit_task__c
FROM Contact
WHERE Id IN: taskMap.keySet()];
// go through the list for each contact
for (Contact c: consToUpdate){
// set the SDR update field to the date
c.Last_SDR_Update__c = myDate;
c.Last_person_to_edit_task__c = userinfo.getName();
}
// if the list of cons isnt empty, update them
system.debug('consToUpdate = '+consToUpdate);
if (consToUpdate.size() > 0)
{
update consToUpdate;
}
}
}