/** 
 | 
 * 用户的评价创建时间和条数在用户表中汇总更新 
 | 
 */ 
 | 
trigger SmarmSetUserCount on SMARM__c (after insert, before delete) { 
 | 
    Map<Id, User> userMap = new Map<Id, User>(); 
 | 
    List<Id> userList = new List<Id>(); 
 | 
    List<Id> delSmarmIds = new List<Id>(); 
 | 
    if (Trigger.isAfter) { 
 | 
        if (Trigger.isInsert) { 
 | 
            for (SMARM__c m : Trigger.new) { 
 | 
                if (m.Review_Target__c != null && userMap.containsKey(m.Review_Target__c) == false) { 
 | 
                    userMap.put(m.Review_Target__c, new User(Id = m.Review_Target__c)); 
 | 
                    userList.add(m.Review_Target__c); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
    else { 
 | 
        for (SMARM__c m : Trigger.old) { 
 | 
            if (m.Review_Target__c != null && userMap.containsKey(m.Review_Target__c) == false) { 
 | 
                userMap.put(m.Review_Target__c, new User(Id = m.Review_Target__c)); 
 | 
                userList.add(m.Review_Target__c); 
 | 
            } 
 | 
            delSmarmIds.add(m.Id); 
 | 
        } 
 | 
    } 
 | 
    if (userMap.size() > 0) { 
 | 
        AggregateResult[] arList = ControllerUtil.selectSmarmSetUserCount(userMap.keySet(), delSmarmIds); 
 | 
        Map<String,AggregateResult> rsMap = new Map<String,AggregateResult>(); 
 | 
        for (AggregateResult ar: arList) { 
 | 
            rsMap.put(String.valueOf(ar.get('Review_Target')),ar); 
 | 
        } 
 | 
        for (string id : userList) { 
 | 
            if (rsMap.containsKey(id)) { 
 | 
                User u = userMap.get(String.valueOf(rsMap.get(id).get('Review_Target'))); 
 | 
                u.Smarm_Count__c = Integer.valueOf(rsMap.get(id).get('Cnt_Id')); 
 | 
                u.Last_Smarm_Date__c = Date.valueOf(rsMap.get(id).get('Max_Report_Date')); 
 | 
            } else { 
 | 
                User u = userMap.get(id); 
 | 
                u.Smarm_Count__c = 0; 
 | 
                u.Last_Smarm_Date__c = null; 
 | 
            } 
 | 
        } 
 | 
        ControllerUtil.updateUserList(userMap.values()); 
 | 
    } 
 | 
} 
 |