Sha256: 1edc3090b1186ae85055a565b45d858aa45ee9ee65688c5c60a98ff69f8a4ba3

Contents?: true

Size: 1.3 KB

Versions: 7

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Decidim
  module Meetings
    # This class holds a Form to close a meeting from Decidim's public views.
    class CloseMeetingForm < Decidim::Form
      attribute :closing_report, String
      attribute :proposal_ids, Array[Integer]
      attribute :proposals
      attribute :closed_at, Decidim::Attributes::TimeWithZone, default: ->(_form, _attribute) { Time.current }
      attribute :attendees_count, Integer, default: 0

      validates :closing_report, presence: true
      validates :attendees_count,
                presence: true,
                numericality: { greater_than_or_equal_to: 0, only_integer: true }

      # Private: Gets the proposals from the meeting and injects them to the form.
      #
      # Returns nothing.
      def map_model(model)
        self.proposal_ids = model.linked_resources(:proposals, "proposals_from_meeting").pluck(:id)
        presenter = MeetingPresenter.new(model)
        self.closing_report = presenter.closing_report(all_locales: false)
      end

      def proposals
        @proposals ||= Decidim.find_resource_manifest(:proposals)
                              .try(:resource_scope, current_component)
                              &.where(id: proposal_ids)
                              &.order(title: :asc)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
decidim-meetings-0.25.2 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.1 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.0 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.0.rc4 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.0.rc3 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.0.rc2 app/forms/decidim/meetings/close_meeting_form.rb
decidim-meetings-0.25.0.rc1 app/forms/decidim/meetings/close_meeting_form.rb