From 13f18a37406637e3a0fd074a6f250799ce1c5348 Mon Sep 17 00:00:00 2001
From: pabois <pierreandre.boissinot@noesya.coop>
Date: Mon, 17 Jul 2023 18:11:02 +0200
Subject: [PATCH] add target

---
 app/mailers/notification_mailer.rb            |  2 +-
 app/models/emergency_message.rb               | 27 +++++++++----------
 .../server/emergency_messages/show.html.erb   |  5 ++++
 config/locales/en.yml                         |  2 ++
 config/locales/fr.yml                         |  2 ++
 db/schema.rb                                  |  3 ++-
 6 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 9d49a89eb..26efb189a 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -17,7 +17,7 @@ class NotificationMailer < ApplicationMailer
     merge_with_university_infos(user.university, {})
     I18n.locale = user.language.iso_code
     subject = emergency_message.public_send("subject_#{lang}")
-    @message =  emergency_message.public_send("content_#{lang}")
+    @message = emergency_message.public_send("content_#{lang}")
     mail(from: user.university.mail_from[:full], to: user.email, subject: subject)
   end
 
diff --git a/app/models/emergency_message.rb b/app/models/emergency_message.rb
index 76bec8d37..7419fb1c2 100644
--- a/app/models/emergency_message.rb
+++ b/app/models/emergency_message.rb
@@ -2,17 +2,18 @@
 #
 # Table name: emergency_messages
 #
-#  id            :uuid             not null, primary key
-#  content_en    :text
-#  content_fr    :text
-#  delivered_at  :datetime
-#  name          :string
-#  role          :string
-#  subject_en    :string
-#  subject_fr    :string
-#  created_at    :datetime         not null
-#  updated_at    :datetime         not null
-#  university_id :uuid             indexed
+#  id              :uuid             not null, primary key
+#  content_en      :text
+#  content_fr      :text
+#  delivered_at    :datetime
+#  delivered_count :integer
+#  name            :string
+#  role            :string
+#  subject_en      :string
+#  subject_fr      :string
+#  created_at      :datetime         not null
+#  updated_at      :datetime         not null
+#  university_id   :uuid             indexed
 #
 # Indexes
 #
@@ -37,7 +38,7 @@ class EmergencyMessage < ApplicationRecord
     users_en.each do |user|
       NotificationMailer.emergency_message(self, user, 'en').deliver_later
     end
-    update(delivered_at: Time.now)
+    update(delivered_at: Time.now, delivered_count: target.size)
   end
 
   def delivered?
@@ -48,8 +49,6 @@ class EmergencyMessage < ApplicationRecord
     "#{name}"
   end
 
-  private
-
   def target
     users = User.all
     users = users.where(university_id: university_id) if university_id.present? 
diff --git a/app/views/server/emergency_messages/show.html.erb b/app/views/server/emergency_messages/show.html.erb
index 45c727081..471bb57f7 100644
--- a/app/views/server/emergency_messages/show.html.erb
+++ b/app/views/server/emergency_messages/show.html.erb
@@ -33,6 +33,11 @@
             <td><%= EmergencyMessage.human_attribute_name(:role) %></td>
             <td class="text-end"><%= @emergency_message.role.present? ? t("activerecord.attributes.user.roles.#{@emergency_message.role}") : t('server_admin.emergency_messages.all_roles') %></td>
           </tr>
+          <tr>
+            <td><%= t('server_admin.emergency_messages.target') %></td>
+            <% count = @emergency_message.delivered? ? @emergency_message.delivered_count : @emergency_message.target.size %>
+            <td class="text-end"><%= t('server_admin.emergency_messages.users', count: count) %></td>
+          </tr>
 
         </table>
       </div>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 2adb32ebb..857011b9d 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -303,6 +303,8 @@ en:
       deliver: Send
       delivered: Your message has been sent
       filters: Filters
+      target: Target
+      users: "%{count} users"
     websites:
       buttons:
         theme:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index dcc5d3212..069dc5d13 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -303,6 +303,8 @@ fr:
       deliver: Envoyer
       delivered: Votre message a bien été envoyé
       filters: Filtres
+      target: Cible
+      users: "%{count} utilisateurs"
     websites:
       buttons:
         theme:
diff --git a/db/schema.rb b/db/schema.rb
index f34c86a4c..8cebeb990 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema[7.0].define(version: 2023_07_17_132026) do
+ActiveRecord::Schema[7.0].define(version: 2023_07_17_160238) do
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
   enable_extension "plpgsql"
@@ -691,6 +691,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_07_17_132026) do
     t.datetime "delivered_at"
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
+    t.integer "delivered_count"
     t.index ["university_id"], name: "index_emergency_messages_on_university_id", where: "(university_id IS NOT NULL)"
   end
 
-- 
GitLab