Class: SpreeCmCommissioner::GuestIdCardManager

Inherits:
BaseInteractor show all
Defined in:
app/interactors/spree_cm_commissioner/guest_id_card_manager.rb

Instance Method Summary collapse

Instance Method Details

#callObject



5
6
7
8
9
10
11
12
13
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 5

def call
  if guest.id_card.blank? && front_image_url.present?
    create_guest_id_card
  elsif guest.id_card.present?
    update_guest_id_card
  else
    context.fail!(message: 'Image url can not be empty')
  end
end

#create_guest_id_cardObject



15
16
17
18
19
20
21
22
23
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 15

def create_guest_id_card
  id_card = guest.build_id_card(card_type: card_type)

  manage_front_image(id_card)
  manage_back_image(id_card) if back_image_url.present?

  context.fail!(message: 'Failed to create Id card') unless context.success? && id_card.save
  context.result = guest.id_card
end

#guestObject



34
35
36
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 34

def guest
  SpreeCmCommissioner::Guest.find(guest_id)
end

#manage_back_image(id_card) ⇒ Object



52
53
54
55
56
57
58
59
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 52

def manage_back_image(id_card)
  context = SpreeCmCommissioner::IdCardImageUpdater.call(
    id_card: id_card,
    image_url: back_image_url,
    type: 'back_image'
  )
  context.fail!(message: 'Failed to update back image') unless context.success?
end

#manage_card_type(id_card) ⇒ Object



38
39
40
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 38

def manage_card_type(id_card)
  id_card.update(card_type: card_type)
end

#manage_front_image(id_card) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 42

def manage_front_image(id_card)
  context = SpreeCmCommissioner::IdCardImageUpdater.call(
    id_card: id_card,
    image_url: front_image_url,
    type: 'front_image'
  )

  context.fail!(message: 'Failed to update front image') unless context.success?
end

#update_guest_id_cardObject



25
26
27
28
29
30
31
32
# File 'app/interactors/spree_cm_commissioner/guest_id_card_manager.rb', line 25

def update_guest_id_card
  manage_card_type(guest.id_card) if card_type.present?
  manage_front_image(guest.id_card) if front_image_url.present?
  manage_back_image(guest.id_card) if back_image_url.present?

  context.fail!(message: 'Failed to update Id card') unless context.success? && guest.id_card.save
  context.result = guest.id_card
end