feat(avis): add remind_by! method

This commit is contained in:
Eric Leroy-Terquem 2023-01-23 21:02:59 +01:00
parent 1d06656427
commit 004bf5be38
3 changed files with 10 additions and 9 deletions

View file

@ -16,15 +16,10 @@ module Instructeurs
def revive def revive
avis = Avis.find(params[:id]) avis = Avis.find(params[:id])
if avis.revivable_by?(current_instructeur) if avis.remind_by!(current_instructeur)
if avis.answer.blank?
AvisMailer.avis_invitation(avis).deliver_later AvisMailer.avis_invitation(avis).deliver_later
flash.notice = "Un mail de relance a été envoyé à #{avis.expert.email}" flash.notice = "Un mail de relance a été envoyé à #{avis.expert.email}"
redirect_back(fallback_location: avis_instructeur_dossier_path(avis.procedure, avis.dossier)) redirect_back(fallback_location: avis_instructeur_dossier_path(avis.procedure, avis.dossier))
else
flash.alert = "#{avis.expert.email} a déjà donné son avis"
redirect_back(fallback_location: avis_instructeur_dossier_path(avis.procedure, avis.dossier))
end
end end
end end
end end

View file

@ -101,4 +101,9 @@ class Avis < ApplicationRecord
destroy! destroy!
end end
end end
def remind_by!(revocator)
return false if !revivable_by?(revocator) || answer.present?
update!(revived_at: Time.zone.now)
end
end end

View file

@ -33,6 +33,7 @@ describe Instructeurs::AvisController, type: :controller do
get :revive, params: { procedure_id: procedure.id, id: avis.id } get :revive, params: { procedure_id: procedure.id, id: avis.id }
expect(AvisMailer).to have_received(:avis_invitation).once.with(avis) expect(AvisMailer).to have_received(:avis_invitation).once.with(avis)
expect(flash.notice).to eq("Un mail de relance a été envoyé à #{avis.expert.email}") expect(flash.notice).to eq("Un mail de relance a été envoyé à #{avis.expert.email}")
expect(avis.reload.reminded_at).to be_present
end end
end end
end end