summaryrefslogtreecommitdiff
path: root/billing
diff options
context:
space:
mode:
authorjessib <jessib@leap.se>2013-04-01 11:35:10 -0700
committerAzul <azul@leap.se>2013-07-17 10:47:12 +0200
commitbee5c4a93f6bf664609673d7e703476f15147fe3 (patch)
treeff57a2267399dc22636eb2e328de7a56d4d123ae /billing
parentc436fce774573d090ab77617dbf55b25b2da4ea2 (diff)
Some tweaks to optimize number of requests to braintree API.
Diffstat (limited to 'billing')
-rw-r--r--billing/app/controllers/customer_controller.rb10
-rw-r--r--billing/app/controllers/payments_controller.rb2
-rw-r--r--billing/app/models/customer.rb9
3 files changed, 11 insertions, 10 deletions
diff --git a/billing/app/controllers/customer_controller.rb b/billing/app/controllers/customer_controller.rb
index 8b4b124..9ad6d93 100644
--- a/billing/app/controllers/customer_controller.rb
+++ b/billing/app/controllers/customer_controller.rb
@@ -11,11 +11,11 @@ class CustomerController < BillingBaseController
end
def edit
- if (params[:id] == Customer.find_by_user_id(current_user.id).braintree_customer_id)
+ if ((customer = Customer.find_by_user_id(current_user.id)) and
+ (params[:id] == customer.braintree_customer_id))
#current_customer.with_braintree_data!
- # @credit_card = current_customer.default_credit_card
- @braintree_data = Braintree::Customer.find(params[:id])
- @default_cc = @braintree_data.credit_cards.find { |cc| cc.default? }
+ @braintree_data = Braintree::Customer.find(params[:id]) #used in editing form
+ @default_cc = customer.default_credit_card(@braintree_data)
@tr_data = Braintree::TransparentRedirect.
update_customer_data(:redirect_url => confirm_customer_url,
:customer_id => params[:id])
@@ -37,7 +37,7 @@ class CustomerController < BillingBaseController
render :action => "confirm"
#elsif current_user.has_payment_info?
elsif (customer = Customer.find_by_user_id(current_user.id)) and customer.has_payment_info?
- customer.with_braintree_data! #todo
+ #customer.with_braintree_data!
render :action => "edit"
else
render :action => "new"
diff --git a/billing/app/controllers/payments_controller.rb b/billing/app/controllers/payments_controller.rb
index 965e417..41b7b3e 100644
--- a/billing/app/controllers/payments_controller.rb
+++ b/billing/app/controllers/payments_controller.rb
@@ -3,7 +3,7 @@ class PaymentsController < ApplicationController
if current_user
if @customer = Customer.find_by_user_id(current_user.id)
@braintree_data = Braintree::Customer.find(@customer.braintree_customer_id)
- @default_cc = @braintree_data.credit_cards.find { |cc| cc.default? }
+ @default_cc = @customer.default_credit_card(@braintree_data)
@tr_data = transparent_redirect(@customer.braintree_customer_id)
else
redirect_to new_customer_path
diff --git a/billing/app/models/customer.rb b/billing/app/models/customer.rb
index 0fc3751..8085d32 100644
--- a/billing/app/models/customer.rb
+++ b/billing/app/models/customer.rb
@@ -16,21 +16,22 @@ class Customer < CouchRest::Model::Base
end
# from braintree_ruby_examples/rails3_tr_devise and should be tweaked
+=begin
def with_braintree_data!
return self unless has_payment_info?
braintree_data = Braintree::Customer.find(braintree_customer_id)
- debugger
#FIELDS.each do |field|
# send(:"#{field}=", braintree_data.send(field))
#end
self
end
+=end
- ##??
- def default_credit_card
+ #slow to get Braintree Customer data, so pass it if have already retrieved it
+ def default_credit_card(braintree_data = nil)
return unless has_payment_info?
- braintree_data = Braintree::Customer.find(braintree_customer_id)
+ braintree_data = braintree_data || Braintree::Customer.find(braintree_customer_id)
braintree_data.credit_cards.find { |cc| cc.default? }
end