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