Notifie instructeurs le souhaitant lors depot dossier
Notifie par mail uniquement les instructeurs qui le souhaitent à chaque dépôt de dossier
This commit is contained in:
parent
ae18ff6627
commit
f683b850c3
7 changed files with 37 additions and 8 deletions
|
@ -254,7 +254,8 @@ module Instructeurs
|
||||||
private
|
private
|
||||||
|
|
||||||
def assign_to_params
|
def assign_to_params
|
||||||
params.require(:assign_to).permit(:instant_email_message_notifications_enabled, :daily_email_notifications_enabled, :weekly_email_notifications_enabled)
|
params.require(:assign_to)
|
||||||
|
.permit(:instant_email_dossier_notifications_enabled, :instant_email_message_notifications_enabled, :daily_email_notifications_enabled, :weekly_email_notifications_enabled)
|
||||||
end
|
end
|
||||||
|
|
||||||
def assign_exports
|
def assign_exports
|
||||||
|
|
|
@ -153,7 +153,7 @@ module Users
|
||||||
if passage_en_construction? && errors.blank?
|
if passage_en_construction? && errors.blank?
|
||||||
@dossier.en_construction!
|
@dossier.en_construction!
|
||||||
NotificationMailer.send_initiated_notification(@dossier).deliver_later
|
NotificationMailer.send_initiated_notification(@dossier).deliver_later
|
||||||
@dossier.procedure.instructeurs.each do |instructeur|
|
@dossier.procedure.instructeurs.with_instant_email_dossier_notifications.each do |instructeur|
|
||||||
DossierMailer.notify_new_dossier_depose_to_instructeur(@dossier, instructeur.email).deliver_later
|
DossierMailer.notify_new_dossier_depose_to_instructeur(@dossier, instructeur.email).deliver_later
|
||||||
end
|
end
|
||||||
return redirect_to(merci_dossier_path(@dossier))
|
return redirect_to(merci_dossier_path(@dossier))
|
||||||
|
|
|
@ -23,6 +23,10 @@ class Instructeur < ApplicationRecord
|
||||||
includes(:assign_to).where(assign_tos: { instant_email_message_notifications_enabled: true })
|
includes(:assign_to).where(assign_tos: { instant_email_message_notifications_enabled: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scope :with_instant_email_dossier_notifications, -> {
|
||||||
|
includes(:assign_to).where(assign_tos: { instant_email_dossier_notifications_enabled: true })
|
||||||
|
}
|
||||||
|
|
||||||
default_scope { eager_load(:user) }
|
default_scope { eager_load(:user) }
|
||||||
|
|
||||||
def self.by_email(email)
|
def self.by_email(email)
|
||||||
|
|
|
@ -11,6 +11,22 @@
|
||||||
.explication
|
.explication
|
||||||
Configurez sur cette page les notifications que vous souhaitez recevoir par email pour cette démarche.
|
Configurez sur cette page les notifications que vous souhaitez recevoir par email pour cette démarche.
|
||||||
|
|
||||||
|
= form.label :email_notification, "Recevoir une notification à chaque dossier déposé"
|
||||||
|
|
||||||
|
%p.notice
|
||||||
|
Cet email vous signale le dépôt d'un nouveau dossier.
|
||||||
|
%p.notice
|
||||||
|
Il est envoyé à chaque fois qu'un usager dépose un dossier.
|
||||||
|
|
||||||
|
.radios
|
||||||
|
%label
|
||||||
|
= form.radio_button :instant_email_dossier_notifications_enabled, true
|
||||||
|
Oui
|
||||||
|
|
||||||
|
%label
|
||||||
|
= form.radio_button :instant_email_dossier_notifications_enabled, false
|
||||||
|
Non
|
||||||
|
|
||||||
= form.label :email_notification, "Recevoir une notification à chaque message déposé"
|
= form.label :email_notification, "Recevoir une notification à chaque message déposé"
|
||||||
|
|
||||||
%p.notice
|
%p.notice
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddInstantEmailDossierNotificationsToAssignTos < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :assign_tos, :instant_email_dossier_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.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2020_04_07_135256) do
|
ActiveRecord::Schema.define(version: 2020_04_09_075320) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -104,6 +104,7 @@ ActiveRecord::Schema.define(version: 2020_04_07_135256) do
|
||||||
t.boolean "weekly_email_notifications_enabled", default: true, null: false
|
t.boolean "weekly_email_notifications_enabled", default: true, null: false
|
||||||
t.boolean "daily_email_notifications_enabled", default: false, null: false
|
t.boolean "daily_email_notifications_enabled", default: false, null: false
|
||||||
t.boolean "instant_email_message_notifications_enabled", default: false, null: false
|
t.boolean "instant_email_message_notifications_enabled", default: false, null: false
|
||||||
|
t.boolean "instant_email_dossier_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", "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 ["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
|
t.index ["instructeur_id", "procedure_id"], name: "index_assign_tos_on_instructeur_id_and_procedure_id", unique: true
|
||||||
|
|
|
@ -421,19 +421,21 @@ describe Users::DossiersController, type: :controller do
|
||||||
expect(dossier.reload.state).to eq(Dossier.states.fetch(:en_construction))
|
expect(dossier.reload.state).to eq(Dossier.states.fetch(:en_construction))
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with instructeurs for the procedure' do
|
context 'with instructeurs ok to be notified instantly' do
|
||||||
let!(:instructeur) { create(:instructeur, groupe_instructeurs: [dossier.procedure.defaut_groupe_instructeur]) }
|
let!(:instructeur_with_instant_email_dossier) { create(:instructeur) }
|
||||||
let!(:instructeur2) { create(:instructeur, groupe_instructeurs: [dossier.procedure.defaut_groupe_instructeur]) }
|
let!(:instructeur_without_instant_email_dossier) { create(:instructeur) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(DossierMailer).to receive(:notify_new_dossier_depose_to_instructeur).and_return(double(deliver_later: nil))
|
allow(DossierMailer).to receive(:notify_new_dossier_depose_to_instructeur).and_return(double(deliver_later: nil))
|
||||||
|
create(:assign_to, instructeur: instructeur_with_instant_email_dossier, procedure: dossier.procedure, instant_email_dossier_notifications_enabled: true, groupe_instructeur: dossier.procedure.defaut_groupe_instructeur)
|
||||||
|
create(:assign_to, instructeur: instructeur_without_instant_email_dossier, procedure: dossier.procedure, instant_email_dossier_notifications_enabled: false, groupe_instructeur: dossier.procedure.defaut_groupe_instructeur)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "sends notification mail to instructeurs" do
|
it "sends notification mail to instructeurs" do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(DossierMailer).to have_received(:notify_new_dossier_depose_to_instructeur).with(dossier, instructeur.email)
|
expect(DossierMailer).to have_received(:notify_new_dossier_depose_to_instructeur).once.with(dossier, instructeur_with_instant_email_dossier.email)
|
||||||
expect(DossierMailer).to have_received(:notify_new_dossier_depose_to_instructeur).with(dossier, instructeur2.email)
|
expect(DossierMailer).not_to have_received(:notify_new_dossier_depose_to_instructeur).with(dossier, instructeur_without_instant_email_dossier.email)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue