From 52d3e8276094a1caa9a7dbf02d5fe9cdf798ac51 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Fri, 10 Feb 2023 12:11:43 +0100 Subject: [PATCH 1/7] Added dependency on Beskedfordeler --- os2forms_digital_post.info.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/os2forms_digital_post.info.yml b/os2forms_digital_post.info.yml index 6e2019f..764bd20 100644 --- a/os2forms_digital_post.info.yml +++ b/os2forms_digital_post.info.yml @@ -5,9 +5,10 @@ package: 'OS2Forms' core: 8.x core_version_requirement: ^8 || ^9 dependencies: - - 'webform:webform' - - 'webform:webform_submission_log' + - 'beskedfordeler:beskedfordeler' - 'os2forms_cpr_lookup:os2forms_cpr_lookup' - 'os2forms_cvr_lookup:os2forms_cvr_lookup' + - 'webform:webform' + - 'webform:webform_submission_log' configure: os2forms_digital_post.admin.settings From 06e307b2175c6c33f36b4532dc4f55e14e0589a2 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Fri, 10 Feb 2023 13:27:14 +0100 Subject: [PATCH 2/7] Added beskedfordeler --- composer.json | 1 + os2forms_digital_post.install | 19 ++++ os2forms_digital_post.services.yml | 17 +++ .../BeskedfordelerEventSubscriber.php | 20 ++++ src/Helper/BeskedfordelerHelper.php | 103 ++++++++++++++++++ src/Helper/WebformHelperSF1601.php | 18 +-- 6 files changed, 170 insertions(+), 8 deletions(-) create mode 100644 os2forms_digital_post.install create mode 100644 src/EventSubscriber/BeskedfordelerEventSubscriber.php create mode 100644 src/Helper/BeskedfordelerHelper.php diff --git a/composer.json b/composer.json index aaf1734..e3792d2 100644 --- a/composer.json +++ b/composer.json @@ -38,6 +38,7 @@ "dompdf/dompdf": "~0.8.0", "drupal/webform": "^6.0", "http-interop/http-factory-guzzle": "^1.0.0", + "itk-dev/beskedfordeler-drupal": "^1.0", "itk-dev/os2forms_cpr_lookup": "^1.6", "itk-dev/serviceplatformen": "^1.2", "os2forms/os2forms": "^3.0", diff --git a/os2forms_digital_post.install b/os2forms_digital_post.install new file mode 100644 index 0000000..760743c --- /dev/null +++ b/os2forms_digital_post.install @@ -0,0 +1,19 @@ + + */ +function os2forms_digital_post_schema() { + return Drupal::service(BeskedfordelerHelper::class)->schema(); +} diff --git a/os2forms_digital_post.services.yml b/os2forms_digital_post.services.yml index 7788b0d..5d926dd 100644 --- a/os2forms_digital_post.services.yml +++ b/os2forms_digital_post.services.yml @@ -1,4 +1,8 @@ services: + logger.channel.os2forms_digital_post: + parent: logger.channel_base + arguments: [ 'os2forms_digital_post' ] + os2forms_digital_post.template_manager: class: Drupal\os2forms_digital_post\Manager\TemplateManager arguments: ["@config.factory", "@twig", "@twig.loader.filesystem"] @@ -38,6 +42,19 @@ services: - "@os2forms_cpr_lookup.service" - "@os2forms_cvr_lookup.service" - "@Drupal\\os2forms_digital_post\\Helper\\MeMoHelper" + - "@Drupal\\os2forms_digital_post\\Helper\\BeskedfordelerHelper" - "@logger.factory" Drupal\os2forms_digital_post\Helper\SF1461Helper: + + Drupal\os2forms_digital_post\EventSubscriber\BeskedfordelerEventSubscriber: + arguments: + - '@logger.channel.os2forms_digital_post' + tags: + - { name: 'event_subscriber' } + + Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper: + arguments: + - '@database' + - '@Drupal\os2forms_digital_post\Helper\MeMoHelper' + - '@logger.channel.os2forms_digital_post' diff --git a/src/EventSubscriber/BeskedfordelerEventSubscriber.php b/src/EventSubscriber/BeskedfordelerEventSubscriber.php new file mode 100644 index 0000000..c060c0c --- /dev/null +++ b/src/EventSubscriber/BeskedfordelerEventSubscriber.php @@ -0,0 +1,20 @@ +logger->debug(__METHOD__); + } + +} diff --git a/src/Helper/BeskedfordelerHelper.php b/src/Helper/BeskedfordelerHelper.php new file mode 100644 index 0000000..0f4ea2a --- /dev/null +++ b/src/Helper/BeskedfordelerHelper.php @@ -0,0 +1,103 @@ +database = $database; + $this->meMoHelper = $meMoHelper; + $this->setLogger($logger); + } + + /** + * Save MeMo message in database. + */ + public function saveMessage(Message $message) { + $messageId = $message->getMessageHeader()->getMessageID(); + $message = $this->meMoHelper->message2dom($message)->saveXML(); + + return $this->database + ->insert(self::TABLE_NAME) + ->fields([ + 'created' => (new DrupalDateTime())->getTimestamp(), + 'message_id' => $messageId, + 'memo_message' => $message, + ]) + ->execute(); + } + + /** + * Implements hook_schema(). + * + * @phpstan-return array + */ + public function schema(): array { + return [ + self::TABLE_NAME => [ + 'description' => 'OSForms digital post beskedfordeler', + 'fields' => [ + 'message_id' => [ + 'description' => 'The message identifier.', + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ], + 'created' => [ + 'description' => 'The Unix timestamp when the message was created.', + 'type' => 'int', + 'not null' => TRUE, + ], + 'memo_message' => [ + 'description' => 'The MeMo message (XML).', + 'type' => 'text', + 'size' => 'medium', + 'not null' => TRUE, + ], + 'beskedfordeler_message' => [ + 'description' => 'The Beskedfordeler message (XML).', + 'type' => 'text', + 'size' => 'medium', + 'not null' => FALSE, + ], + 'beskedfordeler_message_received' => [ + 'description' => 'The Unix timestamp when the Beskedfordeler message was received.', + 'type' => 'int', + 'not null' => FALSE, + ], + ], + 'primary key' => ['message_id'], + ], + ]; + } + +} diff --git a/src/Helper/WebformHelperSF1601.php b/src/Helper/WebformHelperSF1601.php index 17f6d94..a06898c 100644 --- a/src/Helper/WebformHelperSF1601.php +++ b/src/Helper/WebformHelperSF1601.php @@ -83,6 +83,13 @@ final class WebformHelperSF1601 implements LoggerInterface { */ protected MeMoHelper $meMoHelper; + /** + * The Beskedfordeler helper. + * + * @var BeskedfordelerHelper + */ + private BeskedfordelerHelper $beskedfordelerHelper; + /** * The logger. * @@ -107,6 +114,7 @@ public function __construct( CprServiceInterface $cprService, CvrServiceInterface $cvrService, MeMoHelper $meMoHelper, + BeskedfordelerHelper $beskedfordelerHelper, LoggerChannelFactoryInterface $loggerChannelFactory ) { $this->settings = $settings; @@ -116,6 +124,7 @@ public function __construct( $this->cprService = $cprService; $this->cvrService = $cvrService; $this->meMoHelper = $meMoHelper; + $this->beskedfordelerHelper = $beskedfordelerHelper; $this->logger = $loggerChannelFactory->get('os2forms_digital_post'); $this->submissionLogger = $loggerChannelFactory->get('webform_submission'); } @@ -134,10 +143,6 @@ public function __construct( * [The response, The MeMo message]. */ public function sendDigitalPost(WebformSubmissionInterface $submission, array $handlerSettings, array $submissionData = []): array { - $logContext = [ - 'webform_submission' => $submission, - ]; - $submissionData = $submissionData + $submission->getData(); $handlerMessageSettings = $handlerSettings[WebformHandlerSF1601::MEMO_MESSAGE]; @@ -213,10 +218,7 @@ public function sendDigitalPost(WebformSubmissionInterface $submission, array $h $type = $handlerMessageSettings[WebformHandlerSF1601::TYPE] ?? SF1601::TYPE_DIGITAL_POST; $response = $service->kombiPostAfsend($transactionId, $type, $message); - $this->notice('Digital post sent', $logContext + [ - 'handler_id' => 'os2forms_digital_post', - 'operation' => 'digital post sent', - ]); + $this->beskedfordelerHelper->saveMessage($message); return [$response, $service->getLastKombiMeMoMessage()]; } From cd66bbc3a8512800dd859cb3d11d1585b14a6f6f Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Mon, 13 Feb 2023 13:19:18 +0100 Subject: [PATCH 3/7] Handled beskedfordeler messages --- CHANGELOG.md | 1 + os2forms_digital_post.services.yml | 3 + .../BeskedfordelerEventSubscriber.php | 71 +++++++++++++++- src/Exception/InvalidMessage.php | 10 +++ src/Helper/BeskedfordelerHelper.php | 84 ++++++++++++++----- src/Helper/WebformHelperSF1601.php | 32 ++++++- src/Model/Message.php | 63 ++++++++++++++ 7 files changed, 241 insertions(+), 23 deletions(-) create mode 100644 src/Exception/InvalidMessage.php create mode 100644 src/Model/Message.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b5555b..f7bf17f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Versioning](https://semver.org/spec/v2.0.0.html). ### Added - Added handling of CVR recipients. +- Added handling of Beskedfordeler messages. ## [1.1.2] diff --git a/os2forms_digital_post.services.yml b/os2forms_digital_post.services.yml index 5d926dd..b67c233 100644 --- a/os2forms_digital_post.services.yml +++ b/os2forms_digital_post.services.yml @@ -49,6 +49,9 @@ services: Drupal\os2forms_digital_post\EventSubscriber\BeskedfordelerEventSubscriber: arguments: + - '@Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper' + - '@Drupal\beskedfordeler\Helper\MessageHelper' + - '@Drupal\os2forms_digital_post\Helper\WebformHelperSF1601' - '@logger.channel.os2forms_digital_post' tags: - { name: 'event_subscriber' } diff --git a/src/EventSubscriber/BeskedfordelerEventSubscriber.php b/src/EventSubscriber/BeskedfordelerEventSubscriber.php index c060c0c..47abc49 100644 --- a/src/EventSubscriber/BeskedfordelerEventSubscriber.php +++ b/src/EventSubscriber/BeskedfordelerEventSubscriber.php @@ -4,17 +4,86 @@ use Drupal\beskedfordeler\Event\PostStatusBeskedModtagEvent; use Drupal\beskedfordeler\EventSubscriber\AbstractBeskedfordelerEventSubscriber; +use Drupal\beskedfordeler\Helper\MessageHelper; +use Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper; +use Drupal\os2forms_digital_post\Helper\WebformHelperSF1601; +use Psr\Log\LoggerInterface; /** * Event subscriber for PostStatusBeskedModtagEvent. */ final class BeskedfordelerEventSubscriber extends AbstractBeskedfordelerEventSubscriber { + private const KANAL_KODE = 'Digital Post'; + private const MESSAGE_UUID_KEY = 'MessageUUID'; + + /** + * The Beskedfordeler helper. + * + * @var \Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper + */ + private BeskedfordelerHelper $beskedfordelerHelper; + + /** + * The message helper. + * + * @var \Drupal\beskedfordeler\Helper\MessageHelper + */ + private MessageHelper $messageHelper; + + /** + * The webform helper. + * + * @var \Drupal\os2forms_digital_post\Helper\WebformHelperSF1601 + */ + private WebformHelperSF1601 $webformHelper; + + /** + * Constructor. + */ + public function __construct(BeskedfordelerHelper $beskedfordelerHelper, MessageHelper $messageHelper, WebformHelperSF1601 $webformHelper, LoggerInterface $logger) { + parent::__construct($logger); + $this->beskedfordelerHelper = $beskedfordelerHelper; + $this->messageHelper = $messageHelper; + $this->webformHelper = $webformHelper; + } /** * {@inheritdoc} */ protected function processPostStatusBeskedModtag(PostStatusBeskedModtagEvent $event): void { - $this->logger->debug(__METHOD__); + $message = $event->getDocument()->saveXML(); + try { + $data = $this->messageHelper->getBeskeddata($message); + + $channel = $data['KanalKode'] ?? NULL; + if (self::KANAL_KODE !== $channel) { + $this->logger->debug('Ignoring message data on channel @channel', [ + '@channel' => $channel ?? '(null)', + ]); + return; + } + + $messageUUID = $data[self::MESSAGE_UUID_KEY] ?? NULL; + if (NULL === $messageUUID) { + $this->logger->debug('Missing message UUID (@message_uuid_key) in data on channel @channel: @data', [ + '@message_uuid_key' => self::MESSAGE_UUID_KEY, + '@channel' => $channel, + '@data' => json_encode($data), + ]); + return; + } + + if ($this->beskedfordelerHelper->addBeskedfordelerMessage($messageUUID, $message) > 0) { + $message = $this->beskedfordelerHelper->loadMessage($messageUUID); + $this->webformHelper->processBeskedfordelerData($message->submissionId, $data); + } + } + catch (\Exception $exception) { + $this->logger->error('Error processing message: @exception_message', [ + '@exception_message' => $exception->getMessage(), + 'message' => $message, + ]); + } } } diff --git a/src/Exception/InvalidMessage.php b/src/Exception/InvalidMessage.php new file mode 100644 index 0000000..1a73130 --- /dev/null +++ b/src/Exception/InvalidMessage.php @@ -0,0 +1,10 @@ +getMessageHeader()->getMessageID(); + public function createMessage(int $submissionId, MeMoMessage $message, string $receipt) { + $messageUUID = $message->getMessageHeader()->getMessageUUID(); $message = $this->meMoHelper->message2dom($message)->saveXML(); return $this->database ->insert(self::TABLE_NAME) ->fields([ - 'created' => (new DrupalDateTime())->getTimestamp(), - 'message_id' => $messageId, - 'memo_message' => $message, + 'submission_id' => $submissionId, + 'message_uuid' => $messageUUID, + 'message' => $message, + 'receipt' => $receipt, ]) ->execute(); } + /** + * Load message. + * + * @param string $messageUUID + * The message UUID. + * + * @return \Drupal\os2forms_digital_post\Model\Message|null + * The message. + */ + public function loadMessage(string $messageUUID): ?Message { + $messages = $this->database + ->select(self::TABLE_NAME, 'm') + ->fields('m') + ->condition('message_uuid', $messageUUID) + ->execute() + ->fetchAll(\PDO::FETCH_CLASS, Message::class); + + return reset($messages) ?: NULL; + } + + /** + * Add Beskedfordeler message to message. + */ + public function addBeskedfordelerMessage(string $messageUUID, string $beskedfordelerMessage) { + $message = $this->loadMessage($messageUUID); + + if (NULL === $message) { + throw new InvalidMessage(sprintf('Invalid message UUID: %s', $messageUUID)); + } + + return $this->database + ->update(self::TABLE_NAME) + ->fields([ + 'beskedfordeler_message' => $beskedfordelerMessage, + ]) + ->condition('message_uuid', $messageUUID) + ->execute(); + } + /** * Implements hook_schema(). * @@ -66,36 +107,37 @@ public function schema(): array { self::TABLE_NAME => [ 'description' => 'OSForms digital post beskedfordeler', 'fields' => [ - 'message_id' => [ - 'description' => 'The message identifier.', - 'type' => 'varchar', - 'length' => 255, + 'submission_id' => [ + 'description' => 'The submission id.', + 'type' => 'int', 'not null' => TRUE, ], - 'created' => [ - 'description' => 'The Unix timestamp when the message was created.', - 'type' => 'int', + 'message_uuid' => [ + 'description' => 'The message UUID (formatted with dashes).', + 'type' => 'varchar', + 'length' => 36, 'not null' => TRUE, ], - 'memo_message' => [ + 'message' => [ 'description' => 'The MeMo message (XML).', 'type' => 'text', 'size' => 'medium', 'not null' => TRUE, ], + 'receipt' => [ + 'description' => 'The MeMo message receipt (XML).', + 'type' => 'text', + 'size' => 'medium', + 'not null' => TRUE, + ], 'beskedfordeler_message' => [ 'description' => 'The Beskedfordeler message (XML).', 'type' => 'text', 'size' => 'medium', 'not null' => FALSE, ], - 'beskedfordeler_message_received' => [ - 'description' => 'The Unix timestamp when the Beskedfordeler message was received.', - 'type' => 'int', - 'not null' => FALSE, - ], ], - 'primary key' => ['message_id'], + 'primary key' => ['message_uuid'], ], ]; } diff --git a/src/Helper/WebformHelperSF1601.php b/src/Helper/WebformHelperSF1601.php index a06898c..bd5c987 100644 --- a/src/Helper/WebformHelperSF1601.php +++ b/src/Helper/WebformHelperSF1601.php @@ -218,7 +218,7 @@ public function sendDigitalPost(WebformSubmissionInterface $submission, array $h $type = $handlerMessageSettings[WebformHandlerSF1601::TYPE] ?? SF1601::TYPE_DIGITAL_POST; $response = $service->kombiPostAfsend($transactionId, $type, $message); - $this->beskedfordelerHelper->saveMessage($message); + $this->beskedfordelerHelper->createMessage($submission->id(), $message, (string) $response->getContent()); return [$response, $service->getLastKombiMeMoMessage()]; } @@ -329,4 +329,34 @@ public function processJob(Job $job): JobResult { } } + /** + * Process Beskedfordeler data. + */ + public function processBeskedfordelerData(int $submissionId, array $data) { + $webformSubmission = $this->loadSubmission($submissionId); + if (NULL !== $webformSubmission) { + $context = [ + 'webform_submission' => $webformSubmission, + 'handler_id' => 'os2forms_digital_post', + ]; + $status = $data['TransaktionsStatusKode']; + + if (!empty($data['FejlDetaljer'])) { + $this->error('@status; @error_code: @error_text', $context + [ + 'operation' => 'digital post failed', + '@status' => $status, + '@error_code' => $data['FejlDetaljer']['FejlKode'], + '@error_text' => $data['FejlDetaljer']['FejlTekst'], + 'data' => $data, + ]); + } + else { + $this->info('@status', $context + [ + 'operation' => 'digital post success', + '@status' => $status, + ]); + } + } + } + } diff --git a/src/Model/Message.php b/src/Model/Message.php new file mode 100644 index 0000000..de0200c --- /dev/null +++ b/src/Model/Message.php @@ -0,0 +1,63 @@ + 'submissionId', + 'message_uuid' => 'messageUUID', + 'beskedfordeler_message' => 'beskedfordelerMessage', + ][$name] ?? $name; + + if (!property_exists($this, $property)) { + throw new \RuntimeException(sprintf('Invalid property: %s', $property)); + } + + $this->$property = $value; + } + +} From 66422198d083d20253c5d8880c82b342378c1f85 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Tue, 14 Feb 2023 09:31:18 +0100 Subject: [PATCH 4/7] Fixed loading of message --- src/Helper/BeskedfordelerHelper.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Helper/BeskedfordelerHelper.php b/src/Helper/BeskedfordelerHelper.php index ac4585f..1aaeed7 100644 --- a/src/Helper/BeskedfordelerHelper.php +++ b/src/Helper/BeskedfordelerHelper.php @@ -68,14 +68,12 @@ public function createMessage(int $submissionId, MeMoMessage $message, string $r * The message. */ public function loadMessage(string $messageUUID): ?Message { - $messages = $this->database + return $this->database ->select(self::TABLE_NAME, 'm') ->fields('m') ->condition('message_uuid', $messageUUID) ->execute() - ->fetchAll(\PDO::FETCH_CLASS, Message::class); - - return reset($messages) ?: NULL; + ->fetchObject(Message::class) ?: NULL; } /** From 8d14b349e1c285d98147bd4b30616b291141023c Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Tue, 14 Feb 2023 13:33:49 +0100 Subject: [PATCH 5/7] Added clean up of messages --- src/Helper/BeskedfordelerHelper.php | 20 ++++++++++++++++++- src/Helper/WebformHelperSF1601.php | 9 +++++++++ src/Model/Message.php | 2 +- .../WebformHandler/WebformHandlerSF1601.php | 14 +++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/Helper/BeskedfordelerHelper.php b/src/Helper/BeskedfordelerHelper.php index 1aaeed7..ebcf791 100644 --- a/src/Helper/BeskedfordelerHelper.php +++ b/src/Helper/BeskedfordelerHelper.php @@ -6,6 +6,7 @@ use Drupal\Core\Database\Connection; use Drupal\os2forms_digital_post\Exception\InvalidMessage; use Drupal\os2forms_digital_post\Model\Message; +use Drupal\webform\WebformSubmissionInterface; use Psr\Log\LoggerAwareTrait; use Psr\Log\LoggerInterface; @@ -73,7 +74,7 @@ public function loadMessage(string $messageUUID): ?Message { ->fields('m') ->condition('message_uuid', $messageUUID) ->execute() - ->fetchObject(Message::class) ?: NULL; + ->fetchObject(Message::class, []) ?: NULL; } /** @@ -95,6 +96,23 @@ public function addBeskedfordelerMessage(string $messageUUID, string $beskedford ->execute(); } + /** + * Delete messages for submissions. + * + * @param array|WebformSubmissionInterface[] $submissions + * The submissions. + */ + public function deleteMessages(array $submissions) { + $submissionIds = array_map(static function (WebformSubmissionInterface $submission) { + return $submission->id(); + }, $submissions); + + $this->database + ->delete(self::TABLE_NAME) + ->condition('submission_id', $submissionIds, 'IN') + ->execute(); + } + /** * Implements hook_schema(). * diff --git a/src/Helper/WebformHelperSF1601.php b/src/Helper/WebformHelperSF1601.php index bd5c987..09a5e6b 100644 --- a/src/Helper/WebformHelperSF1601.php +++ b/src/Helper/WebformHelperSF1601.php @@ -359,4 +359,13 @@ public function processBeskedfordelerData(int $submissionId, array $data) { } } + /** + * Proxy for BeskedfordelerHelper::deleteMessages(). + * + * @see BeskedfordelerHelper::deleteMessages() + */ + public function deleteMessages(array $webformSubmissions) { + $this->beskedfordelerHelper->deleteMessages($webformSubmissions); + } + } diff --git a/src/Model/Message.php b/src/Model/Message.php index de0200c..6b424fb 100644 --- a/src/Model/Message.php +++ b/src/Model/Message.php @@ -41,7 +41,7 @@ class Message { * * @var string */ - public string $beskedfordelerMessage; + public ?string $beskedfordelerMessage; /** * Called when using \PDO::FETCH_CLASS. diff --git a/src/Plugin/WebformHandler/WebformHandlerSF1601.php b/src/Plugin/WebformHandler/WebformHandlerSF1601.php index 1c99e09..7688c67 100644 --- a/src/Plugin/WebformHandler/WebformHandlerSF1601.php +++ b/src/Plugin/WebformHandler/WebformHandlerSF1601.php @@ -336,6 +336,20 @@ public function postSave(WebformSubmissionInterface $webformSubmission, $update $this->helper->createJob($webformSubmission, $this->configuration); } + /** + * {@inheritdoc} + */ + public function postDelete(WebformSubmissionInterface $webformSubmission) { + $this->helper->deleteMessages([$webformSubmission]); + } + + /** + * {@inheritdoc} + */ + public function postPurge(array $webformSubmissions) { + $this->helper->deleteMessages($webformSubmissions); + } + /** * Display the invoked plugin method to end user. * From 01b1a6e8d038cbb3743f8a547ff951bd5faa599e Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Tue, 14 Feb 2023 15:37:39 +0100 Subject: [PATCH 6/7] Added table index --- src/Helper/BeskedfordelerHelper.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Helper/BeskedfordelerHelper.php b/src/Helper/BeskedfordelerHelper.php index ebcf791..5bf0f3d 100644 --- a/src/Helper/BeskedfordelerHelper.php +++ b/src/Helper/BeskedfordelerHelper.php @@ -153,6 +153,9 @@ public function schema(): array { 'not null' => FALSE, ], ], + 'indexes' => [ + 'submission_id' => ['submission_id'], + ], 'primary key' => ['message_uuid'], ], ]; From 4617caf34f1038057de19b73a4ee2dab1f0a6dda Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Tue, 14 Feb 2023 20:27:27 +0100 Subject: [PATCH 7/7] Cleaned up code --- src/EventSubscriber/BeskedfordelerEventSubscriber.php | 2 +- src/Helper/BeskedfordelerHelper.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/EventSubscriber/BeskedfordelerEventSubscriber.php b/src/EventSubscriber/BeskedfordelerEventSubscriber.php index 47abc49..05e9be6 100644 --- a/src/EventSubscriber/BeskedfordelerEventSubscriber.php +++ b/src/EventSubscriber/BeskedfordelerEventSubscriber.php @@ -73,7 +73,7 @@ protected function processPostStatusBeskedModtag(PostStatusBeskedModtagEvent $ev return; } - if ($this->beskedfordelerHelper->addBeskedfordelerMessage($messageUUID, $message) > 0) { + if ($this->beskedfordelerHelper->addBeskedfordelerMessage($messageUUID, $message)) { $message = $this->beskedfordelerHelper->loadMessage($messageUUID); $this->webformHelper->processBeskedfordelerData($message->submissionId, $data); } diff --git a/src/Helper/BeskedfordelerHelper.php b/src/Helper/BeskedfordelerHelper.php index 5bf0f3d..10c2cee 100644 --- a/src/Helper/BeskedfordelerHelper.php +++ b/src/Helper/BeskedfordelerHelper.php @@ -80,7 +80,7 @@ public function loadMessage(string $messageUUID): ?Message { /** * Add Beskedfordeler message to message. */ - public function addBeskedfordelerMessage(string $messageUUID, string $beskedfordelerMessage) { + public function addBeskedfordelerMessage(string $messageUUID, string $beskedfordelerMessage): bool { $message = $this->loadMessage($messageUUID); if (NULL === $message) { @@ -93,7 +93,7 @@ public function addBeskedfordelerMessage(string $messageUUID, string $beskedford 'beskedfordeler_message' => $beskedfordelerMessage, ]) ->condition('message_uuid', $messageUUID) - ->execute(); + ->execute() > 0; } /**