wbase 0.3.16 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 524d11d2757c3eeccd8194fb20d5715ef53196a1
4
- data.tar.gz: 3e02d5bb4eff80e3cafeb4103c5d77f62e53d75a
3
+ metadata.gz: f737866525a133d24be7dff57cfcab0dfad3a26c
4
+ data.tar.gz: 5ca0572e21ba92771724c9b5b6004578f3ce95cb
5
5
  SHA512:
6
- metadata.gz: 71f66b797a6bc64473760338aed061b0367993ea4eeefaefedbd03e103543581019d54acc5b553c2af24f9fcf7181555054d48ab028be486dc11e75cc7edaeaa
7
- data.tar.gz: ef89ec4ce1d543d1b068ede1e60233b2f600226c6de8fb700f229dbcf370103c93272d42a96f09ed5f3ac68eacb47aa875983a8ab7e4a4136fad413f3a561815
6
+ metadata.gz: 70bc1dbff42bb371870d8faf6cf129da803fa510800d3aebb74b738db74c2190e79fdcb0ae5d45312a47765f53c3ee12f310f8cce35bc9e4222a2fd4b37e4a94
7
+ data.tar.gz: f48825e24bd5cc67d283859040ffc7a152fd190c81ce11fb572dabaa887ef8b292c02d637f8d4fb9cec8e9033b6d44f7aeb2ff06f6683aa1839ea960a66a8aa2
@@ -33,6 +33,15 @@ module Wbase
33
33
  end
34
34
  end
35
35
 
36
+ def update
37
+ service = UpdateSubscription.new(current_user, subscription_params)
38
+ service.call
39
+ if !service.valid?
40
+ flash[:errors] = service.errors
41
+ end
42
+ redirect_to '/user'
43
+ end
44
+
36
45
  private
37
46
 
38
47
  def subscription_params
@@ -0,0 +1,47 @@
1
+ module Wbase
2
+ class UpdateSubscription
3
+ attr_reader :subscription, :user, :errors, :params
4
+
5
+ def initialize(user, params)
6
+ @params = params
7
+ @user = user
8
+ @errors = []
9
+ end
10
+
11
+ def subscription
12
+ user.subscription
13
+ end
14
+
15
+ def stripe_customer
16
+ @stripe_customer ||= subscription.stripe_customer
17
+ end
18
+
19
+ def call
20
+ Rails.logger.info("Updating Stripe Customer for #{ user.email }")
21
+ card = stripe_customer.sources.create(card: params[:credit_card_token])
22
+ card.save
23
+ stripe_customer.default_source = card.id
24
+ stripe_customer.save
25
+ subscription.update!(params)
26
+ Rails.logger.info stripe_customer
27
+ rescue Stripe::CardError => e
28
+ # Since it's a decline, Stripe::CardError will be caught
29
+ body = e.json_body
30
+ err = body[:error]
31
+ @errors << body[:error]
32
+ puts "Status is: #{e.http_status}"
33
+ puts "Type is: #{err[:type]}"
34
+ puts "Code is: #{err[:code]}"
35
+ # param is '' in this case
36
+ puts "Param is: #{err[:param]}"
37
+ puts "Message is: #{err[:message]}"
38
+ rescue Stripe::InvalidRequestError => e
39
+ Rails.logger.error "Stripe error while updating card: #{ e.message }"
40
+ @errors << e.message
41
+ end
42
+
43
+ def valid?
44
+ errors.empty?
45
+ end
46
+ end
47
+ end
@@ -1,2 +1,92 @@
1
- <h1>Subscriptions#edit</h1>
2
- <p>Find me in app/views/subscriptions/edit.html.erb</p>
1
+ <div class="panel-heading">
2
+ <h3 class="text-center">
3
+ Current Plan: <strong><%= current_user.get_selected_plan.name %></strong>
4
+ </h3>
5
+ </div>
6
+
7
+ <p class="text-center">
8
+ <%= number_to_currency(current_user.get_selected_plan.price) %> / <small>month</small>
9
+ </p>
10
+
11
+ <!-- <p class="text&#45;center"> -->
12
+ <!-- <%= link_to "See other plans", "/welcome#pricing&#45;section" %> -->
13
+ <!-- </p> -->
14
+
15
+ <script type="text/javascript" src="https://js.stripe.com/v2/"></script>
16
+ <script type="text/javascript">
17
+ Stripe.setPublishableKey('<%= ENV["STRIPE_PUBLISHABLE_KEY"] %>');
18
+ </script>
19
+
20
+ <form action="/subscription" method="POST" id="payment-form">
21
+ <input type="hidden" name="_method" value="PATCH">
22
+ <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>">
23
+ <input type="hidden" name="subscription[plan_id]" value="<%= current_user.get_selected_plan.id %>">
24
+ <span class="payment-errors"></span>
25
+
26
+ <div class="form-group">
27
+ <label for="card-number" class="control-label">Card Number</label>
28
+ <input id="card-number" type="text" size="20" data-stripe="number" class="form-control boxed" autofocus>
29
+ </div>
30
+
31
+ <div class="row form-group">
32
+ <div class="col-xs-6">
33
+ <label for="exp_month">Exp (MM / YY)</label>
34
+ </div>
35
+ <div class="col-xs-4 col-xs-offset-2">
36
+ <label for="cvc">CVC</label>
37
+ </div>
38
+ <div class="col-xs-3">
39
+ <input id="exp_month" type="text" size="2" data-stripe="exp_month" class="form-control boxed" placeholder="MM">
40
+ </div>
41
+ <div class="col-xs-3">
42
+ <input type="text" size="2" data-stripe="exp_year" class="form-control boxed" placeholder="YY">
43
+ </div>
44
+ <div class="col-xs-4 col-xs-offset-2">
45
+ <input id="cvc" type="text" size="4" data-stripe="cvc" class="form-control boxed" placeholder="CVC">
46
+ </div>
47
+ </div>
48
+
49
+ <input type="submit" class="submit btn btn-block btn-primary" value="Update!">
50
+ <hr>
51
+
52
+ <div class="form-group">
53
+ <p class="text-muted text-center"><a href="/user">Nevermind...</a></p>
54
+ </div>
55
+ </form>
56
+
57
+ <% content_for :javascripts do %>
58
+ <script type="text/javascript">
59
+ function stripeResponseHandler(status, response) {
60
+ // Grab the form:
61
+ var $form = $('#payment-form');
62
+
63
+ if (response.error) { // Problem!
64
+ // Show the errors on the form:
65
+ $form.find('.payment-errors').text(response.error.message);
66
+ $form.find('.submit').prop('disabled', false); // Re-enable submission
67
+ } else { // Token was created!
68
+ // Get the token ID:
69
+ var token = response.id,
70
+ lastFour = response.card.last4,
71
+ cardType = response.card.brand;
72
+ // Insert the token ID into the form so it gets submitted to the server:
73
+ $form.append($('<input type="hidden" name="subscription[credit_card_token]">').val(token));
74
+ $form.append($('<input type="hidden" name="subscription[last_four]">').val(lastFour));
75
+ $form.append($('<input type="hidden" name="subscription[card_type]">').val(cardType));
76
+ // Submit the form:
77
+ $form.get(0).submit();
78
+ }
79
+ };
80
+ $(function() {
81
+ var $form = $('#payment-form');
82
+ $form.submit(function(event) {
83
+ // Disable the submit button to prevent repeated clicks:
84
+ $form.find('.submit').prop('disabled', true);
85
+ // Request a token from Stripe:
86
+ Stripe.card.createToken($form, stripeResponseHandler);
87
+ // Prevent the form from being submitted:
88
+ return false;
89
+ });
90
+ });
91
+ </script>
92
+ <% end %>
@@ -20,7 +20,7 @@ Wbase::Engine.routes.draw do
20
20
  resource :session, only: [:new, :create, :destroy]
21
21
  get '/session', to: 'sessions#new'
22
22
  resource :password_reset, only: [:new, :create, :edit, :update]
23
- resource :subscription, only: [:new, :create]
23
+ resource :subscription, only: [:new, :create, :update, :edit]
24
24
  resources :mail_events
25
25
  resources :stripe_webhooks
26
26
  get '/.well-known/acme-challenge/:id' => 'static_pages#letsencrypt'
@@ -1,3 +1,3 @@
1
1
  module Wbase
2
- VERSION = "0.3.16"
2
+ VERSION = "0.3.17"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.16
4
+ version: 0.3.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - CJ Avilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-09 00:00:00.000000000 Z
11
+ date: 2017-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -300,6 +300,7 @@ files:
300
300
  - app/models/wbase/userable.rb
301
301
  - app/services/wbase/mail_event_batch.rb
302
302
  - app/services/wbase/start_subscription.rb
303
+ - app/services/wbase/update_subscription.rb
303
304
  - app/views/layouts/mailer.html.erb
304
305
  - app/views/layouts/mailer.text.erb
305
306
  - app/views/layouts/wbase/_common_foot.html.erb
@@ -1171,7 +1172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1171
1172
  version: '0'
1172
1173
  requirements: []
1173
1174
  rubyforge_project:
1174
- rubygems_version: 2.6.8
1175
+ rubygems_version: 2.6.11
1175
1176
  signing_key:
1176
1177
  specification_version: 4
1177
1178
  summary: Base for SAAS Apps