From 6da2795b2cc94bc4150cbc6904a81177d6e5baed Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 8 Apr 2024 19:53:07 +0530 Subject: [PATCH] fix: add digest methods --- .../missed_sla_digest.liquid | 51 +++++++++++++++++++ .../conversation_notifications_mailer.rb | 42 +++++++-------- 2 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 app/views/mailers/agent_notifications/conversation_notifications_mailer/missed_sla_digest.liquid diff --git a/app/views/mailers/agent_notifications/conversation_notifications_mailer/missed_sla_digest.liquid b/app/views/mailers/agent_notifications/conversation_notifications_mailer/missed_sla_digest.liquid new file mode 100644 index 000000000..e73e539fc --- /dev/null +++ b/app/views/mailers/agent_notifications/conversation_notifications_mailer/missed_sla_digest.liquid @@ -0,0 +1,51 @@ +

Hello {{ user.available_name }},

+

This is a digest of the missed SLAs in your conversations:

+ +{% for conversation, missed_slas in missed_slas_by_conversation %} +
+

Conversation: {{ conversation.display_id }}

+ + + + + + + + + + {% for missed_sla in missed_slas %} + {% for sla_event in missed_sla.sla_events %} + + + + + + {% endfor %} + {% endfor %} + +
+ SLA Policy + + Missed Event + + Missed At +
+ {{ missed_sla.applied_sla.sla_policy.name }} + {{ sla_event.event }} + {{ sla_event.created_at | date: '%b %d, %Y %I:%M %p' }} +
+

+ View Conversation +

+
+{% endfor %} + +

+ Please take the necessary actions to address these missed SLAs and ensure + timely responses to the conversations. +

+ +

+ Best regards,
+ Your SLA Monitoring System +

diff --git a/enterprise/app/mailers/enterprise/agent_notifications/conversation_notifications_mailer.rb b/enterprise/app/mailers/enterprise/agent_notifications/conversation_notifications_mailer.rb index 8b153377d..8e97e1e2f 100644 --- a/enterprise/app/mailers/enterprise/agent_notifications/conversation_notifications_mailer.rb +++ b/enterprise/app/mailers/enterprise/agent_notifications/conversation_notifications_mailer.rb @@ -1,38 +1,30 @@ module Enterprise::AgentNotifications::ConversationNotificationsMailer - def sla_missed_first_response(conversation, agent, sla_policy) + def missed_slas_digest(user, missed_slas) return unless smtp_config_set_or_development? - @agent = agent - @conversation = conversation - @sla_policy = sla_policy - subject = "Conversation [ID - #{@conversation.display_id}] missed SLA for first response" - @action_url = app_account_conversation_url(account_id: @conversation.account_id, id: @conversation.display_id) - send_mail_with_liquid(to: @agent.email, subject: subject) and return - end + @user = user + @missed_slas = missed_slas + subject = 'Missed SLAs Digest' - def sla_missed_next_response(conversation, agent, sla_policy) - return unless smtp_config_set_or_development? + # Group missed SLAs by conversation using each_with_object + @missed_slas_by_conversation = @missed_slas.each_with_object({}) do |missed_sla, result| + applied_sla = missed_sla[:applied_sla] + sla_events = missed_sla[:sla_events] + conversation = applied_sla.conversation - @agent = agent - @conversation = conversation - @sla_policy = sla_policy - @action_url = app_account_conversation_url(account_id: @conversation.account_id, id: @conversation.display_id) - send_mail_with_liquid(to: @agent.email, subject: "Conversation [ID - #{@conversation.display_id}] missed SLA for next response") and return - end + result[conversation] ||= [] + result[conversation] << { + sla_events: sla_events, + applied_sla: applied_sla + } + end - def sla_missed_resolution(conversation, agent, sla_policy) - return unless smtp_config_set_or_development? - - @agent = agent - @conversation = conversation - @sla_policy = sla_policy - @action_url = app_account_conversation_url(account_id: @conversation.account_id, id: @conversation.display_id) - send_mail_with_liquid(to: @agent.email, subject: "Conversation [ID - #{@conversation.display_id}] missed SLA for resolution time") and return + send_mail_with_liquid(to: @user.email, subject: subject) and return end def liquid_droppables super.merge({ - sla_policy: @sla_policy + missed_slas_by_conversation: @missed_slas_by_conversation }) end end