Class: BraintreeRails::TransactionValidator
- Inherits:
-
Validator
- Object
- ActiveModel::Validator
- Validator
- BraintreeRails::TransactionValidator
show all
- Defined in:
- lib/braintree_rails/transaction_validator.rb
Constant Summary
collapse
- Validations =
[:amount, :presence => true, :numericality => {:greater_than_or_equal_to => 0}, :if => :new_record?],
[:type, :presence => true, :inclusion => {:in => %w(sale credit)}, :if => :new_record?],
[:status, :inclusion => {:in => [Braintree::Transaction::Status::Authorized]}, :on => :submit_for_settlement],
[:status, :inclusion => {:in => [Braintree::Transaction::Status::Settled, Braintree::Transaction::Status::Settling]}, :on => :refund],
[:status, :inclusion => {:in => [Braintree::Transaction::Status::Authorized, Braintree::Transaction::Status::SubmittedForSettlement]}, :on => :void]
Instance Method Summary
collapse
Methods inherited from Validator
collect_validations, default_validations, model_class, reset_validations, set_validations, setup
Instance Method Details
#must_have_credit_card(transaction) ⇒ Object
22
23
24
25
26
27
28
|
# File 'lib/braintree_rails/transaction_validator.rb', line 22
def must_have_credit_card(transaction)
if transaction.credit_card.blank?
validate_customer_have_default_credit_card(transaction)
elsif transaction.credit_card.new_record?
validate_new_credit_card(transaction)
end
end
|
#setup ⇒ Object
11
12
13
14
15
16
|
# File 'lib/braintree_rails/transaction_validator.rb', line 11
def setup(*)
self.class.model_class.class_eval do
define_model_callbacks :submit_for_settlement, :refund, :void
end
super
end
|
#validate(transaction) ⇒ Object
18
19
20
|
# File 'lib/braintree_rails/transaction_validator.rb', line 18
def validate(transaction)
must_have_credit_card(transaction) if transaction.new_record?
end
|
#validate_customer_have_default_credit_card(transaction) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/braintree_rails/transaction_validator.rb', line 30
def validate_customer_have_default_credit_card(transaction)
if transaction.customer.blank?
transaction.errors.add(:base, "Either customer or credit card is required")
elsif transaction.customer.default_credit_card.blank?
transaction.errors.add(:base, "Customer does not have a default credit card")
end
end
|
#validate_new_credit_card(transaction) ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/braintree_rails/transaction_validator.rb', line 38
def validate_new_credit_card(transaction)
transaction.credit_card.billing_address = transaction.billing
if transaction.credit_card.invalid?
transaction.credit_card.errors.full_messages.each do |message|
transaction.errors.add(:base, message)
end
end
end
|