-
Notifications
You must be signed in to change notification settings - Fork 6
/
create_event.rb
30 lines (25 loc) · 1015 Bytes
/
create_event.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true
class Mutations::CreateEvent < Mutations::BaseMutation
field :event, Types::EventType, null: false
argument :event, Types::EventInputType, required: true
argument :signed_image_blob_ids, [ID], required: false
authorize_create_convention_associated_model :events
def resolve(signed_image_blob_ids: nil, **args)
event_attrs = args[:event].to_h.merge(updated_by: user_con_profile.user).stringify_keys
form_response_attrs = JSON.parse(event_attrs.delete('form_response_attrs_json'))
event = convention.events.new(event_attrs)
event.assign_form_response_attributes(
event.filter_form_response_attributes_for_assignment(
form_response_attrs,
event.event_category.event_form.form_items,
context[:pundit_user]
)
)
(signed_image_blob_ids || []).each do |signed_blob_id|
blob = ActiveStorage::Blob.find_signed!(signed_blob_id)
event.images.attach(blob)
end
event.save!
{ event: event }
end
end