Sha256: f12fea355f6388fb2472051efda6f6a1c25bfac634de4e435f696552d3abc744

Contents?: true

Size: 1.77 KB

Versions: 4

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

module Decidim
  module Initiatives
    module Admin
      # A form object used to show the initiative data in the administration
      # panel.
      class InitiativeForm < Form
        include TranslatableAttributes

        mimic :initiative

        translatable_attribute :title, String
        translatable_attribute :description, String
        attribute :type_id, Integer
        attribute :decidim_scope_id, Integer
        attribute :signature_type, String
        attribute :signature_start_date, Date
        attribute :signature_end_date, Date
        attribute :hashtag, String
        attribute :offline_votes, Integer

        translatable_attribute :answer, String
        attribute :answer_url, String

        validates :title, :description, presence: true
        validates :signature_type, presence: true
        validates :signature_start_date, presence: true, if: ->(form) { form.context.initiative.published? }
        validates :signature_end_date, presence: true, if: ->(form) { form.context.initiative.published? }
        validates :signature_end_date, date: { after: :signature_start_date }, if: lambda { |form|
          form.signature_start_date.present? && form.signature_end_date.present?
        }

        validates :answer, translatable_presence: true, if: ->(form) { form.context.initiative.accepted? }
        validates :answer_url, presence: true, if: ->(form) { form.context.initiative.accepted? }

        validates :offline_votes,
                  numericality: {
                    only_integer: true,
                    greater_than: 0
                  }, allow_blank: true

        def map_model(model)
          self.type_id = model.type.id
          self.decidim_scope_id = model.scope.id
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-initiatives-0.14.4 app/forms/decidim/initiatives/admin/initiative_form.rb
decidim-initiatives-0.14.3 app/forms/decidim/initiatives/admin/initiative_form.rb
decidim-initiatives-0.14.2 app/forms/decidim/initiatives/admin/initiative_form.rb
decidim-initiatives-0.14.1 app/forms/decidim/initiatives/admin/initiative_form.rb