Class: SpreeCmCommissioner::InviteGuestGroups::Create

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/invite_guest_groups/create.rb

Instance Method Summary collapse

Instance Method Details

#call(invite_guest_group_attributes:, invite_guest_attributes:, variant_id:, event_id:, user_id: nil) ⇒ Object

This service will create the group and enqueue a background job to create sub invite guests.



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_guest_groups/create.rb', line 7

def call(invite_guest_group_attributes:, invite_guest_attributes:, variant_id:, event_id:, user_id: nil)
  @variant_id = variant_id
  @event_id = event_id
  @invite_guest_params = invite_guest_attributes.to_h
  @user_id = user_id

  begin
    @invite_guest_group = create_invite_guest_group!(invite_guest_group_attributes)
    # Enqueue background job to create sub invite guests and orders
    # Pass the group's quantity so the background job can call the BulkCreate service
    SpreeCmCommissioner::InviteGuests::BulkCreateJob.perform_later(
      invite_guest_group_id: @invite_guest_group.id,
      quantity: @invite_guest_group.quantity,
      variant_id: @variant_id,
      event_id: @event_id,
      invite_guest_params: @invite_guest_params,
      user_id: @user_id
    )

    success(invite_guest_group: @invite_guest_group)
  rescue StandardError => e
    failure(nil, e.message)
  end
end