# frozen_string_literal: true

module Decidim
  module ActionDelegator
    module Admin
      class SettingForm < Form
        mimic :setting

        attribute :max_grants, Integer
        attribute :decidim_consultation_id, Integer
        attribute :authorization_method, String
        attribute :copy_from_setting_id, Integer

        validates :max_grants, :decidim_consultation_id, presence: true
        validate :consultation_uniqueness

        # TODO: validate consultation vote starting in the future
        def consultation_uniqueness
          errors.add(:decidim_consultation_id, :taken) if record.exists?(decidim_consultation_id: decidim_consultation_id)
        end

        def record
          Setting.where.not(id: id)
        end
      end
    end
  end
end