Sha256: 437dd1ec7d17044502ae0931d2ad0b925c617c94f2897ba877f3dfa45c5bb7d5
Contents?: true
Size: 1.59 KB
Versions: 13
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true module Decidim module Results module Admin # This command is executed when the user creates a Result from the admin # panel. class CreateResult < Rectify::Command def initialize(form) @form = form end # Creates the result if valid. # # Broadcasts :ok if successful, :invalid otherwise. def call return broadcast(:invalid) if @form.invalid? transaction do create_result link_meetings link_proposals end broadcast(:ok) end private attr_reader :result def create_result @result = Result.create!( scope: @form.scope, category: @form.category, feature: @form.current_feature, title: @form.title, description: @form.description ) end def proposals @proposals ||= result.sibling_scope(:proposals).where(id: @form.proposal_ids) end def meeting_ids @meeting_ids ||= proposals.flat_map do |proposal| proposal.linked_resources(:meetings, "proposals_from_meeting").pluck(:id) end.uniq end def meetings @meetings ||= result.sibling_scope(:meetings).where(id: meeting_ids) end def link_proposals result.link_resources(proposals, "included_proposals") end def link_meetings result.link_resources(meetings, "meetings_through_proposals") end end end end end
Version data entries
13 entries across 13 versions & 2 rubygems