Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TOLK-1746 : Se lister på sms basert på region #2071

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,7 @@ public with sharing class HOT_IncomingSMSNotification {
}

Map<Id, SMS__c> smsRecords = new Map<Id, SMS__c>(
[
SELECT Account__c, Domain__c, Type__c, Recipient__c, Message__c
FROM SMS__c
WHERE Id IN :smsIds
]
[SELECT Account__c, Domain__c, Type__c, Recipient__c, Message__c FROM SMS__c WHERE Id IN :smsIds]
);

for (SMS__c sms : messages) {
Expand Down
47 changes: 47 additions & 0 deletions force-app/main/triggers/classes/HOT_SMSHandler.cls
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
public without sharing class HOT_SMSHandler extends MyTriggers {
public override void onBeforeInsert() {
routeSMSToQueue((List<SMS__c>) records);
}
public override void onBeforeUpdate(Map<Id, sObject> triggerOldMap) {
List<SMS__c> SMSToChangeOwnerToArchive = new List<SMS__c>();
for (SMS__c sms : (List<SMS__c>) records) {
Expand All @@ -18,4 +21,48 @@ public without sharing class HOT_SMSHandler extends MyTriggers {
public override void onAfterInsert() {
HOT_IncomingSMSNotification.notifyDispatchersOnIncomingSMS((List<SMS__c>) records);
}

public void routeSMSToQueue(List<SMS__c> messages) {
Set<Id> sendersAccountId = new Set<Id>();
for (SMS__c message : messages) {
if (message.Account__c != null) {
sendersAccountId.add(message.Account__c);
}
}
List<Person__c> senders = [
SELECT Id, CRM_Account__c, INT_RegionNumber__c, INT_MunicipalityNumber__c, CRM_FullName__c
FROM Person__c
WHERE CRM_Account__c IN :sendersAccountId
];
List<SobjectWrapper> wrappers = new List<SobjectWrapper>();
Integer senderIndex = 0;

for (Person__c sender : senders) {
SobjectWrapper wrapper = new SobjectWrapper(
senderIndex,
sender.INT_MunicipalityNumber__c,
sender.INT_RegionNumber__c
);
wrapper.confidential = 'Ugradert';
wrappers.add(wrapper);
senderIndex++;
}

Map<Integer, ApexSharingRuleWrapper> ruleByPersonId = RecordOwnerService.getQueuesAndNavUnits(
wrappers,
'Person__c'
);

Integer i = 0;
Group adminGroup = [SELECT Id FROM Group WHERE Type = 'Queue' AND DeveloperName = 'HOT_Tolk_Admin' LIMIT 1];
for (SMS__c sms : messages) {
ApexSharingRuleWrapper rule = ruleByPersonId.get(i);
if (rule == null) {
sms.OwnerId = adminGroup.Id;
} else {
sms.OwnerId = rule.queueId;
i++;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" ?>
<CustomMetadata
xmlns="http://soap.sforce.com/2006/04/metadata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<label>HOT_SMS_onBeforeInsert</label>
<protected>false</protected>
<values>
<field>Active__c</field>
<value xsi:type="xsd:boolean">true</value>
</values>
<values>
<field>ClassNamespacePrefix__c</field>
<value xsi:nil="true" />
</values>
<values>
<field>Class__c</field>
<value xsi:type="xsd:string">HOT_SMSHandler</value>
</values>
<values>
<field>Description__c</field>
<value xsi:nil="true" />
</values>
<values>
<field>Event__c</field>
<value xsi:type="xsd:string">BEFORE_INSERT</value>
</values>
<values>
<field>IsBypassAllowed__c</field>
<value xsi:type="xsd:boolean">false</value>
</values>
<values>
<field>Order__c</field>
<value xsi:type="xsd:double">0.0</value>
</values>
<values>
<field>sObjectAPIName__c</field>
<value xsi:nil="true" />
</values>
<values>
<field>sObject__c</field>
<value xsi:type="xsd:string">SMS__c</value>
</values>
</CustomMetadata>
Loading