diff --git a/force-app/main/default/queues/HOT_Tolk_Admin.queue-meta.xml b/force-app/main/default/queues/HOT_Tolk_Admin.queue-meta.xml
index f672a4827f..dd3408c7c8 100644
--- a/force-app/main/default/queues/HOT_Tolk_Admin.queue-meta.xml
+++ b/force-app/main/default/queues/HOT_Tolk_Admin.queue-meta.xml
@@ -1,10 +1,13 @@
-
+
false
HoT Tolk Admin
HOT_Request__c
+
+ SMS__c
+
ServiceAppointment
@@ -12,9 +15,9 @@
Task
- WorkOrder
+ Thread__c
- Thread__c
+ WorkOrder
-
\ No newline at end of file
+
diff --git a/force-app/main/freelanceCommunity/classes/HOT_WantedSRListControllerTest.cls b/force-app/main/freelanceCommunity/classes/HOT_WantedSRListControllerTest.cls
index 3b28eb431e..144f8e5ab8 100644
--- a/force-app/main/freelanceCommunity/classes/HOT_WantedSRListControllerTest.cls
+++ b/force-app/main/freelanceCommunity/classes/HOT_WantedSRListControllerTest.cls
@@ -254,12 +254,12 @@ private class HOT_WantedSRListControllerTest {
WorkType workType = HOT_TestDataFactory.createWorkType();
insert workType;
+ Test.startTest();
HOT_Request__c request = HOT_TestDataFactory.createRequest('TEST', workType);
insert request;
WorkOrder workOrder = HOT_TestDataFactory.createWorkOrder(request, workType);
insert workOrder;
- Test.startTest();
WorkOrderLineItem WorkOrderLineItem = HOT_TestDataFactory.createWorkOrderLineItem(workOrder, workType);
insert WorkOrderLineItem;
ServiceAppointment ServiceAppointment = HOT_TestDataFactory.createServiceAppointment(WorkOrderLineItem);
@@ -282,6 +282,7 @@ private class HOT_WantedSRListControllerTest {
insert workOrder2;
WorkOrderLineItem WorkOrderLineItem2 = HOT_TestDataFactory.createWorkOrderLineItem(workOrder2, workType);
insert WorkOrderLineItem2;
+ Test.stopTest();
ServiceAppointment ServiceAppointment2 = HOT_TestDataFactory.createServiceAppointment(WorkOrderLineItem2);
ServiceAppointment2.EarliestStartTime = Datetime.now().addDays(52);
@@ -296,7 +297,6 @@ private class HOT_WantedSRListControllerTest {
System.runAs(user1) {
List availableSA = HOT_wantedSRListController.checkForOverlap(saToCheck);
System.assertEquals(1, availableSA.size(), 'Should return 1 because available sa');
- Test.stopTest();
}
}
@@ -316,6 +316,7 @@ private class HOT_WantedSRListControllerTest {
timezonesidkey = 'Europe/Paris',
username = 'HOT_testaccount@nav.hot.no'
);
+ Test.startTest();
insert user1;
ServiceResource resource1 = HOT_TestDataFactory.createServiceResource(user1.Id);
insert resource1;
@@ -325,7 +326,6 @@ private class HOT_WantedSRListControllerTest {
HOT_Request__c request = HOT_TestDataFactory.createRequest('TEST', workType);
insert request;
- Test.startTest();
WorkOrder workOrder = HOT_TestDataFactory.createWorkOrder(request, workType);
insert workOrder;
WorkOrderLineItem WorkOrderLineItem = HOT_TestDataFactory.createWorkOrderLineItem(workOrder, workType);
@@ -361,6 +361,7 @@ private class HOT_WantedSRListControllerTest {
ServiceAppointment2.SchedStartTime = Datetime.now().addDays(52);
ServiceAppointment2.SchedEndTime = ServiceAppointment2.SchedStartTime.addHours(4);
insert ServiceAppointment2;
+ Test.stopTest();
List saToCheck = new List();
saToCheck.add(ServiceAppointment2);
@@ -369,7 +370,6 @@ private class HOT_WantedSRListControllerTest {
List availableSA = HOT_wantedSRListController.checkForOverlap(saToCheck);
System.assertEquals(0, availableSA.size(), 'Should return 0 because no available sa');
}
- Test.stopTest();
}
@IsTest
static void hasOverlapTestExisting() {
@@ -387,6 +387,7 @@ private class HOT_WantedSRListControllerTest {
timezonesidkey = 'Europe/Paris',
username = 'HOT_testaccount@nav.hot.no'
);
+ Test.startTest();
insert user1;
ServiceResource resource1 = HOT_TestDataFactory.createServiceResource(user1.Id);
insert resource1;
@@ -396,7 +397,6 @@ private class HOT_WantedSRListControllerTest {
HOT_Request__c request = HOT_TestDataFactory.createRequest('TEST', workType);
insert request;
- Test.startTest();
WorkOrder workOrder = HOT_TestDataFactory.createWorkOrder(request, workType);
insert workOrder;
WorkOrderLineItem WorkOrderLineItem = HOT_TestDataFactory.createWorkOrderLineItem(workOrder, workType);
@@ -419,6 +419,7 @@ private class HOT_WantedSRListControllerTest {
resource1.Id
);
insert assignedResource;
+ Test.stopTest();
HOT_wantedSRListController.Request req = new HOT_wantedSRListController.Request();
req.saID = ServiceAppointment.Id;
@@ -445,6 +446,7 @@ private class HOT_WantedSRListControllerTest {
timezonesidkey = 'Europe/Paris',
username = 'HOT_testaccount@nav.hot.no'
);
+ Test.startTest();
insert user1;
ServiceResource resource1 = HOT_TestDataFactory.createServiceResource(user1.Id);
insert resource1;
@@ -454,7 +456,6 @@ private class HOT_WantedSRListControllerTest {
HOT_Request__c request = HOT_TestDataFactory.createRequest('TEST', workType);
insert request;
- Test.startTest();
WorkOrder workOrder = HOT_TestDataFactory.createWorkOrder(request, workType);
insert workOrder;
WorkOrderLineItem WorkOrderLineItem = HOT_TestDataFactory.createWorkOrderLineItem(workOrder, workType);
@@ -474,7 +475,7 @@ private class HOT_WantedSRListControllerTest {
HOT_wantedSRListController.Request req = new HOT_wantedSRListController.Request();
req.saID = ServiceAppointment.Id;
req.srID = resource1.Id;
-
+ Test.stopTest();
List result = HOT_wantedSRListController.checkForOverlapOrExisting(
new List{ req }
);
diff --git a/force-app/main/notification/classes/HOT_IncomingSMSNotification.cls b/force-app/main/notification/classes/HOT_IncomingSMSNotification.cls
index cfd3d5ccf2..4505b77366 100644
--- a/force-app/main/notification/classes/HOT_IncomingSMSNotification.cls
+++ b/force-app/main/notification/classes/HOT_IncomingSMSNotification.cls
@@ -29,11 +29,7 @@ public with sharing class HOT_IncomingSMSNotification {
}
Map smsRecords = new Map(
- [
- 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) {
diff --git a/force-app/main/notification/classes/HOT_IncomingSMSNotificationTest.cls b/force-app/main/notification/classes/HOT_IncomingSMSNotificationTest.cls
index 35f3d88370..3834f67de1 100644
--- a/force-app/main/notification/classes/HOT_IncomingSMSNotificationTest.cls
+++ b/force-app/main/notification/classes/HOT_IncomingSMSNotificationTest.cls
@@ -15,6 +15,8 @@ private class HOT_IncomingSMSNotificationTest {
account.Name = 'Gunnar Gunn Gundersen';
insert account;
+ TestDataFactory.getPublicGroup('HMS Troms og Finmark', 'group_4719');
+ TestDataFactory.getQueue('HMS Troms og Finmark', 'queue_4719', 'SMS__c');
TestDataFactory.getPublicGroup('HMS Oslo', 'group_4703');
TestDataFactory.getQueue('HMS Oslo', 'queue_4703', 'Person__c');
TestDataFactory.getPublicGroup('HMS Trøndelag', 'group_4716');
diff --git a/force-app/main/triggers/classes/HOT_SMSHandler.cls b/force-app/main/triggers/classes/HOT_SMSHandler.cls
index a3e5654011..71fbb923bf 100644
--- a/force-app/main/triggers/classes/HOT_SMSHandler.cls
+++ b/force-app/main/triggers/classes/HOT_SMSHandler.cls
@@ -1,4 +1,7 @@
public without sharing class HOT_SMSHandler extends MyTriggers {
+ public override void onBeforeInsert() {
+ routeSMSToQueue((List) records);
+ }
public override void onBeforeUpdate(Map triggerOldMap) {
List SMSToChangeOwnerToArchive = new List();
for (SMS__c sms : (List) records) {
@@ -18,4 +21,48 @@ public without sharing class HOT_SMSHandler extends MyTriggers {
public override void onAfterInsert() {
HOT_IncomingSMSNotification.notifyDispatchersOnIncomingSMS((List) records);
}
+
+ public void routeSMSToQueue(List messages) {
+ Set sendersAccountId = new Set();
+ for (SMS__c message : messages) {
+ if (message.Account__c != null) {
+ sendersAccountId.add(message.Account__c);
+ }
+ }
+ List 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 wrappers = new List();
+ 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 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++;
+ }
+ }
+ }
}
diff --git a/force-app/main/triggers/customMetadata/MyTriggerSetting.HOT_SMS_onBeforeInsert.md-meta.xml b/force-app/main/triggers/customMetadata/MyTriggerSetting.HOT_SMS_onBeforeInsert.md-meta.xml
new file mode 100644
index 0000000000..9e28ca7808
--- /dev/null
+++ b/force-app/main/triggers/customMetadata/MyTriggerSetting.HOT_SMS_onBeforeInsert.md-meta.xml
@@ -0,0 +1,45 @@
+
+
+
+ false
+
+ Active__c
+ true
+
+
+ ClassNamespacePrefix__c
+
+
+
+ Class__c
+ HOT_SMSHandler
+
+
+ Description__c
+
+
+
+ Event__c
+ BEFORE_INSERT
+
+
+ IsBypassAllowed__c
+ false
+
+
+ Order__c
+ 0.0
+
+
+ sObjectAPIName__c
+
+
+
+ sObject__c
+ SMS__c
+
+
diff --git a/force-app/scratch-org/queues/queue_4718.queue-meta.xml b/force-app/scratch-org/queues/queue_4718.queue-meta.xml
index 962cfb1e0b..677b3b84a9 100644
--- a/force-app/scratch-org/queues/queue_4718.queue-meta.xml
+++ b/force-app/scratch-org/queues/queue_4718.queue-meta.xml
@@ -1,10 +1,13 @@
-
+
false
NAV Tolketjeneste Nordland
HOT_Request__c
+
+ SMS__c
+
ServiceAppointment
@@ -12,9 +15,9 @@
Task
- WorkOrder
+ Thread__c
- Thread__c
+ WorkOrder
-
\ No newline at end of file
+
diff --git a/force-app/scratch-org/queues/queue_4719.queue-meta.xml b/force-app/scratch-org/queues/queue_4719.queue-meta.xml
index ce75aaddfe..6fb8c05c87 100644
--- a/force-app/scratch-org/queues/queue_4719.queue-meta.xml
+++ b/force-app/scratch-org/queues/queue_4719.queue-meta.xml
@@ -1,10 +1,13 @@
-
+
false
NAV Tolketjeneste Troms og Finnmark
HOT_Request__c
+
+ SMS__c
+
ServiceAppointment
@@ -12,9 +15,9 @@
Task
- WorkOrder
+ Thread__c
- Thread__c
+ WorkOrder
-
\ No newline at end of file
+