Sha256: 46e15293c810684480516a9546763ed8c9f7bd52c383cd615d687f1af4e18797

Contents?: true

Size: 1.02 KB

Versions: 55

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Decidim
  module Proposals
    # A form object common to accept and reject actions requesters of Collaborative Drafts.
    class AccessToCollaborativeDraftForm < Decidim::Form
      mimic :collaborative_draft

      attribute :id, String
      attribute :requester_user_id, String
      attribute :state, String

      validates :id, :requester_user_id, presence: true
      validates :state, presence: true, inclusion: { in: %w(open) }

      validate :existence_of_requester_in_requesters

      def collaborative_draft
        @collaborative_draft ||= Decidim::Proposals::CollaborativeDraft.find id if id
      end

      def requester_user
        @requester_user ||= Decidim::User.find_by(id: requester_user_id, organization: current_organization) if requester_user_id
      end

      private

      def existence_of_requester_in_requesters
        errors.add(:requester_user_id, :invalid) if collaborative_draft && !collaborative_draft.requesters.exists?(requester_user_id)
      end
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
decidim-proposals-0.30.0.rc3 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.30.0.rc2 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.30.0.rc1 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.2 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.28.5 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.1 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.28.4 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.27.9 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.0 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.28.3 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.27.8 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.0.rc4 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.0.rc3 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.0.rc2 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.29.0.rc1 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.28.2 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.27.7 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.28.1 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.27.6 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
decidim-proposals-0.26.10 app/forms/decidim/proposals/access_to_collaborative_draft_form.rb