Class: SpreeCmCommissioner::OrderImporter::SingleGuest

Inherits:
BaseInteractor
  • Object
show all
Defined in:
app/interactors/spree_cm_commissioner/order_importer/single_guest.rb

Instance Method Summary collapse

Instance Method Details

#callObject



6
7
8
9
10
11
12
# File 'app/interactors/spree_cm_commissioner/order_importer/single_guest.rb', line 6

def call
  return context.fail!(message: 'variant_id_is_required') if params[:variant_id].blank?
  return context.fail!(message: 'email_or_phone_is_required') if params[:order_email].blank? && params[:order_phone_number].blank?

  context.order = construct_order
  context.fail!(message: order.errors.full_messages.to_sentence) unless context.order.save
end

#construct_orderObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/interactors/spree_cm_commissioner/order_importer/single_guest.rb', line 14

def construct_order
  guest_params = params.slice(*SpreeCmCommissioner::Guest.csv_importable_columns)
  guest_params[:token] = guest_token if guest_token.present?

  Spree::Order.new(
    email: params[:order_email],
    phone_number: params[:order_phone_number],
    completed_at: Date.current,
    state: 'complete',
    payment_state: 'paid',
    line_items_attributes: [
      {
        quantity: 1,
        variant_id: params[:variant_id],
        guests_attributes: [
          guest_params
        ]
      }
    ]
  )
end