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
|
# File 'app/services/spree_cm_commissioner/invite_guests/bulk_create.rb', line 6
def call(invite_guest_group_id:, quantity:, invite_guest_attributes:, invite_context:)
invite_guest_group = SpreeCmCommissioner::InviteGuestGroup.find_by(id: invite_guest_group_id)
return failure(nil, 'Invite guest group not found') unless invite_guest_group
return failure(nil, 'Quantity must be greater than 0') if quantity.to_i <= 0
context = invite_context.respond_to?(:to_h) ? invite_context.to_h : {}
variant_id = context[:variant_id] || context['variant_id']
event_id = context[:event_id] || context['event_id']
invite_guest_group.update!(processing_status: :processing)
invite_guest_params = invite_guest_attributes.respond_to?(:to_h) ? invite_guest_attributes.to_h : {}
created_invite_guests = create_invite_guests_in_transaction(
invite_guest_group_id: invite_guest_group.id,
quantity: quantity,
invite_guest_params: invite_guest_params,
invite_context: context
)
mark_group_completed(invite_guest_group, created_invite_guests, quantity, variant_id, event_id)
success(invite_guests: created_invite_guests)
rescue StandardError => e
mark_group_failed(invite_guest_group, e, quantity, variant_id, event_id)
failure(nil, e.message)
end
|