Class: Workarea::LogGiftCardRedemption

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::CallbacksWorker, Sidekiq::Worker
Defined in:
app/workers/workarea/log_gift_card_redemption.rb

Instance Method Summary collapse

Instance Method Details

#perform(order_id) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/workers/workarea/log_gift_card_redemption.rb', line 13

def perform(order_id)
  order = Order.find(order_id)

  payment = Payment.find_or_initialize_by(id: order.id)
  return unless payment.gift_card?

  payment.gift_cards.each do |tender|
    gift_card = Payment::GiftCard.find_by_token(tender.number)
    next if redemption_already_exists?(gift_card, order.id)

    gift_card.redemptions.create!(
      redeemed_at: order.placed_at,
      amount: tender.amount,
      order_id: order.id
    )

    gift_card.touch
  end
end