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 l’attestation a bien été ajouté. #{helpers.link_to("Prévisualiser l’attestation", preview_path)}" when :alert redirect_to redirect_path, alert: "Une erreur a empêché l’ajout du tampon. Réessayez dans quelques instants." end end end end