Sha256: 33d71a20e611e936542caee3154457958d6a935c9342d847fdeee6ea17b240d0

Contents?: true

Size: 1.06 KB

Versions: 8

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Decidim
  module Debates
    # This class holds a Form to close debates from Decidim's public views.
    class CloseDebateForm < Decidim::Form
      mimic :debate

      attribute :conclusions, String
      attribute :debate, Debate

      validates :debate, presence: true
      validates :conclusions, presence: true, length: { minimum: 10, maximum: 10_000 }
      validate :user_can_close_debate

      def closed_at
        debate&.closed_at || Time.current
      end

      def map_model(debate)
        super
        self.debate = debate

        # Debates can be translated in different languages from the admin but
        # the public form doesn't allow it. When a user closes a debate the
        # user locale is taken as the text locale.
        self.conclusions = debate.conclusions&.values&.first
      end

      private

      def user_can_close_debate
        return if !debate || !debate.respond_to?(:closeable_by?)

        errors.add(:debate, :invalid) unless debate.closeable_by?(current_user)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-debates-0.23.6 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.5 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.4 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.3 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.1.rc1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.23.0 app/forms/decidim/debates/close_debate_form.rb