Sha256: fd6dcc22f32f165a33d02994c8b97316d024b2396487cfac6f932f4be2e5bcb9

Contents?: true

Size: 1.09 KB

Versions: 15

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 does not 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:)
      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

15 entries across 15 versions & 1 rubygems

Version Path
decidim-debates-0.29.2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.5 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.4 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.0 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.3 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.0.rc4 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.0.rc3 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.0.rc2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.29.0.rc1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.2 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.1 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.0 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.0.rc5 app/forms/decidim/debates/close_debate_form.rb
decidim-debates-0.28.0.rc4 app/forms/decidim/debates/close_debate_form.rb