Untitled

 avatar
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