Merge pull request #362 from sgmap/fix-323
[Fix #323] Send notification emails when a dossier is automatically received
This commit is contained in:
commit
8411a4d6bf
5 changed files with 35 additions and 18 deletions
|
@ -99,8 +99,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||||
dossier.received!
|
dossier.received!
|
||||||
flash.notice = 'Dossier considéré comme reçu.'
|
flash.notice = 'Dossier considéré comme reçu.'
|
||||||
|
|
||||||
NotificationMailer.send_notification(dossier, dossier.procedure.received_mail_template).deliver_now!
|
|
||||||
|
|
||||||
redirect_to backoffice_dossier_path(id: dossier.id)
|
redirect_to backoffice_dossier_path(id: dossier.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ class Dossier < ActiveRecord::Base
|
||||||
|
|
||||||
after_save :build_default_champs, if: Proc.new { procedure_id_changed? }
|
after_save :build_default_champs, if: Proc.new { procedure_id_changed? }
|
||||||
after_save :build_default_individual, if: Proc.new { procedure.for_individual? }
|
after_save :build_default_individual, if: Proc.new { procedure.for_individual? }
|
||||||
|
after_save :send_notification_email
|
||||||
|
|
||||||
validates :user, presence: true
|
validates :user, presence: true
|
||||||
|
|
||||||
|
@ -302,4 +303,10 @@ class Dossier < ActiveRecord::Base
|
||||||
def serialize_value_for_export(value)
|
def serialize_value_for_export(value)
|
||||||
value.nil? || value.kind_of?(Time) ? value : value.to_s
|
value.nil? || value.kind_of?(Time) ? value : value.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def send_notification_email
|
||||||
|
if state_changed? && EN_INSTRUCTION.include?(state)
|
||||||
|
NotificationMailer.send_notification(self, procedure.received_mail_template).deliver_now!
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,13 +2,12 @@ class AutoArchiveProcedureWorker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
|
|
||||||
def perform(*args)
|
def perform(*args)
|
||||||
procedures_to_archive = Procedure.not_archived.where("auto_archive_on <= ?", Date.today)
|
Procedure.not_archived.where("auto_archive_on <= ?", Date.today).each do |procedure|
|
||||||
|
procedure.dossiers.state_en_construction.each do |dossier|
|
||||||
procedures_to_archive.each do |p|
|
dossier.received!
|
||||||
p.dossiers.state_en_construction.update_all(state: :received)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
procedures_to_archive.update_all(archived: true, auto_archive_on: nil)
|
procedure.update_attributes!(archived: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -867,4 +867,27 @@ describe Dossier do
|
||||||
it { is_expected.to include(dossier3)}
|
it { is_expected.to include(dossier3)}
|
||||||
it { is_expected.to include(dossier4)}
|
it { is_expected.to include(dossier4)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#send_notification_email" do
|
||||||
|
let(:procedure) { create(:procedure) }
|
||||||
|
let(:dossier) { create(:dossier, procedure: procedure, state: :initiated) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
ActionMailer::Base.deliveries.clear
|
||||||
|
end
|
||||||
|
|
||||||
|
it "sends an email when the dossier becomes received" do
|
||||||
|
dossier.received!
|
||||||
|
|
||||||
|
mail = ActionMailer::Base.deliveries.last
|
||||||
|
|
||||||
|
expect(mail.subject).to eq("Votre dossier TPS nº #{dossier.id} va être instruit")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not an email when the dossier becomes closed" do
|
||||||
|
dossier.closed!
|
||||||
|
|
||||||
|
expect(ActionMailer::Base.deliveries.size).to eq(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe AutoArchiveProcedureWorker, type: :worker do
|
RSpec.describe AutoArchiveProcedureWorker, type: :worker do
|
||||||
|
|
||||||
let!(:procedure) { create(:procedure, archived: false, auto_archive_on: nil )}
|
let!(:procedure) { create(:procedure, archived: false, auto_archive_on: nil )}
|
||||||
let!(:procedure_hier) { create(:procedure, archived: false, auto_archive_on: 1.day.ago )}
|
let!(:procedure_hier) { create(:procedure, archived: false, auto_archive_on: 1.day.ago )}
|
||||||
let!(:procedure_aujourdhui) { create(:procedure, archived: false, auto_archive_on: Date.today )}
|
let!(:procedure_aujourdhui) { create(:procedure, archived: false, auto_archive_on: Date.today )}
|
||||||
|
@ -17,11 +16,9 @@ RSpec.describe AutoArchiveProcedureWorker, type: :worker do
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(procedure.archived).to eq false }
|
it { expect(procedure.archived).to eq false }
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when procedures have auto_archive_on set on yesterday or today" do
|
context "when procedures have auto_archive_on set on yesterday or today" do
|
||||||
|
|
||||||
describe "titi" do
|
describe "titi" do
|
||||||
before do
|
before do
|
||||||
subject
|
subject
|
||||||
|
@ -31,12 +28,9 @@ RSpec.describe AutoArchiveProcedureWorker, type: :worker do
|
||||||
|
|
||||||
it { expect(procedure_hier.archived).to eq true }
|
it { expect(procedure_hier.archived).to eq true }
|
||||||
it { expect(procedure_aujourdhui.archived).to eq true }
|
it { expect(procedure_aujourdhui.archived).to eq true }
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
context "with dossiers" do
|
context "with dossiers" do
|
||||||
|
|
||||||
let!(:dossier1) { create(:dossier, procedure: procedure_hier, state: 'draft', archived: false)}
|
let!(:dossier1) { create(:dossier, procedure: procedure_hier, state: 'draft', archived: false)}
|
||||||
let!(:dossier2) { create(:dossier, procedure: procedure_hier, state: 'initiated', archived: false)}
|
let!(:dossier2) { create(:dossier, procedure: procedure_hier, state: 'initiated', archived: false)}
|
||||||
let!(:dossier3) { create(:dossier, procedure: procedure_hier, state: 'replied', archived: false)}
|
let!(:dossier3) { create(:dossier, procedure: procedure_hier, state: 'replied', archived: false)}
|
||||||
|
@ -61,18 +55,14 @@ RSpec.describe AutoArchiveProcedureWorker, type: :worker do
|
||||||
it { expect(dossier6.state).to eq 'closed' }
|
it { expect(dossier6.state).to eq 'closed' }
|
||||||
it { expect(dossier7.state).to eq 'refused' }
|
it { expect(dossier7.state).to eq 'refused' }
|
||||||
it { expect(dossier8.state).to eq 'without_continuation' }
|
it { expect(dossier8.state).to eq 'without_continuation' }
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when procedures have auto_archive_on set on future" do
|
context "when procedures have auto_archive_on set on future" do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject
|
subject
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(procedure_demain.archived).to eq false }
|
it { expect(procedure_demain.archived).to eq false }
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue