Untitled
unknown
plain_text
8 months ago
5.6 kB
7
Indexable
/*
TRIGGER NAME : attachmentTrigger
REQUIREMENT : STORE THE ID OF THE LATEST UPLOADED FILE ON TO THE FILE STORAGE OBJECT
CHANGE LOG
NAME DATE DESCRIPTION
Pavan 03/14/2016 Created
*/
trigger attachmentTrigger on Attachment (after insert,after delete)
{
//REFER CUSTOM SETTINGS, IF RUNTRIGGER FIELD IS SET AS TRUE THEN RUN THE TRIGGER
triggerHandler__C triggerHandlerValue = triggerHandler__C.getValues('attachmentTrigger');
if(triggerHandlerValue.runTrigger__c)
{
Map<id,id> sObjectIdVSattchId_Map = new Map<id,id>();
Map<id,List<Attachment>> fileStorageListMap = new Map<id,List<Attachment>>();
if(Trigger.isInsert && Trigger.isAfter)
{
List<Files_Storage__c> fileStorageUpdate = new List<Files_Storage__c>();
//ITERATING OVER THE TRIGGER.NEW
for(Attachment attch: Trigger.New)
{
//BUILD A MAP OF ATTACHMENT ID AND PARENT ID ONLY IF THE SOBJECT TYPE IS FILES_STORAGE__C
if(attch.ParentId.getSobjectType() == Files_Storage__c.sObjectType)
{
Files_Storage__c fsObj = new Files_Storage__c();
fsObj.Id = attch.ParentId;
fsObj.AttachmentId__c = attch.id;
fileStorageUpdate.add(fsObj);
}
}
if(fileStorageUpdate != null && fileStorageUpdate.size() > 0){
update fileStorageUpdate;
}
}
if(Trigger.isDelete && Trigger.isAfter)
{
Map<id,string> parentIdVSattchId_Map = new Map<id,string>();
List<Files_Storage__c> fs_List = new List<Files_Storage__c>();
for(Attachment attch: Trigger.old)
{
//BUILD A MAP OF ATTACHMENT ID AND PARENT ID ONLY IF THE SOBJECT TYPE IS FILES_STORAGE__C
if(attch.ParentId.getSobjectType() == Files_Storage__c.sObjectType)
{
parentIdVSattchId_Map.put(attch.ParentId,attch.Id);
}
}
Map<id,Tariffs__C> tariffs_Map = new Map<id,Tariffs__C>();
for(Tariffs__C trf : [SELECT id,Name,Rule_File__c,Rule_File__r.Attachmentid__c, Tariff_No_File__c,Tariff_No_File__r.Attachmentid__c,Transmittal_File__c,Transmittal_File__r.Attachmentid__c FROM Tariffs__C WHERE (Rule_File__c IN : parentIdVSattchId_Map.KeySet()) OR ( Tariff_No_File__c IN : parentIdVSattchId_Map.KeySet()) OR (Transmittal_File__c IN : parentIdVSattchId_Map.KeySet())] )
{
if(parentIdVSattchId_Map.containsKey(trf.Rule_File__c))
tariffs_Map.put(trf.Rule_File__c,trf);
if(parentIdVSattchId_Map.containsKey(trf.Tariff_No_File__c))
tariffs_Map.put(trf.Tariff_No_File__c,trf);
if(parentIdVSattchId_Map.containsKey(trf.Transmittal_File__c))
tariffs_Map.put(trf.Transmittal_File__c,trf);
}
for(Attachment attch: Trigger.old)
{
if(tariffs_Map.containsKey(attch.parentid) && (tariffs_Map.get(attch.parentid) != null && (attch.id == tariffs_Map.get(attch.parentid).Rule_File__r.Attachmentid__c || attch.id == tariffs_Map.get(attch.parentid).Tariff_No_File__r.Attachmentid__c || attch.id == tariffs_Map.get(attch.parentid).Transmittal_File__r.Attachmentid__c)))
{
attch.addError('Your attempt to delete the file could not be completed because it is associated with the Tariff # '+ tariffs_Map.get(attch.parentid).Name +' Please remove the file references from the tariffs.');
}
}
Set<id> fileStorageSet = new Set<id>();
List<Files_Storage__c> updateFSList = new List<Files_Storage__c>();
for(Attachment attObj : [Select Id, Name, Parentid from Attachment where parentId in :parentIdVSattchId_Map.keySet() order by parentid, lastmodifieddate desc]){
if(!fileStorageSet.contains(attObj.ParentId) && parentIdVSattchId_Map.containskey(attObj.parentid)){
Files_Storage__c updateFileStorage = new Files_Storage__c();
updateFileStorage.id = attObj.parentid;
updateFileStorage.AttachmentId__c = attObj.Id;
fileStorageSet.add(attObj.ParentId);
updateFSList.add(updateFileStorage);
}
}
for(Id rec: parentIdVSattchId_Map.keySet()){
if(!fileStorageSet.contains(rec)){
Files_Storage__c updateFileStorage = new Files_Storage__c();
updateFileStorage.id = rec;
updateFileStorage.AttachmentId__c = '';
updateFSList.add(updateFileStorage);
}
}
if(updateFSList != null && updateFSList.size() > 0){
update updateFSList;
}
}
}
}
Editor is loading...
Leave a Comment