|
1 | 1 | global class ConvNoteCacheHandler extends MyTriggers {
|
| 2 | + ModiaIntegrationUser modiaIntegrationUser = new ModiaIntegrationUser(); |
| 3 | + |
2 | 4 | global override void onAfterInsert() {
|
3 |
| - List<HenvendelseUpdateWrapper> convNotes = new List<HenvendelseUpdateWrapper>(); |
| 5 | + Set<Id> convNoteIds = new Set<Id>(); |
4 | 6 | for (
|
5 | 7 | Conversation_Note__c record : (List<Conversation_Note__c>) records
|
6 | 8 | ) {
|
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 | + } |
10 | 13 | }
|
11 | 14 |
|
12 |
| - createHenvendelseCacheQueueable(convNotes); |
| 15 | + if (!convNoteIds.isEmpty()) { |
| 16 | + System.enqueueJob( |
| 17 | + new ClearHenvendelseCacheQueueable(convNoteIds, null) |
| 18 | + ); |
| 19 | + } |
13 | 20 | }
|
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 |
| - }; |
25 | 21 |
|
26 |
| - List<HenvendelseUpdateWrapper> convNotesWithRelevantChanges = new List<HenvendelseUpdateWrapper>(); |
| 22 | + global override void onAfterUpdate(Map<Id, SObject> triggerOldMap) { |
| 23 | + Set<Id> convNoteIds = new Set<Id>(); |
27 | 24 | for (
|
28 | 25 | Conversation_Note__c record : (List<Conversation_Note__c>) records
|
29 | 26 | ) {
|
30 |
| - Conversation_Note__c recordOld = (Conversation_Note__c) triggerOldMap.get( |
| 27 | + Conversation_Note__c oldRecord = (Conversation_Note__c) triggerOldMap.get( |
31 | 28 | record.Id
|
32 | 29 | );
|
| 30 | + Boolean isGeneralUpdate = checkForRelevantUpdates( |
| 31 | + record, |
| 32 | + oldRecord |
| 33 | + ); |
| 34 | + Boolean isRedactionChange = checkForRedactionChange( |
| 35 | + record, |
| 36 | + oldRecord |
| 37 | + ); |
33 | 38 |
|
| 39 | + //Ignore updates by Modia, except redaction requests |
34 | 40 | 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 |
53 | 44 | ) {
|
54 |
| - HenvendelseUpdateWrapper recordWrapper = new HenvendelseUpdateWrapper(); |
55 |
| - recordWrapper.convNote = record; |
56 |
| - recordWrapper.isRedactionChange = true; |
57 |
| - convNotesWithRelevantChanges.add(recordWrapper); |
| 45 | + convNoteIds.add(record.Id); |
58 | 46 | }
|
59 | 47 | }
|
60 |
| - if (convNotesWithRelevantChanges.isEmpty()) { |
61 |
| - return; |
| 48 | + if (!convNoteIds.isEmpty()) { |
| 49 | + System.enqueueJob( |
| 50 | + new ClearHenvendelseCacheQueueable(convNoteIds, null) |
| 51 | + ); |
62 | 52 | }
|
63 |
| - createHenvendelseCacheQueueable(convNotesWithRelevantChanges); |
64 | 53 | }
|
65 | 54 |
|
66 |
| - private void createHenvendelseCacheQueueable( |
67 |
| - List<HenvendelseUpdateWrapper> convNoteList |
| 55 | + private Boolean checkForRelevantUpdates( |
| 56 | + Conversation_Note__c record, |
| 57 | + Conversation_Note__c oldRecord |
68 | 58 | ) {
|
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 |
71 | 74 | );
|
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 |
80 | 85 | );
|
81 | 86 | }
|
82 | 87 | }
|
0 commit comments