class ContractTemplates::QrCodesController < ApplicationController
  before_action :set_contract_template

  def show
    send_file qr_code.to_png, download_attributes
  end

  private

  def contract_templates
    policy_scope(ContractTemplate)
  end

  def set_contract_template
    @contract_template = contract_templates.find(params[:contract_template_id])
  end

  def qr_code
    if params[:multi_sign_ids].present?
      contract_templates_group = authorize contract_templates.where(id: params[:multi_sign_ids]).order_by_recent
      authorize QrCode.build_from_multiple_contract_templates(contract_templates_group, @contract_template.project)
    else
      authorize QrCode.build_from_contract_template(@contract_template)
    end
  end

  def download_attributes
    {
      filename: qr_code.filename,
      type: "image/png",
    }
  end
end
