/**
|
* 用户的评价创建时间和条数在用户表中汇总更新
|
*/
|
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());
|
}
|
}
|