Class: TicketService::Form

Inherits:
ApplicationService
  • Object
show all
Includes:
DefaultErrorContainer
Defined in:
app/services/ticket_service/form.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from DefaultErrorContainer

#error, #error_message_simple, #merge_errors

Constructor Details

#initialize(params, user = nil) ⇒ Form

Returns a new instance of Form.



5
6
7
8
9
# File 'app/services/ticket_service/form.rb', line 5

def initialize(params, user = nil)
  @user   = user
  @params = params
  @locking_system = false
end

Instance Attribute Details

#codeObject

Returns the value of attribute code.



3
4
5
# File 'app/services/ticket_service/form.rb', line 3

def code
  @code
end

#locking_systemObject

Returns the value of attribute locking_system.



3
4
5
# File 'app/services/ticket_service/form.rb', line 3

def locking_system
  @locking_system
end

#paramsObject

Returns the value of attribute params.



3
4
5
# File 'app/services/ticket_service/form.rb', line 3

def params
  @params
end

#transaction_idObject

Returns the value of attribute transaction_id.



3
4
5
# File 'app/services/ticket_service/form.rb', line 3

def transaction_id
  @transaction_id
end

#userObject

Returns the value of attribute user.



3
4
5
# File 'app/services/ticket_service/form.rb', line 3

def user
  @user
end

Instance Method Details

#alipay?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'app/services/ticket_service/form.rb', line 52

def alipay?
  payment_type_param.to_s == 'alipay_plus'
end

#cc_tokenObject



44
45
46
# File 'app/services/ticket_service/form.rb', line 44

def cc_token
  omise_token_param.presence || gb_primepay_card_param
end

#credit_card?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'app/services/ticket_service/form.rb', line 68

def credit_card?
  payment_type_param.to_s == 'credit_card'
end

#enable_locking_systemObject



11
12
13
# File 'app/services/ticket_service/form.rb', line 11

def enable_locking_system
  @locking_system = true
end

#gb_primepay_card_paramObject



80
81
82
# File 'app/services/ticket_service/form.rb', line 80

def gb_primepay_card_param
  params[:gb_primepay_card]
end

#omise_token_paramObject



84
85
86
# File 'app/services/ticket_service/form.rb', line 84

def omise_token_param
  params[:omise_token]
end

#payment_type_paramObject



76
77
78
# File 'app/services/ticket_service/form.rb', line 76

def payment_type_param
  params[:payment_type]
end

#promptpay?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'app/services/ticket_service/form.rb', line 48

def promptpay?
  payment_type_param.to_s == 'promptpay'
end

#shopee_pay?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'app/services/ticket_service/form.rb', line 64

def shopee_pay?
  payment_type_param.to_s == 'shopee_pay'
end

#transaction_attributesObject

Raises:

  • (InvalidVoucherPurchase)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/services/ticket_service/form.rb', line 29

def transaction_attributes
  raise InvalidVoucherPurchase unless valid?

  if locking_system
    builded_tickets = build_tickets
    {
      tickets_attributes: builded_tickets[:ticket_attrs],
      ticket_bundles_attributes: builded_tickets[:ticket_bundle_attrs],
      total_price: builded_tickets[:total_price_transaction],
    }
  else
    { guest: guest_user, user: user }.merge(ticket_transaction_params)
  end
end

#true_wallet?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'app/services/ticket_service/form.rb', line 60

def true_wallet?
  payment_type_param.to_s == 'true_wallet'
end

#valid?Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/ticket_service/form.rb', line 15

def valid?
  errors.clear

  if locking_system
    validate_locking_system_params
  else
    validate_transaction
  end

  return false if errors.present?

  true
end

#vendor_payment?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'app/services/ticket_service/form.rb', line 72

def vendor_payment?
  payment_type_param.to_s == 'vendor_payment'
end

#wechat_pay?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'app/services/ticket_service/form.rb', line 56

def wechat_pay?
  payment_type_param.to_s == 'wechat_pay'
end