98 lines
3.4 KiB
Ruby
98 lines
3.4 KiB
Ruby
module Instructeurs
|
|
class ExportTemplatesController < InstructeurController
|
|
before_action :set_procedure
|
|
before_action :set_groupe_instructeur, only: [:create, :update]
|
|
before_action :set_export_template, only: [:edit, :update, :destroy]
|
|
before_action :set_groupe_instructeurs
|
|
before_action :set_all_pj
|
|
|
|
def new
|
|
@export_template = ExportTemplate.new(kind: 'zip', groupe_instructeur: @groupe_instructeurs.first)
|
|
@export_template.set_default_values
|
|
end
|
|
|
|
def create
|
|
@export_template = @groupe_instructeur.export_templates.build(export_template_params)
|
|
@export_template.assign_pj_names(pj_params)
|
|
if @export_template.save
|
|
redirect_to exports_instructeur_procedure_path(procedure: @procedure), notice: "Le modèle d'export #{@export_template.name} a bien été créé"
|
|
else
|
|
flash[:alert] = @export_template.errors.full_messages
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def update
|
|
@export_template.assign_attributes(export_template_params)
|
|
@export_template.groupe_instructeur = @groupe_instructeur
|
|
@export_template.assign_pj_names(pj_params)
|
|
if @export_template.save
|
|
redirect_to exports_instructeur_procedure_path(procedure: @procedure), notice: "Le modèle d'export #{@export_template.name} a bien été modifié"
|
|
else
|
|
flash[:alert] = @export_template.errors.full_messages
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
if @export_template.destroy
|
|
redirect_to exports_instructeur_procedure_path(procedure: @procedure), notice: "Le modèle d'export #{@export_template.name} a bien été supprimé"
|
|
else
|
|
redirect_to exports_instructeur_procedure_path(procedure: @procedure), alert: "Le modèle d'export #{@export_template.name} n'a pu être supprimé"
|
|
end
|
|
end
|
|
|
|
def preview
|
|
param = params.require(:export_template).keys.first
|
|
@preview_param = param.delete_prefix("tiptap_")
|
|
hash = JSON.parse(params[:export_template][param]).deep_symbolize_keys
|
|
export_template = ExportTemplate.new(kind: 'zip', groupe_instructeur: @groupe_instructeurs.first)
|
|
@preview_value = export_template.render_attributes_for(hash, @procedure.dossier_for_preview(current_instructeur))
|
|
end
|
|
|
|
private
|
|
|
|
def export_template_params
|
|
params.require(:export_template).permit(*export_params)
|
|
end
|
|
|
|
def set_procedure
|
|
@procedure = current_instructeur.procedures.find params[:procedure_id]
|
|
Sentry.configure_scope do |scope|
|
|
scope.set_tags(procedure: @procedure.id)
|
|
end
|
|
end
|
|
|
|
def set_export_template
|
|
@export_template = current_instructeur.export_templates.find(params[:id])
|
|
end
|
|
|
|
def set_groupe_instructeur
|
|
@groupe_instructeur = @procedure.groupe_instructeurs.find(params.require(:export_template)[:groupe_instructeur_id])
|
|
end
|
|
|
|
def set_groupe_instructeurs
|
|
@groupe_instructeurs = current_instructeur.groupe_instructeurs.where(procedure: @procedure)
|
|
end
|
|
|
|
def set_all_pj
|
|
@all_pj ||= @procedure.exportables_pieces_jointes
|
|
end
|
|
|
|
def export_params
|
|
[:name, :kind, :tiptap_default_dossier_directory, :tiptap_pdf_name]
|
|
end
|
|
|
|
def pj_params
|
|
@procedure = current_instructeur.procedures.find params[:procedure_id]
|
|
pj_params = []
|
|
@all_pj.each do |pj|
|
|
pj_params << "tiptap_pj_#{pj.stable_id}".to_sym
|
|
end
|
|
params.require(:export_template).permit(*pj_params)
|
|
end
|
|
end
|
|
end
|