demarches-normaliennes/app/controllers/users/commencer_controller.rb
clemkeirua debc6628d8 generation d'un fichier pdf bien nommé
La route ne contient pas '.pdf' dans l'url, mais le controller génère un fichier pdf du nom de la procédure et lance le téléchargement immédiatement
2020-03-17 15:00:03 +01:00

89 lines
2.2 KiB
Ruby

module Users
class CommencerController < ApplicationController
layout 'procedure_context'
def commencer
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank? || @procedure.brouillon?
render 'commencer/show'
end
def commencer_test
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank? || @procedure.publiee?
render 'commencer/show'
end
def dossier_vide_pdf
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank? || @procedure.brouillon?
generate_empty_pdf(@procedure)
end
def dossier_vide_pdf_test
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank? || @procedure.publiee?
generate_empty_pdf(@procedure)
end
def sign_in
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank?
store_user_location!(@procedure)
redirect_to new_user_session_path
end
def sign_up
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank?
store_user_location!(@procedure)
redirect_to new_user_registration_path
end
def france_connect
@procedure = retrieve_procedure
return procedure_not_found if @procedure.blank?
store_user_location!(@procedure)
redirect_to france_connect_particulier_path
end
def procedure_for_help
retrieve_procedure
end
private
def retrieve_procedure
Procedure.publiees.or(Procedure.brouillons).find_by(path: params[:path])
end
def procedure_not_found
procedure = Procedure.find_by(path: params[:path])
if procedure&.close?
flash.alert = t('errors.messages.procedure_archived')
else
flash.alert = t('errors.messages.procedure_not_found')
end
redirect_to root_path
end
def store_user_location!(procedure)
store_location_for(:user, helpers.procedure_lien(procedure))
end
def generate_empty_pdf(procedure)
@dossier = procedure.new_dossier
s = render_to_string(file: 'dossiers/dossier_vide', formats: [:pdf])
send_data(s, :filename => "#{procedure.libelle}.pdf")
end
end
end