Envoie une notif aux followers_instructeurs le souhaitant
après chaque message déposé par l'usager
This commit is contained in:
parent
415d5c765e
commit
969478b706
7 changed files with 46 additions and 13 deletions
|
@ -254,7 +254,7 @@ module Instructeurs
|
|||
private
|
||||
|
||||
def assign_to_params
|
||||
params.require(:assign_to).permit(:daily_email_notifications_enabled, :weekly_email_notifications_enabled)
|
||||
params.require(:assign_to).permit(:instant_email_message_notifications_enabled, :daily_email_notifications_enabled, :weekly_email_notifications_enabled)
|
||||
end
|
||||
|
||||
def assign_exports
|
||||
|
|
|
@ -197,7 +197,9 @@ module Users
|
|||
@commentaire = CommentaireService.build(current_user, dossier, commentaire_params)
|
||||
|
||||
if @commentaire.save
|
||||
dossier.followers_instructeurs.each do |instructeur|
|
||||
dossier.followers_instructeurs
|
||||
.with_instant_email_message_notifications
|
||||
.each do |instructeur|
|
||||
DossierMailer.notify_new_commentaire_to_instructeur(dossier, instructeur.email).deliver_later
|
||||
end
|
||||
flash.notice = "Votre message a bien été envoyé à l’instructeur en charge de votre dossier."
|
||||
|
|
|
@ -19,6 +19,10 @@ class Instructeur < ApplicationRecord
|
|||
|
||||
has_one :user, dependent: :nullify
|
||||
|
||||
scope :with_instant_email_message_notifications, -> {
|
||||
includes(:assign_to).where(assign_tos: { instant_email_message_notifications_enabled: true })
|
||||
}
|
||||
|
||||
default_scope { eager_load(:user) }
|
||||
|
||||
def self.by_email(email)
|
||||
|
|
|
@ -11,21 +11,37 @@
|
|||
.explication
|
||||
Configurez sur cette page les notifications que vous souhaitez recevoir par email pour cette démarche.
|
||||
|
||||
= form.label :email_notification, "Recevoir une notification quotidienne"
|
||||
= form.label :email_notification, "Recevoir une notification à chaque message déposé"
|
||||
|
||||
%p.notice
|
||||
Cet email vous signale le dépôt de nouveaux dossiers sur cette démarche, ou des changements sur vos dossiers suivis.
|
||||
Cet email vous signale le dépôt d'un nouveau message sur vos dossiers suivis.
|
||||
%p.notice
|
||||
Il est envoyé une fois par jour, du lundi au samedi, vers 10 h du matin.
|
||||
il est envoyé à chaque fois qu'un usager dépose un message.
|
||||
|
||||
.radios
|
||||
%label
|
||||
= form.radio_button :instant_email_message_notifications_enabled, true
|
||||
Oui
|
||||
|
||||
%label
|
||||
= form.radio_button :instant_email_message_notifications_enabled, false
|
||||
Non
|
||||
|
||||
= form.label :email_notification, "recevoir une notification quotidienne"
|
||||
|
||||
%p.notice
|
||||
cet email vous signale le dépôt de nouveaux dossiers sur cette démarche, ou des changements sur vos dossiers suivis.
|
||||
%p.notice
|
||||
il est envoyé une fois par jour, du lundi au samedi, vers 10 h du matin.
|
||||
|
||||
.radios
|
||||
%label
|
||||
= form.radio_button :daily_email_notifications_enabled, true
|
||||
Oui
|
||||
oui
|
||||
|
||||
%label
|
||||
= form.radio_button :daily_email_notifications_enabled, false
|
||||
Non
|
||||
non
|
||||
|
||||
= form.label :email_notification, "Recevoir un récapitulatif hebdomadaire"
|
||||
%p.notice
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddInstantEmailMessageNotificationsToAssignTos < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :assign_tos, :instant_email_message_notifications_enabled, :boolean, default: false, null: false
|
||||
end
|
||||
end
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2020_03_19_103836) do
|
||||
ActiveRecord::Schema.define(version: 2020_04_07_135256) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -103,6 +103,7 @@ ActiveRecord::Schema.define(version: 2020_03_19_103836) do
|
|||
t.bigint "groupe_instructeur_id"
|
||||
t.boolean "weekly_email_notifications_enabled", default: true, null: false
|
||||
t.boolean "daily_email_notifications_enabled", default: false, null: false
|
||||
t.boolean "instant_email_message_notifications_enabled", default: false, null: false
|
||||
t.index ["groupe_instructeur_id", "instructeur_id"], name: "unique_couple_groupe_instructeur_instructeur", unique: true
|
||||
t.index ["groupe_instructeur_id"], name: "index_assign_tos_on_groupe_instructeur_id"
|
||||
t.index ["instructeur_id", "procedure_id"], name: "index_assign_tos_on_instructeur_id_and_procedure_id", unique: true
|
||||
|
|
|
@ -783,8 +783,9 @@ describe Users::DossiersController, type: :controller do
|
|||
end
|
||||
|
||||
describe "#create_commentaire" do
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
let(:procedure) { create(:procedure, :published, instructeurs: [instructeur]) }
|
||||
let(:instructeur_with_instant_message) { create(:instructeur) }
|
||||
let(:instructeur_without_instant_message) { create(:instructeur) }
|
||||
let(:procedure) { create(:procedure, :published) }
|
||||
let(:dossier) { create(:dossier, :en_construction, procedure: procedure, user: user) }
|
||||
let(:saved_commentaire) { dossier.commentaires.first }
|
||||
let(:body) { "avant\napres" }
|
||||
|
@ -804,15 +805,19 @@ describe Users::DossiersController, type: :controller do
|
|||
before do
|
||||
sign_in(user)
|
||||
allow(ClamavService).to receive(:safe_file?).and_return(scan_result)
|
||||
allow(DossierMailer).to receive(:notify_new_commentaire_to_instructeur).with(dossier, instructeur.email).and_return(double(deliver_later: nil))
|
||||
instructeur.follow(dossier)
|
||||
allow(DossierMailer).to receive(:notify_new_commentaire_to_instructeur).and_return(double(deliver_later: nil))
|
||||
instructeur_with_instant_message.follow(dossier)
|
||||
instructeur_without_instant_message.follow(dossier)
|
||||
create(:assign_to, instructeur: instructeur_with_instant_message, procedure: procedure, instant_email_message_notifications_enabled: true, groupe_instructeur: procedure.defaut_groupe_instructeur)
|
||||
create(:assign_to, instructeur: instructeur_without_instant_message, procedure: procedure, instant_email_message_notifications_enabled: false, groupe_instructeur: procedure.defaut_groupe_instructeur)
|
||||
end
|
||||
|
||||
it "creates a commentaire" do
|
||||
expect { subject }.to change(Commentaire, :count).by(1)
|
||||
|
||||
expect(response).to redirect_to(messagerie_dossier_path(dossier))
|
||||
expect(DossierMailer).to have_received(:notify_new_commentaire_to_instructeur).with(dossier, instructeur.email)
|
||||
expect(DossierMailer).to have_received(:notify_new_commentaire_to_instructeur).with(dossier, instructeur_with_instant_message.email)
|
||||
expect(DossierMailer).not_to have_received(:notify_new_commentaire_to_instructeur).with(dossier, instructeur_without_instant_message.email)
|
||||
expect(flash.notice).to be_present
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue