From 13eebf28ae6409e943b02a268b4ebb771442e117 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 12:44:10 +0100 Subject: [PATCH 01/10] Add support for phone numbers in FBS payloads --- modules/os2forms_fbs_handler/src/Client/FBS.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/os2forms_fbs_handler/src/Client/FBS.php b/modules/os2forms_fbs_handler/src/Client/FBS.php index 66c38b4..c982c72 100644 --- a/modules/os2forms_fbs_handler/src/Client/FBS.php +++ b/modules/os2forms_fbs_handler/src/Client/FBS.php @@ -120,6 +120,12 @@ public function createPatronWithGuardian(Patron $patron, Guardian $guardian) { 'name' => 'Unknown Name', 'emailAddresses' => $patron->emailAddresses, 'guardian' => $guardian->toArray(), + 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ + [ + 'receiveNotification' => TRUE, + 'phoneNumber' => $patron->phoneNumber, + ], + ] : [], ]; return $this->request($uri, $payload); @@ -188,12 +194,12 @@ public function updatePatron(Patron $patron): bool { 'emailAddresses' => $patron->emailAddresses, 'guardianVisibility' => $patron->guardianVisibility, 'receivePostalMail' => $patron->receiveEmail, - 'phoneNumbers' => [ + 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ [ 'receiveNotification' => TRUE, 'phoneNumber' => $patron->phoneNumber, ], - ], + ] : [], ], 'pincodeChange' => [ 'pincode' => $patron->pincode, From bfadd69c98a31ff0930e77c94a9915576139aa10 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 12:44:10 +0100 Subject: [PATCH 02/10] Make phoneNumber a writeable property in Patron model --- modules/os2forms_fbs_handler/src/Client/Model/Patron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/os2forms_fbs_handler/src/Client/Model/Patron.php b/modules/os2forms_fbs_handler/src/Client/Model/Patron.php index db3e1d0..84e90fa 100644 --- a/modules/os2forms_fbs_handler/src/Client/Model/Patron.php +++ b/modules/os2forms_fbs_handler/src/Client/Model/Patron.php @@ -19,7 +19,6 @@ public function __construct( public readonly ?bool $receiveSms = FALSE, public readonly ?bool $receivePostalMail = FALSE, public readonly ?array $notificationProtocols = NULL, - public readonly ?string $phoneNumber = NULL, public readonly ?array $onHold = NULL, public readonly ?string $preferredLanguage = NULL, public readonly ?bool $guardianVisibility = NULL, @@ -31,6 +30,7 @@ public function __construct( public ?string $preferredPickupBranch = NULL, public ?string $personId = NULL, public ?string $pincode = NULL, + public ?string $phoneNumber = NULL, ) { } From 0d7635da28665ca77c84b62ab773397128e106f9 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 12:44:10 +0100 Subject: [PATCH 03/10] Handle phoneNumber assignment in advanced queue job --- .../src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php index d5de9af..d435895 100644 --- a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php +++ b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php @@ -116,6 +116,9 @@ public function process(Job $job): JobResult { 'receiveNotification' => TRUE, ], ]; + if (isset($data['barn_tlf'])) { + $patron->phoneNumber = $data['barn_tlf']; + } $patron->receiveEmail = TRUE; $patron->pincode = $data['pinkode']; @@ -136,6 +139,9 @@ public function process(Job $job): JobResult { $patron->receiveEmail = TRUE; $patron->personId = $data['barn_cpr']; $patron->pincode = $data['pinkode']; + if (isset($data['barn_tlf'])) { + $patron->phoneNumber = $data['barn_tlf']; + } $fbs->createPatronWithGuardian($patron, $guardian); } From 2343a0c6033ba7cffd3c307bdc46287820de1621 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 12:44:10 +0100 Subject: [PATCH 04/10] Add barn_tlf as an incoming field in FbsWebformHandler --- .../src/Plugin/WebformHandler/FbsWebformHandler.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/os2forms_fbs_handler/src/Plugin/WebformHandler/FbsWebformHandler.php b/modules/os2forms_fbs_handler/src/Plugin/WebformHandler/FbsWebformHandler.php index 1c2abad..aa1ae33 100644 --- a/modules/os2forms_fbs_handler/src/Plugin/WebformHandler/FbsWebformHandler.php +++ b/modules/os2forms_fbs_handler/src/Plugin/WebformHandler/FbsWebformHandler.php @@ -183,6 +183,7 @@ public function postSave(WebformSubmissionInterface $webform_submission, $update 'afhentningssted', 'barn_cpr', 'barn_mail', + 'barn_tlf', 'cpr', 'email', 'navn', From db0d04031ef00c5ebc40fb0d8f66c483166c364b Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 14:21:19 +0100 Subject: [PATCH 05/10] Coding standards --- modules/os2forms_fbs_handler/src/Client/FBS.php | 5 +++-- modules/os2forms_fbs_handler/src/Client/Model/Patron.php | 2 +- .../src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/os2forms_fbs_handler/src/Client/FBS.php b/modules/os2forms_fbs_handler/src/Client/FBS.php index c982c72..0e1cf08 100644 --- a/modules/os2forms_fbs_handler/src/Client/FBS.php +++ b/modules/os2forms_fbs_handler/src/Client/FBS.php @@ -11,7 +11,7 @@ /** * Minimalistic client to create user with guardians at FBS. */ -class FBS { +class Fbs { /** * FBS session key. @@ -154,12 +154,13 @@ public function getPatron(string $patronId): ?Patron { (bool) $json->patron->receiveSms, (bool) $json->patron->receivePostalMail, $json->patron->notificationProtocols, - $json->patron->phoneNumber, is_null($json->patron->onHold) ? $json->patron->onHold : (array) $json->patron->onHold, $json->patron->preferredLanguage, (bool) $json->patron->guardianVisibility, $json->patron->defaultInterestPeriod, (bool) $json->patron->resident, + $json->patron->phoneNumber, + [ [ 'emailAddress' => $json->patron->emailAddress, diff --git a/modules/os2forms_fbs_handler/src/Client/Model/Patron.php b/modules/os2forms_fbs_handler/src/Client/Model/Patron.php index 84e90fa..448b26d 100644 --- a/modules/os2forms_fbs_handler/src/Client/Model/Patron.php +++ b/modules/os2forms_fbs_handler/src/Client/Model/Patron.php @@ -25,12 +25,12 @@ public function __construct( public readonly ?int $defaultInterestPeriod = NULL, public readonly ?bool $resident = NULL, // Allow these properties below to be updatable. + public ?string $phoneNumber = NULL, public ?array $emailAddresses = NULL, public ?bool $receiveEmail = NULL, public ?string $preferredPickupBranch = NULL, public ?string $personId = NULL, public ?string $pincode = NULL, - public ?string $phoneNumber = NULL, ) { } diff --git a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php index d435895..dbf5acb 100644 --- a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php +++ b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php @@ -8,7 +8,7 @@ use Drupal\advancedqueue\Job; use Drupal\advancedqueue\JobResult; use Drupal\advancedqueue\Plugin\AdvancedQueue\JobType\JobTypeBase; -use Drupal\os2forms_fbs_handler\Client\FBS; +use Drupal\os2forms_fbs_handler\Client\Fbs; use Drupal\os2forms_fbs_handler\Client\Model\Guardian; use Drupal\os2forms_fbs_handler\Client\Model\Patron; use Drupal\os2web_audit\Service\Logger; @@ -84,7 +84,7 @@ public function process(Job $job): JobResult { $config = $payload['configuration']; try { - $fbs = new FBS($this->client, $config['endpoint_url'], $config['agency_id'], $config['username'], $config['password']); + $fbs = new Fbs($this->client, $config['endpoint_url'], $config['agency_id'], $config['username'], $config['password']); // Log into FBS and obtain session. $fbs->login(); From 76c7c1595ebcc952c57df0115fcd3bbf2e4f0add Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 14:28:22 +0100 Subject: [PATCH 06/10] renamed fbs class --- modules/os2forms_fbs_handler/src/Client/{FBS.php => Fbs.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename modules/os2forms_fbs_handler/src/Client/{FBS.php => Fbs.php} (100%) diff --git a/modules/os2forms_fbs_handler/src/Client/FBS.php b/modules/os2forms_fbs_handler/src/Client/Fbs.php similarity index 100% rename from modules/os2forms_fbs_handler/src/Client/FBS.php rename to modules/os2forms_fbs_handler/src/Client/Fbs.php From f303621c9e8775e4c10047c784fe03206253ec64 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 14:31:41 +0100 Subject: [PATCH 07/10] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 274eb0c..49ed55a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ before starting to add changes. Use example [placed in the end of the page](#exa ## [Unreleased] - Removed modules ldap_auth, logging_alerts, maillog +- Updated `os2forms_fbs_handler` to include and correct set phone number. ## [3.21.2] 2025-01-07 From 715c5c4c328e11b368719be2d09579beb674e684 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 14:45:43 +0100 Subject: [PATCH 08/10] Conditional inclusion of patron phone number, since field is not required --- modules/os2forms_fbs_handler/src/Client/Fbs.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/os2forms_fbs_handler/src/Client/Fbs.php b/modules/os2forms_fbs_handler/src/Client/Fbs.php index 0e1cf08..8ec0125 100644 --- a/modules/os2forms_fbs_handler/src/Client/Fbs.php +++ b/modules/os2forms_fbs_handler/src/Client/Fbs.php @@ -118,7 +118,7 @@ public function createPatronWithGuardian(Patron $patron, Guardian $guardian) { 'pincode' => $patron->pincode, 'preferredPickupBranch' => $patron->preferredPickupBranch, 'name' => 'Unknown Name', - 'emailAddresses' => $patron->emailAddresses, + 'emailAddresses' => isset($patron->emailAddresses) && $patron->emailAddresses ? $patron->emailAddresses : [], 'guardian' => $guardian->toArray(), 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ [ @@ -192,7 +192,7 @@ public function updatePatron(Patron $patron): bool { $payload = [ 'patron' => [ 'preferredPickupBranch' => $patron->preferredPickupBranch, - 'emailAddresses' => $patron->emailAddresses, + 'emailAddresses' => isset($patron->emailAddresses) && $patron->emailAddresses ? $patron->emailAddresses : [], 'guardianVisibility' => $patron->guardianVisibility, 'receivePostalMail' => $patron->receiveEmail, 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ From abc2ee5ace6e5e93da273580c9a43a9429eb9ff2 Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 15:04:16 +0100 Subject: [PATCH 09/10] Changed validation to check for empty string instead of null --- .../AdvancedQueue/JobType/FbsCreateUser.php | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php index dbf5acb..4fca0d6 100644 --- a/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php +++ b/modules/os2forms_fbs_handler/src/Plugin/AdvancedQueue/JobType/FbsCreateUser.php @@ -110,13 +110,15 @@ public function process(Job $job): JobResult { if (!is_null($patron)) { // Create Patron object with updated values. $patron->preferredPickupBranch = $data['afhentningssted']; - $patron->emailAddresses = [ - [ - 'emailAddress' => $data['barn_mail'], - 'receiveNotification' => TRUE, - ], - ]; - if (isset($data['barn_tlf'])) { + if (!empty($data['barn_mail'])) { + $patron->emailAddresses = [ + [ + 'emailAddress' => $data['barn_mail'], + 'receiveNotification' => TRUE, + ], + ]; + } + if (!empty($data['barn_tlf'])) { $patron->phoneNumber = $data['barn_tlf']; } $patron->receiveEmail = TRUE; @@ -130,16 +132,18 @@ public function process(Job $job): JobResult { // If "no" create child patron and guardian. $patron = new Patron(); $patron->preferredPickupBranch = $data['afhentningssted']; - $patron->emailAddresses = [ - [ - 'emailAddress' => $data['barn_mail'], - 'receiveNotification' => TRUE, - ], - ]; + if (!empty($data['barn_mail'])) { + $patron->emailAddresses = [ + [ + 'emailAddress' => $data['barn_mail'], + 'receiveNotification' => TRUE, + ], + ]; + } $patron->receiveEmail = TRUE; $patron->personId = $data['barn_cpr']; $patron->pincode = $data['pinkode']; - if (isset($data['barn_tlf'])) { + if (!empty($data['barn_tlf'])) { $patron->phoneNumber = $data['barn_tlf']; } From a1a9daeec28af7555c0cd77f1257de2dd679b7ec Mon Sep 17 00:00:00 2001 From: Jeppe Krogh Date: Thu, 30 Jan 2025 15:08:25 +0100 Subject: [PATCH 10/10] Simplified validation --- modules/os2forms_fbs_handler/src/Client/Fbs.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/os2forms_fbs_handler/src/Client/Fbs.php b/modules/os2forms_fbs_handler/src/Client/Fbs.php index 8ec0125..3cef598 100644 --- a/modules/os2forms_fbs_handler/src/Client/Fbs.php +++ b/modules/os2forms_fbs_handler/src/Client/Fbs.php @@ -118,9 +118,9 @@ public function createPatronWithGuardian(Patron $patron, Guardian $guardian) { 'pincode' => $patron->pincode, 'preferredPickupBranch' => $patron->preferredPickupBranch, 'name' => 'Unknown Name', - 'emailAddresses' => isset($patron->emailAddresses) && $patron->emailAddresses ? $patron->emailAddresses : [], + 'emailAddresses' => $patron->emailAddresses ?? [], 'guardian' => $guardian->toArray(), - 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ + 'phoneNumbers' => $patron->phoneNumber ? [ [ 'receiveNotification' => TRUE, 'phoneNumber' => $patron->phoneNumber, @@ -192,10 +192,10 @@ public function updatePatron(Patron $patron): bool { $payload = [ 'patron' => [ 'preferredPickupBranch' => $patron->preferredPickupBranch, - 'emailAddresses' => isset($patron->emailAddresses) && $patron->emailAddresses ? $patron->emailAddresses : [], + 'emailAddresses' => $patron->emailAddresses ?? [], 'guardianVisibility' => $patron->guardianVisibility, 'receivePostalMail' => $patron->receiveEmail, - 'phoneNumbers' => isset($patron->phoneNumber) && $patron->phoneNumber ? [ + 'phoneNumbers' => $patron->phoneNumber ? [ [ 'receiveNotification' => TRUE, 'phoneNumber' => $patron->phoneNumber,