demarches-normaliennes/app/controllers/concerns/groupe_instructeurs_signature_concern.rb
Colin Darie d231ec35f4 refactor(attestation): groupe instructeur add signature shared
Co-Authored-By: Christophe Robillard <christophe.robillard@beta.gouv.fr>
2023-09-22 10:24:16 +02:00

63 lines
2 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 GroupeInstructeursSignatureConcern
extend ActiveSupport::Concern
included do
def add_signature
@procedure = procedure
@groupe_instructeur = groupe_instructeur
@instructeurs = paginated_instructeurs
signature_file = params[:groupe_instructeur][:signature]
if params[:groupe_instructeur].nil? || signature_file.blank?
if respond_to?(:available_instructeur_emails)
@available_instructeur_emails = available_instructeur_emails
end
flash[:alert] = "Aucun fichier joint pour le tampon de l'attestation"
render :show
else
signature = uninterlace_png(signature_file)
if @groupe_instructeur.signature.attach(signature)
handle_redirect :success
else
handle_redirect :alert
end
end
end
def preview_attestation
attestation_template = procedure.attestation_template || procedure.build_attestation_template
@attestation = attestation_template.render_attributes_for({ groupe_instructeur: groupe_instructeur })
render 'administrateurs/attestation_templates/show', formats: [:pdf]
end
private
def handle_redirect(status)
redirect, preview = if self.class.module_parent_name == "Administrateurs"
[
:admin_procedure_groupe_instructeur_path,
:preview_attestation_admin_procedure_groupe_instructeur_path
]
else
[
:instructeur_groupe_path,
:preview_attestation_instructeur_groupe_path
]
end
redirect_path = method(redirect).call(@procedure, @groupe_instructeur)
preview_path = method(preview).call(@procedure, @groupe_instructeur)
case status
when :success
redirect_to redirect_path, notice: "Le tampon de lattestation a bien été ajouté. #{helpers.link_to("Prévisualiser lattestation", preview_path)}"
when :alert
redirect_to redirect_path, alert: "Une erreur a empêché lajout du tampon. Réessayez dans quelques instants."
end
end
end
end