From 87dc4f9d11af4610f534d57d5e51fabca9bb328a Mon Sep 17 00:00:00 2001 From: jessib Date: Mon, 10 Jun 2013 10:25:37 -0700 Subject: Back to singular-customer controller, in hopes that would help some confusions. --- billing/app/controllers/customer_controller.rb | 57 +++++++++++++++++++++ billing/app/controllers/customers_controller.rb | 58 ---------------------- billing/app/views/customer/_transaction.html.haml | 0 billing/app/views/customer/confirm.html.haml | 14 ++++++ billing/app/views/customer/edit.html.haml | 22 ++++++++ billing/app/views/customer/new.html.haml | 24 +++++++++ billing/app/views/customer/show.html.haml | 14 ++++++ billing/app/views/customers/_transaction.html.haml | 0 billing/app/views/customers/confirm.html.haml | 14 ------ billing/app/views/customers/edit.html.haml | 22 -------- billing/app/views/customers/new.html.haml | 24 --------- billing/app/views/customers/show.html.haml | 14 ------ billing/app/views/payments/confirm.html.haml | 2 +- billing/app/views/subscriptions/show.html.haml | 2 +- billing/config/routes.rb | 5 +- 15 files changed, 136 insertions(+), 136 deletions(-) create mode 100644 billing/app/controllers/customer_controller.rb delete mode 100644 billing/app/controllers/customers_controller.rb create mode 100644 billing/app/views/customer/_transaction.html.haml create mode 100644 billing/app/views/customer/confirm.html.haml create mode 100644 billing/app/views/customer/edit.html.haml create mode 100644 billing/app/views/customer/new.html.haml create mode 100644 billing/app/views/customer/show.html.haml delete mode 100644 billing/app/views/customers/_transaction.html.haml delete mode 100644 billing/app/views/customers/confirm.html.haml delete mode 100644 billing/app/views/customers/edit.html.haml delete mode 100644 billing/app/views/customers/new.html.haml delete mode 100644 billing/app/views/customers/show.html.haml (limited to 'billing') diff --git a/billing/app/controllers/customer_controller.rb b/billing/app/controllers/customer_controller.rb new file mode 100644 index 0000000..505aa6e --- /dev/null +++ b/billing/app/controllers/customer_controller.rb @@ -0,0 +1,57 @@ +class CustomerController < BillingBaseController + before_filter :authorize + before_filter :fetch_customer_data, :only => [:show, :edit] #confirm??? + + def show + @active_subscription = @customer.subscriptions(@braintree_data) + end + + def new + if customer = Customer.find_by_user_id(current_user.id) + redirect_to edit_customer_path(customer.braintree_customer_id), :notice => 'Here is your saved customer data' + else + @tr_data = Braintree::TransparentRedirect. + # create_customer_data(:redirect_url => confirm_customer_url(-1)) # trial + create_customer_data(:redirect_url => confirm_customer_url) + end + end + + def edit + @tr_data = Braintree::TransparentRedirect. + update_customer_data(:redirect_url => confirm_customer_url, + :customer_id => params[:id]) + end + + def confirm + @result = Braintree::TransparentRedirect.confirm(request.query_string) + if @result.success? + # customer = Customer.new(:user_id => current_user.id, :braintree_customer_id => @result.customer.id) + customer = Customer.new(:braintree_customer_id => @result.customer.id) + customer.user = current_user + customer.save + #current_user.save! + #debugger + 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! + render :action => "edit" + else + render :action => "new" + end + end + + private + + def fetch_customer_data + if ((@customer = Customer.find_by_user_id(current_user.id)) and + (params[:id] == @customer.braintree_customer_id)) + @braintree_data = Braintree::Customer.find(params[:id]) #used in editing form + @default_cc = @customer.default_credit_card(@braintree_data) + else + # TODO will want case for admins, presumably + access_denied + end + end + +end diff --git a/billing/app/controllers/customers_controller.rb b/billing/app/controllers/customers_controller.rb deleted file mode 100644 index 2532334..0000000 --- a/billing/app/controllers/customers_controller.rb +++ /dev/null @@ -1,58 +0,0 @@ -class CustomersController < BillingBaseController - before_filter :authorize - before_filter :fetch_customer_data, :only => [:show, :edit] - - - def show - @active_subscription = @customer.subscriptions(@braintree_data) - end - - def new - if customer = Customer.find_by_user_id(current_user.id) - redirect_to edit_customer_path(customer.braintree_customer_id), :notice => 'Here is your saved customer data' - else - @tr_data = Braintree::TransparentRedirect. - create_customer_data(:redirect_url => confirm_customer_url) - end - end - - def edit - @tr_data = Braintree::TransparentRedirect. - update_customer_data(:redirect_url => confirm_customer_url, - :customer_id => params[:id]) - end - - def confirm - @result = Braintree::TransparentRedirect.confirm(request.query_string) - - if @result.success? - # customer = Customer.new(:user_id => current_user.id, :braintree_customer_id => @result.customer.id) - customer = Customer.new(:braintree_customer_id => @result.customer.id) - customer.user = current_user - customer.save - #current_user.save! - 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! - render :action => "edit" - else - render :action => "new" - end - end - - private - - def fetch_customer_data - if ((@customer = Customer.find_by_user_id(current_user.id)) and - (params[:id] == @customer.braintree_customer_id)) - #current_customer.with_braintree_data! - @braintree_data = Braintree::Customer.find(params[:id]) #used in editing form - @default_cc = @customer.default_credit_card(@braintree_data) - else - # TODO will want case for admins, presumably - access_denied - end - end - -end diff --git a/billing/app/views/customer/_transaction.html.haml b/billing/app/views/customer/_transaction.html.haml new file mode 100644 index 0000000..e69de29 diff --git a/billing/app/views/customer/confirm.html.haml b/billing/app/views/customer/confirm.html.haml new file mode 100644 index 0000000..5551622 --- /dev/null +++ b/billing/app/views/customer/confirm.html.haml @@ -0,0 +1,14 @@ +%h1 Payment Info Confirmation +%p Your payment information was successfully saved. +%dl + %dt First Name + %dd= @result.customer.first_name + %dt Last Name + %dd= @result.customer.last_name + %dt Phone + %dd= @result.customer.phone + %dt Credit Card + - @result.customer.credit_cards.each do |cc| + %dd= cc.masked_number +- customer = Customer.find_by_user_id(current_user.id) += link_to 'View Customer Info', show_customer_path(customer.braintree_customer_id), :class=> :btn \ No newline at end of file diff --git a/billing/app/views/customer/edit.html.haml b/billing/app/views/customer/edit.html.haml new file mode 100644 index 0000000..c2e5cb3 --- /dev/null +++ b/billing/app/views/customer/edit.html.haml @@ -0,0 +1,22 @@ +- if @result + #total-errors{:style => "color:red;"} + = h(@result.errors.size) + error(s) += form_for :customer, :url => Braintree::TransparentRedirect.url, :params => @result && @result.params[:customer],:existing => @braintree_data, :builder => BraintreeFormHelper::BraintreeFormBuilder, :errors => @result && @result.errors.for(:customer) do |f| | + = field_set_tag "Customer" do + %dl + %dt= f.label :first_name, 'First Name' + %dd= f.text_field :first_name + %dt= f.label :last_name, 'Last Name' + %dd= f.text_field :last_name + %dt= f.label :phone, 'Phone' + %dd= f.text_field :phone + - if @default_cc + = # todo, as they will need a credit card, so not sure about conditional? + %dt Stored Credit Card + %dd + = @default_cc.masked_number + = link_to 'Change credit card', edit_credit_card_info_path(:id => @default_cc.token), :class => :btn + = hidden_field_tag :tr_data, @tr_data + = f.submit 'Save Customer Info', :class => :btn += link_to 'Cancel', show_customer_path(@braintree_data.id), :class=> :btn \ No newline at end of file diff --git a/billing/app/views/customer/new.html.haml b/billing/app/views/customer/new.html.haml new file mode 100644 index 0000000..6eaa3d1 --- /dev/null +++ b/billing/app/views/customer/new.html.haml @@ -0,0 +1,24 @@ +- if @result + #total-errors{:style => "color:red;"} + = h(@result.errors.size) + error(s) += form_for :customer, :url => Braintree::TransparentRedirect.url, :params => @result && @result.params[:customer], :builder => BraintreeFormHelper::BraintreeFormBuilder, :errors => @result && @result.errors.for(:customer) do |f| + = field_set_tag "Customer" do + %dl + %dt= f.label :first_name, 'First Name' + %dd= f.text_field :first_name + %dt= f.label :last_name, 'Last Name' + %dd= f.text_field :last_name + %dt= f.label :phone, 'Phone' + %dd= f.text_field :phone + = field_set_tag "Credit Card" do + - f.fields_for :credit_card do |cc| + %dl + %dt= cc.label :number, 'Number' + %dd= cc.text_field :number + %dt= cc.label :expiration_date, 'Expiration Date (MM/YY)' + %dd= cc.text_field :expiration_date + %dt= cc.label :cvv, 'CVV' + %dd= cc.text_field :cvv + = hidden_field_tag :tr_data, @tr_data + = f.submit 'Save Payment Info' \ No newline at end of file diff --git a/billing/app/views/customer/show.html.haml b/billing/app/views/customer/show.html.haml new file mode 100644 index 0000000..d385d98 --- /dev/null +++ b/billing/app/views/customer/show.html.haml @@ -0,0 +1,14 @@ += render :partial => 'payments/customer_data' += link_to 'Make Payment', new_payment_path, :class => :btn +%h3 Last three transactions +- counter = 0 += # these will be ordered with most recently created first, per http://stackoverflow.com/questions/16425475/ +- @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} + = link_to 'All subscriptions', subscriptions_path \ No newline at end of file diff --git a/billing/app/views/customers/_transaction.html.haml b/billing/app/views/customers/_transaction.html.haml deleted file mode 100644 index e69de29..0000000 diff --git a/billing/app/views/customers/confirm.html.haml b/billing/app/views/customers/confirm.html.haml deleted file mode 100644 index 975d1ad..0000000 --- a/billing/app/views/customers/confirm.html.haml +++ /dev/null @@ -1,14 +0,0 @@ -%h1 Payment Info Confirmation -%p Your payment information was successfully saved. -%dl - %dt First Name - %dd= @result.customer.first_name - %dt Last Name - %dd= @result.customer.last_name - %dt Phone - %dd= @result.customer.phone - %dt Credit Card - - @result.customer.credit_cards.each do |cc| - %dd= cc.masked_number -- customer = Customer.find_by_user_id(current_user.id) -= link_to 'View Customer Info', customer_path(customer.braintree_customer_id), :class=> :btn \ No newline at end of file diff --git a/billing/app/views/customers/edit.html.haml b/billing/app/views/customers/edit.html.haml deleted file mode 100644 index bea3211..0000000 --- a/billing/app/views/customers/edit.html.haml +++ /dev/null @@ -1,22 +0,0 @@ -- if @result - #total-errors{:style => "color:red;"} - = h(@result.errors.size) - error(s) -= form_for :customer, :url => Braintree::TransparentRedirect.url, :params => @result && @result.params[:customer],:existing => @braintree_data, :builder => BraintreeFormHelper::BraintreeFormBuilder, :errors => @result && @result.errors.for(:customer) do |f| | - = field_set_tag "Customer" do - %dl - %dt= f.label :first_name, 'First Name' - %dd= f.text_field :first_name - %dt= f.label :last_name, 'Last Name' - %dd= f.text_field :last_name - %dt= f.label :phone, 'Phone' - %dd= f.text_field :phone - - if @default_cc - = # todo, as they will need a credit card, so not sure about conditional? - %dt Stored Credit Card - %dd - = @default_cc.masked_number - = link_to 'Change credit card', edit_credit_card_info_path(:id => @default_cc.token), :class => :btn - = hidden_field_tag :tr_data, @tr_data - = f.submit 'Save Customer Info', :class => :btn -= link_to 'Cancel', customer_path(@braintree_data.id), :class=> :btn \ No newline at end of file diff --git a/billing/app/views/customers/new.html.haml b/billing/app/views/customers/new.html.haml deleted file mode 100644 index 2ff8229..0000000 --- a/billing/app/views/customers/new.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -- if @result - #total-errors{:style => "color:red;"} - = h(@result.errors.size) - error(s) -= form_for :customer, :url => Braintree::TransparentRedirect.url, :params => @result && @result.params[:customer], :builder => BraintreeFormHelper::BraintreeFormBuilder, :errors => @result && @result.errors.for(:customer) do |f| - = field_set_tag "Customer" do - %dl - %dt= f.label :first_name, 'First Name' - %dd= f.text_field :first_name - %dt= f.label :last_name, 'Last Name' - %dd= f.text_field :last_name - %dt= f.label :phone, 'Phone' - %dd= f.text_field :phone - = field_set_tag "Credit Card" do - - f.fields_for :credit_card do |cc| - %dl - %dt= cc.label :number, 'Number' - %dd= cc.text_field :number - %dt= cc.label :expiration_date, 'Exipration Date (MM/YY)' - %dd= cc.text_field :expiration_date - %dt= cc.label :cvv, 'CVV' - %dd= cc.text_field :cvv - = hidden_field_tag :tr_data, @tr_data - = f.submit 'Save Payment Info' \ No newline at end of file diff --git a/billing/app/views/customers/show.html.haml b/billing/app/views/customers/show.html.haml deleted file mode 100644 index d385d98..0000000 --- a/billing/app/views/customers/show.html.haml +++ /dev/null @@ -1,14 +0,0 @@ -= render :partial => 'payments/customer_data' -= link_to 'Make Payment', new_payment_path, :class => :btn -%h3 Last three transactions -- counter = 0 -= # these will be ordered with most recently created first, per http://stackoverflow.com/questions/16425475/ -- @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} - = link_to 'All subscriptions', subscriptions_path \ No newline at end of file diff --git a/billing/app/views/payments/confirm.html.haml b/billing/app/views/payments/confirm.html.haml index fddbc45..9479eb9 100644 --- a/billing/app/views/payments/confirm.html.haml +++ b/billing/app/views/payments/confirm.html.haml @@ -26,4 +26,4 @@ %td= h @result.transaction.credit_card_details.card_type - if current_user - customer = Customer.find_by_user_id(current_user.id) - = link_to 'View Customer Info', customer_path(customer.braintree_customer_id), :class=> :btn \ No newline at end of file + = link_to 'View Customer Info', show_customer_path(customer.braintree_customer_id), :class=> :btn \ No newline at end of file diff --git a/billing/app/views/subscriptions/show.html.haml b/billing/app/views/subscriptions/show.html.haml index b630a05..a3d57f9 100644 --- a/billing/app/views/subscriptions/show.html.haml +++ b/billing/app/views/subscriptions/show.html.haml @@ -1,4 +1,4 @@ %h1 Current Subscription = render :partial => "subscription_details", :locals => {:subscription => @subscription} = link_to 'Cancel Subscription', subscription_path, :confirm => 'Are you sure you want to cancel this subscription?', :method => :delete, :class => 'btn btn-danger' if @subscription.status == 'Active' # permission check or should that just be on show? -= link_to 'Show Customer Data', customer_path(@subscription_customer_id), :class => :btn \ No newline at end of file += link_to 'Show Customer Data', show_customer_path(@subscription_customer_id), :class => :btn \ No newline at end of file diff --git a/billing/config/routes.rb b/billing/config/routes.rb index 9b29aef..1bb32df 100644 --- a/billing/config/routes.rb +++ b/billing/config/routes.rb @@ -4,10 +4,11 @@ Rails.application.routes.draw do match 'payments/confirm' => 'payments#confirm', :as => :confirm_payment resources :payments, :only => [:index] - resources :customers, :only => [:new, :edit, :show] + resources :customer, :only => [:new, :edit] resources :credit_card_info, :only => [:edit] - match 'customer/confirm' => 'customer#confirm', :as => :confirm_customer + match 'customer/confirm/' => 'customer#confirm', :as => :confirm_customer + match 'customer/show/:id' => 'customer#show', :as => :show_customer match 'credit_card_info/confirm' => 'credit_card_info#confirm', :as => :confirm_credit_card_info resources :subscriptions, :only => [:new, :create, :index, :show, :update, :destroy] -- cgit v1.2.3