module Amendmenable
  extend ActiveSupport::Concern

  included do
    include ActiveStorageSupport::SupportForBase64

    has_one_base64_attached :amendment_signature

    with_options on: :amendment do
      validates :amendment_signer_name, presence: true
      validates :amendment_signature, attached: true
    end
  end

  def amendment_signable?
    contract_template.present? && contract_template.amendment_clause.present?
  end

  def amendment_signed?
    amendment_signature.attached?
  end

  def amendment_signature_base64
    nil
  end

  def amendment_signature_base64=(data_uri)
    return if data_uri.blank?

    amendment_signature.attach(data: data_uri, filename: "amendment_signature.png", content_type: "image/png", identify: "false")
  end
end
