Untitled
unknown
plain_text
12 days ago
5.6 kB
6
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