[#835] Extract avis creation into concern
This commit is contained in:
parent
6a43be4f39
commit
31ca0552ab
4 changed files with 35 additions and 17 deletions
26
app/controllers/concerns/create_avis_concern.rb
Normal file
26
app/controllers/concerns/create_avis_concern.rb
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
module CreateAvisConcern
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def create_avis_from_params(dossier, confidentiel = false)
|
||||||
|
confidentiel ||= create_avis_params[:confidentiel]
|
||||||
|
avis = Avis.new(create_avis_params.merge(claimant: current_gestionnaire, dossier: dossier, confidentiel: confidentiel))
|
||||||
|
|
||||||
|
if avis.save
|
||||||
|
flash.notice = "Une demande d'avis a été envoyée à #{avis.email_to_display}"
|
||||||
|
|
||||||
|
nil
|
||||||
|
else
|
||||||
|
flash.now.alert = @avis.errors.full_messages
|
||||||
|
|
||||||
|
# When an error occurs, return the avis back to the controller
|
||||||
|
# to give the user a chance to correct and resubmit
|
||||||
|
avis
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_avis_params
|
||||||
|
params.require(:avis).permit(:email, :introduction, :confidentiel)
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,7 @@
|
||||||
module NewGestionnaire
|
module NewGestionnaire
|
||||||
class AvisController < GestionnaireController
|
class AvisController < GestionnaireController
|
||||||
|
include CreateAvisConcern
|
||||||
|
|
||||||
before_action :authenticate_gestionnaire!, except: [:sign_up, :create_gestionnaire]
|
before_action :authenticate_gestionnaire!, except: [:sign_up, :create_gestionnaire]
|
||||||
before_action :redirect_if_no_sign_up_needed, only: [:sign_up]
|
before_action :redirect_if_no_sign_up_needed, only: [:sign_up]
|
||||||
before_action :check_avis_exists_and_email_belongs_to_avis, only: [:sign_up, :create_gestionnaire]
|
before_action :check_avis_exists_and_email_belongs_to_avis, only: [:sign_up, :create_gestionnaire]
|
||||||
|
@ -60,14 +62,11 @@ module NewGestionnaire
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_avis
|
def create_avis
|
||||||
confidentiel = avis.confidentiel || create_avis_params[:confidentiel]
|
@new_avis = create_avis_from_params(avis.dossier, avis.confidentiel)
|
||||||
@new_avis = Avis.new(create_avis_params.merge(claimant: current_gestionnaire, dossier: avis.dossier, confidentiel: confidentiel))
|
|
||||||
|
|
||||||
if @new_avis.save
|
if @new_avis.nil?
|
||||||
flash.notice = "Une demande d'avis a été envoyée à #{@new_avis.email_to_display}"
|
|
||||||
redirect_to instruction_gestionnaire_avis_path(avis)
|
redirect_to instruction_gestionnaire_avis_path(avis)
|
||||||
else
|
else
|
||||||
flash.now.alert = @new_avis.errors.full_messages
|
|
||||||
set_avis_and_dossier
|
set_avis_and_dossier
|
||||||
render :instruction
|
render :instruction
|
||||||
end
|
end
|
||||||
|
@ -141,9 +140,5 @@ module NewGestionnaire
|
||||||
def commentaire_params
|
def commentaire_params
|
||||||
params.require(:commentaire).permit(:body, :file)
|
params.require(:commentaire).permit(:body, :file)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_avis_params
|
|
||||||
params.require(:avis).permit(:email, :introduction, :confidentiel)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,7 @@ module NewGestionnaire
|
||||||
class DossiersController < ProceduresController
|
class DossiersController < ProceduresController
|
||||||
include ActionView::Helpers::NumberHelper
|
include ActionView::Helpers::NumberHelper
|
||||||
include ActionView::Helpers::TextHelper
|
include ActionView::Helpers::TextHelper
|
||||||
|
include CreateAvisConcern
|
||||||
|
|
||||||
after_action :mark_demande_as_read, only: :show
|
after_action :mark_demande_as_read, only: :show
|
||||||
after_action :mark_messagerie_as_read, only: [:messagerie, :create_commentaire]
|
after_action :mark_messagerie_as_read, only: [:messagerie, :create_commentaire]
|
||||||
|
@ -130,12 +131,11 @@ module NewGestionnaire
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_avis
|
def create_avis
|
||||||
@avis = Avis.new(avis_params.merge(claimant: current_gestionnaire, dossier: dossier))
|
@avis = create_avis_from_params(dossier)
|
||||||
if @avis.save
|
|
||||||
flash.notice = "Une demande d'avis a été envoyée à #{@avis.email_to_display}"
|
if @avis.nil?
|
||||||
redirect_to avis_gestionnaire_dossier_path(procedure, dossier)
|
redirect_to avis_gestionnaire_dossier_path(procedure, dossier)
|
||||||
else
|
else
|
||||||
flash.now.alert = @avis.errors.full_messages
|
|
||||||
@avis_seen_at = current_gestionnaire.follows.find_by(dossier: dossier)&.avis_seen_at
|
@avis_seen_at = current_gestionnaire.follows.find_by(dossier: dossier)&.avis_seen_at
|
||||||
render :avis
|
render :avis
|
||||||
end
|
end
|
||||||
|
@ -163,10 +163,6 @@ module NewGestionnaire
|
||||||
params.require(:commentaire).permit(:body, :file)
|
params.require(:commentaire).permit(:body, :file)
|
||||||
end
|
end
|
||||||
|
|
||||||
def avis_params
|
|
||||||
params.require(:avis).permit(:email, :introduction, :confidentiel)
|
|
||||||
end
|
|
||||||
|
|
||||||
def champs_private_params
|
def champs_private_params
|
||||||
params.require(:dossier).permit(champs_private_attributes: [
|
params.require(:dossier).permit(champs_private_attributes: [
|
||||||
:id, :primary_value, :secondary_value, :piece_justificative_file, :value, value: [],
|
:id, :primary_value, :secondary_value, :piece_justificative_file, :value, value: [],
|
||||||
|
|
|
@ -25,6 +25,7 @@ module TPS
|
||||||
config.i18n.available_locales = [:fr]
|
config.i18n.available_locales = [:fr]
|
||||||
|
|
||||||
config.paths.add "#{config.root}/lib", eager_load: true
|
config.paths.add "#{config.root}/lib", eager_load: true
|
||||||
|
config.paths.add "#{config.root}/app/controllers/concerns", eager_load: true
|
||||||
|
|
||||||
config.assets.paths << Rails.root.join('app', 'assets', 'javascript')
|
config.assets.paths << Rails.root.join('app', 'assets', 'javascript')
|
||||||
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
|
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue