2018-10-31 14:56:01 +01:00
|
|
|
module CreateAvisConcern
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def create_avis_from_params(dossier, confidentiel = false)
|
|
|
|
confidentiel ||= create_avis_params[:confidentiel]
|
2018-10-31 16:09:11 +01:00
|
|
|
emails = create_avis_params[:emails].split(',').map(&:strip)
|
2018-10-31 14:56:01 +01:00
|
|
|
|
2018-10-31 16:09:11 +01:00
|
|
|
create_results = Avis.create(
|
|
|
|
emails.map do |email|
|
|
|
|
{
|
|
|
|
email: email,
|
|
|
|
introduction: create_avis_params[:introduction],
|
|
|
|
claimant: current_gestionnaire,
|
|
|
|
dossier: dossier,
|
|
|
|
confidentiel: confidentiel
|
|
|
|
}
|
|
|
|
end
|
|
|
|
)
|
|
|
|
|
|
|
|
if create_results.all?(&:persisted?)
|
|
|
|
sent_emails_addresses = create_results.map(&:email_to_display).join(", ")
|
|
|
|
flash.notice = "Une demande d'avis a été envoyée à #{sent_emails_addresses}"
|
2018-10-31 14:56:01 +01:00
|
|
|
|
|
|
|
nil
|
|
|
|
else
|
2018-10-31 16:09:11 +01:00
|
|
|
flash.now.alert = create_results
|
|
|
|
.map(&:errors)
|
|
|
|
.reject(&:empty?)
|
|
|
|
.map(&:full_messages)
|
|
|
|
.flatten
|
2018-10-31 14:56:01 +01:00
|
|
|
|
|
|
|
# When an error occurs, return the avis back to the controller
|
|
|
|
# to give the user a chance to correct and resubmit
|
2018-10-31 16:09:11 +01:00
|
|
|
Avis.new(create_avis_params)
|
2018-10-31 14:56:01 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def create_avis_params
|
2018-10-31 16:09:11 +01:00
|
|
|
params.require(:avis).permit(:emails, :introduction, :confidentiel)
|
2018-10-31 14:56:01 +01:00
|
|
|
end
|
|
|
|
end
|