From 73f745ab7d22fc5c8dbd5e56673334e4f9acd1ea Mon Sep 17 00:00:00 2001 From: luciajanikova <19lucia99@gmail.com> Date: Tue, 14 Nov 2023 17:25:49 +0100 Subject: [PATCH] Add delivery_notification method to Govbox::Message --- app/jobs/govbox/process_message_job.rb | 10 ++++----- ..._unauthorized_delivery_notification_job.rb | 6 +++++ app/models/govbox/message.rb | 22 +++++++++++-------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/app/jobs/govbox/process_message_job.rb b/app/jobs/govbox/process_message_job.rb index 6def53a37..73ee84bf6 100644 --- a/app/jobs/govbox/process_message_job.rb +++ b/app/jobs/govbox/process_message_job.rb @@ -24,18 +24,18 @@ def destroy_associated_message_draft(govbox_message) end def mark_delivery_notification_authorized(govbox_message) - return unless govbox_message.payload["delivery_notification"] + return unless govbox_message.delivery_notification - authorized_govbox_message = Govbox::Message.where(message_id: govbox_message.payload['delivery_notification']['consignment']['message_id']) + authorized_govbox_message = Govbox::Message.where(message_id: govbox_message.delivery_notification['consignment']['message_id']) .joins(folder: :box).where(folders: { boxes: { id: govbox_message.box.id } }).take if authorized_govbox_message delivery_notification_message = ::Message.where(uuid: govbox_message.message_id) .joins(thread: :folder).where(folders: { box_id: govbox_message.box.id }).take mark_delivery_notificiation_message_authorized(delivery_notification_message) if delivery_notification_message - elsif govbox_message.payload['delivery_notification']['consignment']['type'] == 'Doc.GeneralAgendaReport' - Govbox::ProcessUnauthorizedDeliveryNotificationJob.set(wait_until: Time.parse(govbox_message.payload['delivery_notification']['delivery_period_end_at'])) - .perform_later(govbox_message) + elsif govbox_message.delivery_notification['consignment']['type'] == 'Doc.GeneralAgendaReport' + Govbox::ProcessUnauthorizedDeliveryNotificationJob.set(wait_until: Time.parse(govbox_message.delivery_notification['delivery_period_end_at'])) + .perform_later(govbox_message) if Time.parse(govbox_message.delivery_notification['delivery_period_end_at']) > Time.now end end diff --git a/app/jobs/govbox/process_unauthorized_delivery_notification_job.rb b/app/jobs/govbox/process_unauthorized_delivery_notification_job.rb index e7d5850a5..1241dcc03 100644 --- a/app/jobs/govbox/process_unauthorized_delivery_notification_job.rb +++ b/app/jobs/govbox/process_unauthorized_delivery_notification_job.rb @@ -5,6 +5,12 @@ def perform(govbox_message) return if message.metadata["authorized"] + if Time.parse(govbox_message.delivery_notification['delivery_period_end_at']) > Time.now + Govbox::ProcessUnauthorizedDeliveryNotificationJob.set(wait_until: Time.parse(govbox_message.delivery_notification['delivery_period_end_at'])) + .perform_later(govbox_message) + return + end + message.update(collapsed: true) delivery_notification_tag = Tag.find_by!( diff --git a/app/models/govbox/message.rb b/app/models/govbox/message.rb index 8d33d79c7..ba5732007 100644 --- a/app/models/govbox/message.rb +++ b/app/models/govbox/message.rb @@ -25,14 +25,6 @@ class Govbox::Message < ApplicationRecord DELIVERY_NOTIFICATION_TAG = 'delivery_notification' - def replyable? - folder.inbox? && [EGOV_DOCUMENT_CLASS, EGOV_NOTIFICATION_CLASS].include?(payload["class"]) - end - - def collapsed? - payload["class"].in?(COLLAPSED_BY_DEFAULT_MESSAGE_CLASSES) - end - def self.create_message_with_thread!(govbox_message) message = MessageThread.with_advisory_lock!(govbox_message.correlation_id, transaction: true, timeout_seconds: 10) do folder = Folder.find_or_create_by!( @@ -67,6 +59,18 @@ def self.create_message_with_thread!(govbox_message) message end + def replyable? + folder.inbox? && [EGOV_DOCUMENT_CLASS, EGOV_NOTIFICATION_CLASS].include?(payload["class"]) + end + + def collapsed? + payload["class"].in?(COLLAPSED_BY_DEFAULT_MESSAGE_CLASSES) + end + + def delivery_notification + payload["delivery_notification"] + end + private def self.create_message(govbox_message) @@ -89,7 +93,7 @@ def self.create_message(govbox_message) "reference_id": govbox_message.payload["reference_id"], "sender_uri": govbox_message.payload["sender_uri"], "edesk_class": govbox_message.payload["class"], - "delivery_notification": govbox_message.payload["delivery_notification"] + "delivery_notification": govbox_message.delivery_notification } ) end