Skip to content

Commit 2f7efc7

Browse files
authored
Merge pull request #7 from navikt/refactor-trigger-handlers
Refactor trigger handlers
2 parents 2b83258 + ac11dd1 commit 2f7efc7

16 files changed

+456
-816
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,87 @@
11
global class ConvNoteCacheHandler extends MyTriggers {
2+
ModiaIntegrationUser modiaIntegrationUser = new ModiaIntegrationUser();
3+
24
global override void onAfterInsert() {
3-
List<HenvendelseUpdateWrapper> convNotes = new List<HenvendelseUpdateWrapper>();
5+
Set<Id> convNoteIds = new Set<Id>();
46
for (
57
Conversation_Note__c record : (List<Conversation_Note__c>) records
68
) {
7-
HenvendelseUpdateWrapper recordWrapper = new HenvendelseUpdateWrapper();
8-
recordWrapper.convNote = record;
9-
convNotes.add(recordWrapper);
9+
//Ignore conversation notes created by Modia. Should be handled in the NAIS app
10+
if (record.CreatedById != modiaIntegrationUser.UserId) {
11+
convNoteIds.add(record.Id);
12+
}
1013
}
1114

12-
createHenvendelseCacheQueueable(convNotes);
15+
if (!convNoteIds.isEmpty()) {
16+
System.enqueueJob(
17+
new ClearHenvendelseCacheQueueable(convNoteIds, null)
18+
);
19+
}
1320
}
14-
global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) {
15-
List<String> fieldNamesToCheck = new List<String>{
16-
'CRM_Communication_Channel__c',
17-
'CRM_Disposal_Datetime__c',
18-
'CRM_Incorrectly_Sent__c',
19-
'CRM_Is_Read__c',
20-
'STO_Sensitive_Information__c',
21-
'CRM_Subtheme__c',
22-
'CRM_Theme__c',
23-
'CRM_Is_Redacted__c'
24-
};
2521

26-
List<HenvendelseUpdateWrapper> convNotesWithRelevantChanges = new List<HenvendelseUpdateWrapper>();
22+
global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) {
23+
Set<Id> convNoteIds = new Set<Id>();
2724
for (
2825
Conversation_Note__c record : (List<Conversation_Note__c>) records
2926
) {
30-
Conversation_Note__c recordOld = (Conversation_Note__c) triggerOldMap.get(
27+
Conversation_Note__c oldRecord = (Conversation_Note__c) triggerOldMap.get(
3128
record.Id
3229
);
30+
Boolean isGeneralUpdate = checkForRelevantUpdates(
31+
record,
32+
oldRecord
33+
);
34+
Boolean isRedactionChange = checkForRedactionChange(
35+
record,
36+
oldRecord
37+
);
3338

39+
//Ignore updates by Modia, except redaction requests
3440
if (
35-
MyTriggers.hasChangedFields(
36-
fieldNamesToCheck,
37-
record,
38-
recordOld
39-
)
40-
) {
41-
HenvendelseUpdateWrapper recordWrapper = new HenvendelseUpdateWrapper();
42-
recordWrapper.convNote = record;
43-
recordWrapper.isGeneralUpdate = true;
44-
convNotesWithRelevantChanges.add(recordWrapper);
45-
}
46-
47-
if (
48-
MyTriggers.hasChangedFields(
49-
new List<String>{ 'STO_Sensitive_Information__c' },
50-
record,
51-
recordOld
52-
)
41+
(isGeneralUpdate &&
42+
record.LastModifiedById != modiaIntegrationUser.UserId) ||
43+
isRedactionChange
5344
) {
54-
HenvendelseUpdateWrapper recordWrapper = new HenvendelseUpdateWrapper();
55-
recordWrapper.convNote = record;
56-
recordWrapper.isRedactionChange = true;
57-
convNotesWithRelevantChanges.add(recordWrapper);
45+
convNoteIds.add(record.Id);
5846
}
5947
}
60-
if (convNotesWithRelevantChanges.isEmpty()) {
61-
return;
48+
if (!convNoteIds.isEmpty()) {
49+
System.enqueueJob(
50+
new ClearHenvendelseCacheQueueable(convNoteIds, null)
51+
);
6252
}
63-
createHenvendelseCacheQueueable(convNotesWithRelevantChanges);
6453
}
6554

66-
private void createHenvendelseCacheQueueable(
67-
List<HenvendelseUpdateWrapper> convNoteList
55+
private Boolean checkForRelevantUpdates(
56+
Conversation_Note__c record,
57+
Conversation_Note__c oldRecord
6858
) {
69-
Set<Id> recordIds = ConvNoteCacheFilterHelper.getRecordIdsRequiringCacheClear(
70-
convNoteList
59+
List<String> fieldNamesToCheck = new List<String>{
60+
'CRM_Communication_Channel__c',
61+
'CRM_Disposal_Datetime__c',
62+
'CRM_Incorrectly_Sent__c',
63+
'CRM_Is_Read__c',
64+
'STO_Sensitive_Information__c',
65+
'CRM_Subtheme__c',
66+
'CRM_Theme__c',
67+
'CRM_Is_Redacted__c'
68+
};
69+
70+
return MyTriggers.hasChangedFields(
71+
fieldNamesToCheck,
72+
record,
73+
oldRecord
7174
);
72-
if (recordIds.isEmpty()) {
73-
return;
74-
}
75-
System.enqueueJob(
76-
new ClearHenvendelseCacheQueueable(
77-
recordIds,
78-
'Conversation_Note__c'
79-
)
75+
}
76+
77+
private Boolean checkForRedactionChange(
78+
Conversation_Note__c record,
79+
Conversation_Note__c oldRecord
80+
) {
81+
return MyTriggers.hasChangedFields(
82+
new List<String>{ 'STO_Sensitive_Information__c' },
83+
record,
84+
oldRecord
8085
);
8186
}
8287
}
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,49 @@
11
global class MessageCacheHandler extends MyTriggers {
2+
ModiaIntegrationUser modiaIntegrationUser = new ModiaIntegrationUser();
3+
24
global override void onAfterInsert() {
3-
createHenvendelseCacheQueueable((List<Message__c>) records);
5+
Set<Id> threadIds = new Set<Id>();
6+
for (Message__c record : (List<Message__c>) records) {
7+
if (record.CreatedById != modiaIntegrationUser.UserId) {
8+
threadIds.add(record.CRM_Thread__c);
9+
}
10+
}
11+
12+
if (!threadIds.isEmpty()) {
13+
System.enqueueJob(
14+
new ClearHenvendelseCacheQueueable(null, threadIds)
15+
);
16+
}
417
}
518

619
global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) {
7-
List<Message__c> messagesWithRelevantChanges = new List<Message__c>();
20+
Set<Id> threadIds = new Set<Id>();
821
for (Message__c record : (List<Message__c>) records) {
922
Message__c oldRecord = (Message__c) triggerOldMap.get(record.Id);
1023
if (
11-
MyTriggers.hasChangedFields(
12-
new List<String>{ 'CRM_Read__c' },
13-
record,
14-
oldRecord
15-
)
24+
record.LastModifiedById != modiaIntegrationUser.UserId &&
25+
checkForRelevantUpdates(record, oldRecord)
1626
) {
17-
messagesWithRelevantChanges.add(record);
27+
threadIds.add(record.CRM_Thread__c);
1828
}
1929
}
20-
if (!messagesWithRelevantChanges.isEmpty()) {
21-
createHenvendelseCacheQueueable(messagesWithRelevantChanges);
30+
if (!threadIds.isEmpty()) {
31+
System.enqueueJob(
32+
new ClearHenvendelseCacheQueueable(null, threadIds)
33+
);
2234
}
2335
}
2436

25-
private void createHenvendelseCacheQueueable(List<Message__c> messageList) {
26-
Set<Id> recordIds = MessageCacheFilterHelper.getRecordIdsRequiringCacheClear(
27-
messageList
28-
);
29-
if (recordIds.isEmpty()) {
30-
return;
31-
}
32-
System.enqueueJob(
33-
new ClearHenvendelseCacheQueueable(recordIds, 'Message__c')
37+
private Boolean checkForRelevantUpdates(
38+
Message__c record,
39+
Message__c oldRecord
40+
) {
41+
List<String> fieldNamesToCheck = new List<String>{ 'CRM_Read__c' };
42+
43+
return MyTriggers.hasChangedFields(
44+
fieldNamesToCheck,
45+
record,
46+
oldRecord
3447
);
3548
}
3649
}
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,72 @@
11
global class ThreadCacheHandler extends MyTriggers {
2-
global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) {
3-
List<String> generaUpdateFieldChange = new List<String>{
4-
'STO_Category__c',
5-
'CRM_Thread_Type__c'
6-
};
2+
ModiaIntegrationUser modiaIntegrationUser = new ModiaIntegrationUser();
73

8-
List<HenvendelseUpdateWrapper> threadsWithRelevantChanges = new List<HenvendelseUpdateWrapper>();
4+
global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) {
5+
Set<Id> threadIds = new Set<Id>();
96

107
for (Thread__c record : (List<Thread__c>) records) {
11-
Thread__c recordOld = (Thread__c) triggerOldMap.get(record.Id);
12-
Boolean isRedactionChange = false;
13-
Boolean isCloseThreadChange = false;
14-
Boolean isGeneralUpdateChange = false;
15-
16-
if (
17-
MyTriggers.hasChangedFields(
18-
generaUpdateFieldChange,
19-
record,
20-
recordOld
21-
)
22-
) {
23-
isGeneralUpdateChange = true;
24-
}
25-
26-
if (
27-
MyTriggers.hasChangedFields(
28-
new List<String>{ 'STO_Sensitive_Information__c' },
29-
record,
30-
recordOld
31-
)
32-
) {
33-
isRedactionChange = true;
34-
}
35-
36-
if (
37-
MyTriggers.hasChangedFields(
38-
new List<String>{ 'CRM_Closed_Date__c' },
39-
record,
40-
recordOld
41-
)
42-
) {
43-
isCloseThreadChange = true;
44-
}
8+
Thread__c oldRecord = (Thread__c) triggerOldMap.get(record.Id);
9+
Boolean isGeneralUpdateChange = checkForRelevantUpdates(
10+
record,
11+
oldRecord
12+
);
13+
Boolean isRedactionChange = checkForRedactionUpdates(
14+
record,
15+
oldRecord
16+
);
17+
Boolean isThreadClosing = checkForThreadClosing(record, oldRecord);
4518

4619
if (
47-
isGeneralUpdateChange ||
20+
(isGeneralUpdateChange &&
21+
record.LastModifiedById != modiaIntegrationUser.UserId) ||
4822
isRedactionChange ||
49-
isCloseThreadChange
23+
isThreadClosing
5024
) {
51-
HenvendelseUpdateWrapper wrapper = new HenvendelseUpdateWrapper();
52-
wrapper.thread = record;
53-
wrapper.isGeneralUpdate = isGeneralUpdateChange;
54-
wrapper.isRedactionChange = isRedactionChange;
55-
wrapper.isCloseThreadChange = isCloseThreadChange;
56-
threadsWithRelevantChanges.add(wrapper);
25+
threadIds.add(record.Id);
5726
}
5827
}
28+
if (!threadIds.isEmpty()) {
29+
System.enqueueJob(
30+
new ClearHenvendelseCacheQueueable(null, threadIds)
31+
);
32+
}
33+
}
5934

60-
createHenvendelseCacheQueueable(threadsWithRelevantChanges);
35+
private Boolean checkForRelevantUpdates(
36+
Thread__c record,
37+
Thread__c oldRecord
38+
) {
39+
List<String> generaUpdateFieldChange = new List<String>{
40+
'STO_Category__c',
41+
'CRM_Thread_Type__c'
42+
};
43+
44+
return MyTriggers.hasChangedFields(
45+
generaUpdateFieldChange,
46+
record,
47+
oldRecord
48+
);
6149
}
6250

63-
private void createHenvendelseCacheQueueable(
64-
List<HenvendelseUpdateWrapper> threadList
51+
private Boolean checkForRedactionUpdates(
52+
Thread__c record,
53+
Thread__c oldRecord
6554
) {
66-
Set<Id> recordIds = ThreadCacheFilterHelper.getRecordIdsRequiringCacheClear(
67-
threadList
55+
return MyTriggers.hasChangedFields(
56+
new List<String>{ 'STO_Sensitive_Information__c' },
57+
record,
58+
oldRecord
6859
);
60+
}
6961

70-
if (recordIds.isEmpty()) {
71-
return;
72-
}
73-
System.enqueueJob(
74-
new ClearHenvendelseCacheQueueable(recordIds, 'Thread__c')
62+
private Boolean checkForThreadClosing(
63+
Thread__c record,
64+
Thread__c oldRecord
65+
) {
66+
return MyTriggers.hasChangedFields(
67+
new List<String>{ 'CRM_Closed_Date__c' },
68+
record,
69+
oldRecord
7570
);
7671
}
7772
}

0 commit comments

Comments
 (0)