summaryrefslogtreecommitdiff
path: root/billing/app
diff options
context:
space:
mode:
authorjessib <jessib@leap.se>2013-04-09 13:51:02 -0700
committerAzul <azul@leap.se>2013-07-17 10:47:12 +0200
commit981179a58d47589f8444347856c1e8acce1f91d1 (patch)
treed5c558e289ddd8160fc97ae986b0a1dea5feb003 /billing/app
parentbee5c4a93f6bf664609673d7e703476f15147fe3 (diff)
Display of subscription information on a customer's edit page. It is *super* slow. Posted stackoverflow question as not clear if there is more efficient way to get this information via braintree API.
Diffstat (limited to 'billing/app')
-rw-r--r--billing/app/controllers/customer_controller.rb10
-rw-r--r--billing/app/controllers/subscriptions_controller.rb3
-rw-r--r--billing/app/views/customer/_subscription.html.haml13
-rw-r--r--billing/app/views/customer/edit.html.haml5
4 files changed, 31 insertions, 0 deletions
diff --git a/billing/app/controllers/customer_controller.rb b/billing/app/controllers/customer_controller.rb
index 9ad6d93..06d1cb1 100644
--- a/billing/app/controllers/customer_controller.rb
+++ b/billing/app/controllers/customer_controller.rb
@@ -19,6 +19,16 @@ class CustomerController < BillingBaseController
@tr_data = Braintree::TransparentRedirect.
update_customer_data(:redirect_url => confirm_customer_url,
:customer_id => params[:id])
+ @subscriptions = Array.new
+
+ # SUPER SLOW :(
+ # asked question to see about optimizing: http://stackoverflow.com/questions/15910980/retrieving-a-braintree-customers-subscriptions
+ transactions = @braintree_data.transactions
+ transactions.each do |cust_transaction|
+ transaction = Braintree::Transaction.find(cust_transaction.id) if (cust_transaction and cust_transaction.id) # why is cust_transaction nil in cases?
+ subscription = Braintree::Subscription.find(transaction.subscription_id) if (transaction and transaction.subscription_id)
+ @subscriptions << subscription if subscription and subscription.status == 'Active'
+ end
else
# TODO: will want to have case for admins, presumably
access_denied
diff --git a/billing/app/controllers/subscriptions_controller.rb b/billing/app/controllers/subscriptions_controller.rb
index fcf5ecb..38b17b4 100644
--- a/billing/app/controllers/subscriptions_controller.rb
+++ b/billing/app/controllers/subscriptions_controller.rb
@@ -2,12 +2,15 @@ class SubscriptionsController < ApplicationController
before_filter :authorize
def new
+ # don't show link to subscribe if they are already subscribed?
customer = Customer.find_by_user_id(current_user.id)
+
@payment_method_token = customer.default_credit_card.token
@plans = Braintree::Plan.all
end
+
def create
@result = Braintree::Subscription.create( :payment_method_token => params[:payment_method_token], :plan_id => params[:plan_id] )
end
diff --git a/billing/app/views/customer/_subscription.html.haml b/billing/app/views/customer/_subscription.html.haml
new file mode 100644
index 0000000..f2a0410
--- /dev/null
+++ b/billing/app/views/customer/_subscription.html.haml
@@ -0,0 +1,13 @@
+%p
+ = subscription.id
+ Balance:
+ = number_to_currency(subscription.balance)
+ Bill on:
+ = subscription.billing_day_of_month
+ Start date:
+ = subscription.first_billing_date
+ Paid through
+ = subscription.paid_through_date
+ Price
+ = subscription.price
+ - # would be good to get plan name but not sure if that is possible? \ No newline at end of file
diff --git a/billing/app/views/customer/edit.html.haml b/billing/app/views/customer/edit.html.haml
index 25dfc79..0f37e61 100644
--- a/billing/app/views/customer/edit.html.haml
+++ b/billing/app/views/customer/edit.html.haml
@@ -17,5 +17,10 @@
Default Credit Card
= @default_cc.masked_number
= # (#{link_to @default_cc.token, edit_credit_card_info_path(:id => @default_cc.token)})
+ - if @subscriptions.any?
+ %li
+ Active Subscriptions
+ = render(:partial => "subscription", :collection => @subscriptions)
+
= hidden_field_tag :tr_data, @tr_data
= f.submit 'Save Payment Info' \ No newline at end of file