From a00470d0c046774edc94ef01ef9bc590e8d58ac9 Mon Sep 17 00:00:00 2001 From: jessib Date: Tue, 7 May 2013 11:32:11 -0700 Subject: Display 3 most recent transactions on a customer's page, with a link to all of their transactions. --- billing/app/controllers/customers_controller.rb | 6 ------ billing/app/controllers/payments_controller.rb | 8 ++++++++ billing/app/views/customers/_transaction.html.haml | 15 --------------- billing/app/views/customers/show.html.haml | 10 ++++++++-- billing/app/views/payments/_transaction_details.html.haml | 15 +++++++++++++++ billing/app/views/payments/index.html.haml | 2 ++ 6 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 billing/app/views/payments/_transaction_details.html.haml create mode 100644 billing/app/views/payments/index.html.haml (limited to 'billing/app') diff --git a/billing/app/controllers/customers_controller.rb b/billing/app/controllers/customers_controller.rb index b0184af..2532334 100644 --- a/billing/app/controllers/customers_controller.rb +++ b/billing/app/controllers/customers_controller.rb @@ -5,12 +5,6 @@ class CustomersController < BillingBaseController def show @active_subscription = @customer.subscriptions(@braintree_data) - # UGLY Braintree::ResourceCollection to array. - # might want method - @transactions = [] - @braintree_data.transactions.each do |transaction| - @transactions << transaction - end end def new diff --git a/billing/app/controllers/payments_controller.rb b/billing/app/controllers/payments_controller.rb index 49a0c8a..89fdeb0 100644 --- a/billing/app/controllers/payments_controller.rb +++ b/billing/app/controllers/payments_controller.rb @@ -1,4 +1,6 @@ class PaymentsController < ApplicationController + before_filter :authorize, :only => [:index] + def new if current_user if @customer = Customer.find_by_user_id(current_user.id) @@ -25,6 +27,12 @@ class PaymentsController < ApplicationController end end + def index + customer = Customer.find_by_user_id(current_user.id) + braintree_data = Braintree::Customer.find(customer.braintree_customer_id) + @transactions = braintree_data.transactions + end + protected def transparent_redirect(braintree_customer_id = nil) diff --git a/billing/app/views/customers/_transaction.html.haml b/billing/app/views/customers/_transaction.html.haml index 53483d9..e69de29 100644 --- a/billing/app/views/customers/_transaction.html.haml +++ b/billing/app/views/customers/_transaction.html.haml @@ -1,15 +0,0 @@ -%p - = transaction.id - Type: - = transaction.type - Amount: - = number_to_currency(transaction.amount) - Status: - = transaction.status - Date - = transaction.created_at - - if sub_start = transaction.subscription_details.billing_period_start_date - From subscription which started - = sub_start - - else - Not paid as part of subscription \ No newline at end of file diff --git a/billing/app/views/customers/show.html.haml b/billing/app/views/customers/show.html.haml index b36ebaf..1e4c5ae 100644 --- a/billing/app/views/customers/show.html.haml +++ b/billing/app/views/customers/show.html.haml @@ -1,7 +1,13 @@ = render :partial => 'payments/customer_data' = link_to 'Make Payment', new_payment_path, :class => :btn -%h3 Transaction History -= render(:partial => "transaction", :collection => @transactions) # show subset with link to see more +%h3 Last three transactions +- counter = 0 += # asked http://stackoverflow.com/questions/16425475/order-of-transactions-returned-by-braintree-api to confirm order will always be most recent first +- @braintree_data.transactions.each do |t| + - break if counter > 2 # not ruby-like, but object is a Braintree::ResourceCollection so limited methods available + = render :partial => "payments/transaction_details", :locals => {:transaction => t} + - counter += 1 += link_to 'Transaction History', payments_path - if @active_subscription %h3 Active Subscription = render :partial => "subscriptions/subscription_details", :locals => {:subscription => @active_subscription} diff --git a/billing/app/views/payments/_transaction_details.html.haml b/billing/app/views/payments/_transaction_details.html.haml new file mode 100644 index 0000000..53483d9 --- /dev/null +++ b/billing/app/views/payments/_transaction_details.html.haml @@ -0,0 +1,15 @@ +%p + = transaction.id + Type: + = transaction.type + Amount: + = number_to_currency(transaction.amount) + Status: + = transaction.status + Date + = transaction.created_at + - if sub_start = transaction.subscription_details.billing_period_start_date + From subscription which started + = sub_start + - else + Not paid as part of subscription \ No newline at end of file diff --git a/billing/app/views/payments/index.html.haml b/billing/app/views/payments/index.html.haml new file mode 100644 index 0000000..a3ad067 --- /dev/null +++ b/billing/app/views/payments/index.html.haml @@ -0,0 +1,2 @@ +- @transactions.each do |t| + = render :partial => "transaction_details", :locals => {:transaction => t} \ No newline at end of file -- cgit v1.2.3