Class: SolidusMe::Label

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
app/models/solidus_me/label.rb

Instance Method Summary collapse

Instance Method Details

#add_to_cart!Object



57
58
59
60
61
62
63
64
# File 'app/models/solidus_me/label.rb', line 57

def add_to_cart!
  cart_response = build_cart_request
  update!(
    external_id: cart_response.id,
    price: cart_response.price,
    status: cart_response.status
  )
end

#can_generate?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/solidus_me/label.rb', line 34

def can_generate?
  paid?
end

#can_pay?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/models/solidus_me/label.rb', line 30

def can_pay?
  pending?
end

#can_print?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/solidus_me/label.rb', line 38

def can_print?
  generated?
end

#completed?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/solidus_me/label.rb', line 26

def completed?
  status == 'completed_label'
end

#current_stepObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/solidus_me/label.rb', line 42

def current_step
  case status
  when "pending"
    2
  when "paid"
    3
  when "generated_label"
    4
  when "completed_label"
    5
  else
    1
  end
end

#generate!Object



76
77
78
79
80
81
82
# File 'app/models/solidus_me/label.rb', line 76

def generate!
  raise "Cannot generate label in #{status} status" unless can_generate?
  
  me_client.generate_label(external_id)
  update!(status: 'generated_label')
  touch(:generated_at)
end

#generated?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'app/models/solidus_me/label.rb', line 22

def generated?
  status == 'generated_label'
end

#paid?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'app/models/solidus_me/label.rb', line 18

def paid?
  status == 'paid'
end

#pay!Object



66
67
68
69
70
71
72
73
74
# File 'app/models/solidus_me/label.rb', line 66

def pay!
  raise "Cannot pay label in #{status} status" unless can_pay?
  
  payment_response = me_client.pay_label(external_id)
  update!(
    status: payment_response.purchase.status,
    paid_at: payment_response.purchase.paid_at
  )
end

#pending?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'app/models/solidus_me/label.rb', line 14

def pending?
  status == 'pending'
end

#print!Object



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/models/solidus_me/label.rb', line 84

def print!
  raise "Cannot print label in #{status} status" unless can_print?

  print_response = me_client.print_label(external_id)
  get_response = me_client.get_label(external_id)
  
  update!(
    status: 'completed_label',
    link: print_response.first,
    tracking_code: get_response.self_tracking
  )
  touch(:completed_at)
end