demarches-normaliennes/app/controllers/administrateurs/attestation_templates_controller.rb

84 lines
2.6 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module Administrateurs
class AttestationTemplatesController < AdministrateurController
before_action :retrieve_procedure
def show
redirect_to edit_admin_procedure_attestation_template_path(@procedure)
end
def edit
@attestation_template = build_attestation_template
end
def update
@attestation_template = @procedure.attestation_template
if @attestation_template.update(activated_attestation_params)
flash.notice = "Le model de lattestation a bien été modifiée"
redirect_to edit_admin_procedure_attestation_template_path(@procedure)
else
flash.now.alert = @attestation_template.errors.full_messages
render :edit
end
end
def create
@attestation_template = build_attestation_template(activated_attestation_params)
if @attestation_template.save
flash.notice = "Le model de lattestation a bien été enregistrée"
redirect_to edit_admin_procedure_attestation_template_path(@procedure)
else
flash.now.alert = @attestation_template.errors.full_messages
render :edit
end
end
def preview
@attestation = build_attestation_template.render_attributes_for({})
render 'administrateurs/attestation_templates/show', formats: [:pdf]
end
private
def build_attestation_template(attributes = {})
attestation_template = @procedure.attestation_template || @procedure.build_attestation_template
attestation_template.attributes = attributes
attestation_template
end
def activated_attestation_params
# cache result to avoid multiple uninterlaced computations
if @activated_attestation_params.nil?
@activated_attestation_params = params.require(:attestation_template)
.permit(:title, :body, :footer, :activated, :logo, :signature)
logo_file = params['attestation_template'].delete('logo')
signature_file = params['attestation_template'].delete('signature')
if logo_file.present?
@activated_attestation_params[:logo] = uninterlaced_png(logo_file)
end
if signature_file.present?
@activated_attestation_params[:signature] = uninterlaced_png(signature_file)
end
end
@activated_attestation_params
end
def uninterlaced_png(uploaded_file)
if uploaded_file&.content_type == 'image/png'
chunky_img = ChunkyPNG::Image.from_io(uploaded_file.to_io)
chunky_img.save(uploaded_file.tempfile.to_path, interlace: false)
uploaded_file.tempfile.reopen(uploaded_file.tempfile.to_path, 'rb')
end
uploaded_file
end
end
end