Sha256: 7e04b93d5a6add48a290f85de1ea6cd6e1801c13f311fc6242b693a7e2e93028

Contents?: true

Size: 1.09 KB

Versions: 12

Compression:

Stored size: 1.09 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, Decidim::Attributes::CleanString

      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

        # 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

      def debate
        @debate ||= Debate.find_by(id: id)
      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

12 entries across 12 versions & 1 rubygems

Version Path
decidim-debates-0.27.9 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.8 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.7 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.6 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.5 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.4 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.3 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.0 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.0.rc2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.27.0.rc1 app/forms/decidim/debates/close_debate_form.rb