ish_manager 0.1.8.460 → 0.1.8.462

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/ish_manager/application.scss +2 -0
  3. data/app/assets/stylesheets/ish_manager/products.scss +9 -0
  4. data/app/assets/stylesheets/ish_manager/subscriptions.scss +6 -0
  5. data/app/controllers/ish_manager/application_controller.rb +20 -0
  6. data/app/controllers/ish_manager/invoices_controller.rb +57 -5
  7. data/app/controllers/ish_manager/iro_option_gets_controller.rb +100 -57
  8. data/app/controllers/ish_manager/leadsets_controller.rb +3 -1
  9. data/app/controllers/ish_manager/prices_controller.rb +15 -0
  10. data/app/controllers/ish_manager/products_controller.rb +54 -26
  11. data/app/controllers/ish_manager/subscriptions_controller.rb +51 -22
  12. data/app/views/ish_manager/appliances/_index.haml +2 -1
  13. data/app/views/ish_manager/application/_alerts_notices.haml +12 -2
  14. data/app/views/ish_manager/application/_main_header_admin.haml +2 -1
  15. data/app/views/ish_manager/application/home.haml +8 -0
  16. data/app/views/ish_manager/galleries/index_titles.haml +1 -1
  17. data/app/views/ish_manager/invoices/_index_list.haml +6 -0
  18. data/app/views/ish_manager/invoices/_index_table.haml +20 -0
  19. data/app/views/ish_manager/invoices/index.haml +1 -29
  20. data/app/views/ish_manager/invoices/new_pdf.haml +4 -1
  21. data/app/views/ish_manager/invoices/new_stripe.haml +31 -28
  22. data/app/views/ish_manager/iro_watches/max_pain.haml +11 -15
  23. data/app/views/ish_manager/leads/show.haml +2 -1
  24. data/app/views/ish_manager/leadsets/show.haml +28 -6
  25. data/app/views/ish_manager/meetings/index.haml +1 -1
  26. data/app/views/ish_manager/payments/index.haml +1 -1
  27. data/app/views/ish_manager/products/_form.haml +4 -4
  28. data/app/views/ish_manager/products/_index_list.haml +10 -0
  29. data/app/views/ish_manager/products/_index_table.haml +20 -0
  30. data/app/views/ish_manager/products/index.haml +19 -15
  31. data/app/views/ish_manager/serverhosts/_index.haml +1 -2
  32. data/app/views/ish_manager/subscriptions/_form.haml +10 -2
  33. data/app/views/ish_manager/subscriptions/index.haml +15 -3
  34. data/app/views/ish_manager/subscriptions/new.haml +1 -1
  35. data/app/views/ish_manager/subscriptions/new_stripe.haml +4 -0
  36. data/app/views/ish_manager/subscriptions/new_wco.haml +4 -0
  37. data/app/views/ish_manager/subscriptions/show.haml +4 -0
  38. data/config/routes.rb +10 -5
  39. metadata +25 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0498ed69f95e0d6288430dd6ced049a417cd722797088e1ce0617607f499519
4
- data.tar.gz: 5872bfac3ad36bc95f39444c0e68c11ca3ad8cc1cac61d8efff39698b5d7db35
3
+ metadata.gz: d544fb840059764a4d3c9c557416c0ec338ca5ce9f2e109aff72bc3743e844a6
4
+ data.tar.gz: 82efc85b76bde5801fb399907e341d0f944f7813d4800a569f5e6109d3572878
5
5
  SHA512:
6
- metadata.gz: e609d728478fee75c7e3bb4f79f4be0c45164a5cde5388d6b493baeb7a491ba7af295221a40d091294e9f7463cfaf5647e83ba44323e1b8ea588571e29c70f2c
7
- data.tar.gz: effb1d3a11fdf9b3e7dd93595433e2fea6cdd0fde18f17240fdfd3bddbb8ae3e35b6b3fef368ea18bf8c164e63de972c9525f92d6ffe7f8899a489af5e10b1e6
6
+ metadata.gz: 9a308e33cb23380dcc77f7b7518cfde43587d3f2260745dd9c808990c9acbefa9412a52e13e8341da39cc3b17f467957426590366927c5f1431740d54f3ffc80
7
+ data.tar.gz: 49c3077ff88f4139b3bc2a25f57202b21ae0f26784dca13eb486f24c1a0e7a02bbb12f1c593a04ff4da571d24523f7c348f942e7cfdfa437d00e830f8bb0223f
@@ -20,8 +20,10 @@
20
20
  *= require ish_manager/markers
21
21
  *= require ish_manager/office
22
22
  *= require ish_manager/pagination
23
+ *= require ish_manager/products
23
24
  *= require ish_manager/photos
24
25
  *= require ish_manager/scheduled_email_actions
26
+ *= require ish_manager/subscriptions
25
27
  *= require ish_manager/tags
26
28
  *= require ish_manager/user_profiles
27
29
  *= require ish_manager/videos
@@ -0,0 +1,9 @@
1
+
2
+ .products--index-table {
3
+ td {
4
+ // padding: 10px;
5
+ }
6
+ th.name {
7
+ min-width: 250px;
8
+ }
9
+ }
@@ -0,0 +1,6 @@
1
+
2
+ .subscriptions-new {
3
+ .select2-container {
4
+ width: 500px !important;
5
+ }
6
+ }
@@ -50,6 +50,26 @@ class IshManager::ApplicationController < ActionController::Base
50
50
  JWT.encode(payload, Rails.application.secrets.secret_key_base.to_s)
51
51
  end
52
52
 
53
+ def flash_alert what
54
+ flash[:alert] ||= []
55
+ if String == what.class
56
+ str = what
57
+ else
58
+ str = "Cannot create/update #{what.class.name}: #{what.errors.full_messages.join(', ')} ."
59
+ end
60
+ flash[:alert] << str
61
+ end
62
+
63
+ def flash_notice what
64
+ flash[:notice] ||= []
65
+ if String == what.class
66
+ str = what
67
+ else
68
+ str = "Created/updated #{what.class.name} ."
69
+ end
70
+ flash[:notice] << str
71
+ end
72
+
53
73
  def my_truthy? which
54
74
  ["1", "t", "T", "true"].include?( which )
55
75
  end
@@ -1,14 +1,66 @@
1
+ require 'prawn'
1
2
 
2
3
  class ::IshManager::InvoicesController < IshManager::ApplicationController
3
4
 
4
5
  before_action :set_lists
5
6
 
7
+ ##
8
+ ## Prawn/pdf unit of measure is 1/72" .
9
+ ##
6
10
  def create_pdf
7
11
  @invoice = Ish::Invoice.new
8
12
  authorize! :new, @invoice
9
13
 
14
+ tree_img_url = "https://wasya.co/wp-content/uploads/2023/09/tree-1.jpg"
15
+ tree_img_url = "#{Rails.root.join('public')}/tree-1.jpg"
16
+ wasya_co_logo_url = "#{Rails.root.join('public')}/259x66-WasyaCo-logo.png"
17
+
18
+ ## canvas width: 612, height: 792
10
19
  pdf = Prawn::Document.new
11
- pdf.text "Job Summary."
20
+
21
+ pdf.canvas do
22
+ pdf.image tree_img_url, at: [ 0, 792 ], width: 612
23
+
24
+ pdf.fill_color 'ffffff'
25
+ # pdf.stroke_color '000000'
26
+ pdf.transparent( 0.75 ) do
27
+ pdf.fill_rectangle [0, 792], 612, 792
28
+ end
29
+ pdf.fill_color '000000'
30
+
31
+ pdf.image wasya_co_logo_url, at: [252, 720], width: 108 ## 1.5"
32
+
33
+ pdf.bounding_box( [0.75*72, 9.5*72], width: 3.25*72, height: 0.75*72 ) do
34
+ pdf.stroke_bounds
35
+ end
36
+
37
+ pdf.bounding_box( [4.5*72, 9.5*72], width: 3.25*72, height: 0.75*72 ) do
38
+ pdf.stroke_bounds
39
+ end
40
+
41
+ pdf.bounding_box( [0.75*72, 8.5*72], width: 3.25*72, height: 0.75*72 ) do
42
+ pdf.stroke_bounds
43
+ end
44
+
45
+ pdf.bounding_box( [4.5*72, 8.5*72], width: 3.25*72, height: 0.75*72 ) do
46
+ pdf.stroke_bounds
47
+ end
48
+
49
+ pdf.make_table([ ['one'],
50
+ ['two'],
51
+ ])
52
+
53
+ pdf.text_box "Thank you!", at: [ 3.25*72, 1.25*72 ], width: 2*72, height: 1*72, align: :center
54
+ end
55
+
56
+
57
+
58
+ # pdf.text "hello, world?", align: :center
59
+
60
+
61
+
62
+
63
+
12
64
 
13
65
  filename = "a-summary.pdf"
14
66
  path = Rails.root.join 'tmp', filename
@@ -22,8 +74,7 @@ class ::IshManager::InvoicesController < IshManager::ApplicationController
22
74
  })
23
75
  end
24
76
 
25
- ## #create_stripe()
26
- def create
77
+ def create_stripe
27
78
  @invoice = Ish::Invoice.new params[:invoice].permit!
28
79
  authorize! :create, @invoice
29
80
 
@@ -35,11 +86,12 @@ class ::IshManager::InvoicesController < IshManager::ApplicationController
35
86
  pending_invoice_items_behavior: 'exclude',
36
87
  })
37
88
  params[:invoice][:items].each do |item|
38
- stripe_price = Wco::Product.find( item ).price_id
89
+ stripe_price = Wco::Product.find( item[:product_id] ).price_id
39
90
  invoice_item = Stripe::InvoiceItem.create({
40
91
  customer: @invoice.leadset.customer_id,
41
92
  price: stripe_price,
42
93
  invoice: stripe_invoice.id,
94
+ quantity: item[:quantity],
43
95
  })
44
96
  end
45
97
  Stripe::Invoice.send_invoice(stripe_invoice[:id])
@@ -71,7 +123,7 @@ class ::IshManager::InvoicesController < IshManager::ApplicationController
71
123
 
72
124
  def new_stripe
73
125
  authorize! :new, @invoice
74
- @leadset = Leadset.find params[:leadset_id]
126
+ @leadset = Leadset.find params[:leadset_id]
75
127
  @products_list = Wco::Product.list
76
128
  end
77
129
 
@@ -16,57 +16,49 @@ class ::IshManager::IroOptionGetsController < IshManager::ApplicationController
16
16
  redirect_to action: 'index', controller: 'ish_manager/iro_watches'
17
17
  end
18
18
 
19
+
20
+ =begin
21
+
22
+ select t1.putCall, t1.symbol, t1.strikePrice, t1.openInterest, t1.created_at
23
+ from iro_option_price_items t1
24
+ join (
25
+ select symbol, max(created_at) as c1
26
+ from iro_option_price_items
27
+ where expirationDate = 1694808000000 and ticker = 'GME'
28
+ group by symbol ) as t2
29
+ on t1.symbol = t2.symbol and t1.created_at = t2.c1
30
+ order by t1.strikePrice, t1.created_at desc;
31
+
32
+ =end
33
+
34
+
35
+ ##
36
+ ## Tda::Option.get_chain({ ticker: 'GME' })
37
+ ##
38
+ ## SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
39
+ ## SET sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));
40
+ ##
19
41
  def max_pain
20
42
  authorize! :max_pain, Iro::Iro
21
- @ticker = params[:ticker]
22
-
23
- @expirationDate = ( params[:date].to_date + 15.hours ).to_time.to_i * 1000 # '1689364800000'
24
- # expirationDate = '1689969600000'
25
- # expirationDate = '1690574400000'
26
- @all_items = {}
27
-
28
- calls_sql = " select distinct putCall, symbol, strikePrice, openInterest, max(created_at)
29
- from iro_option_price_items
30
- where expirationDate = #{@expirationDate} and putCall = 'CALL' and ticker = '#{@ticker}'
31
- group by putCall, symbol, strikePrice, openInterest
32
- order by strikePrice, max(created_at) desc; "
33
- @calls_items = []
34
- @calls_array = ActiveRecord::Base.connection.execute(calls_sql)
35
- calls_subtotal = 0
36
- @calls_array.each do |_item|
37
- # puts! _item, 'item'
38
- item = {
39
- putCall: _item[0],
40
- symbol: _item[1],
41
- strikePrice: _item[2],
42
- oi: _item[3],
43
- created_at: _item[4],
44
- }
45
- # puts! item, 'item'
46
- item[:subtotal] = item[:strikePrice] * 100 * item[:oi]
47
- calls_subtotal = calls_subtotal + item[:subtotal]
48
- item[:total] = calls_subtotal
49
- puts! item, 'item'
50
- @calls_items.push( item )
43
+ @ticker = params[:ticker]
44
+ @expirationDate = ( params[:date].to_date + 15.hours ).to_time.to_i * 1000
45
+ # puts! @expirationDate, '@expirationDate'
46
+ @all_items = {}
51
47
 
52
- @all_items[item[:strikePrice]] ||= {
53
- subtotal: 0,
54
- strikePrice: item[:strikePrice],
55
- }
56
- @all_items[item[:strikePrice]][:calls_subtotal] = calls_subtotal
57
- @all_items[item[:strikePrice]][:calls_oi] = item[:oi]
58
- @all_items[item[:strikePrice]][:subtotal] = @all_items[item[:strikePrice]][:subtotal] + calls_subtotal
59
- end
48
+ sql = " select t1.putCall, t1.symbol, t1.strikePrice, t1.openInterest, t1.created_at
49
+ from iro_option_price_items t1
50
+ join (
51
+ select symbol, max(created_at) as c1
52
+ from iro_option_price_items
53
+ where expirationDate = #{@expirationDate} and ticker = '#{@ticker}'
54
+ group by symbol ) as t2
55
+ on t1.symbol = t2.symbol and t1.created_at = t2.c1
56
+ order by t1.strikePrice, t1.created_at desc;
57
+ "
60
58
 
61
- puts_sql = "select putCall, symbol, strikePrice, openInterest, created_at
62
- from iro_option_price_items
63
- where expirationDate = #{@expirationDate} and putCall = 'PUT' and ticker = '#{@ticker}'
64
- group by putCall, symbol, strikePrice, openInterest, created_at
65
- order by putCall, strikePrice, created_at desc;"
66
- @puts_items = []
67
- @puts_array = ActiveRecord::Base.connection.execute(puts_sql)
68
- puts_subtotal = 0
69
- @puts_array.each do |_item|
59
+ results_array = ActiveRecord::Base.connection.execute(sql)
60
+ results_array.each do |_item|
61
+ # puts! _item, '_item'
70
62
  item = {
71
63
  putCall: _item[0],
72
64
  symbol: _item[1],
@@ -74,20 +66,71 @@ class ::IshManager::IroOptionGetsController < IshManager::ApplicationController
74
66
  oi: _item[3],
75
67
  created_at: _item[4],
76
68
  }
77
- item[:subtotal] = item[:strikePrice] * 100 * item[:oi]
78
- puts_subtotal = puts_subtotal + item[:subtotal]
79
- item[:total] = puts_subtotal
80
- puts! item, 'item'
81
- @puts_items.push( item )
82
69
  @all_items[item[:strikePrice]] ||= {
83
- subtotal: 0,
84
- strikePrice: item[:strikePrice],
70
+ strike_price: item[:strikePrice],
71
+ call_max_pain: 0,
72
+ put_max_pain: 0,
85
73
  }
86
- @all_items[item[:strikePrice]][:puts_subtotal] = puts_subtotal
87
- @all_items[item[:strikePrice]][:puts_oi] = item[:oi]
88
- @all_items[item[:strikePrice]][:subtotal] = @all_items[item[:strikePrice]][:subtotal] + puts_subtotal
74
+ if 'CALL' == item[:putCall]
75
+ @all_items[item[:strikePrice]][:call_oi] = item[:oi]
76
+ else
77
+ @all_items[item[:strikePrice]][:put_oi] = item[:oi]
78
+ end
79
+ end
80
+
81
+ @all_items.each_with_index do |_item, idx|
82
+ strike_price = _item[0]
83
+ item = _item[1]
84
+ # break if idx > 3
85
+ # puts! item, 'item'
86
+
87
+ @all_items.each do |next_strike_price, next_item|
88
+ if next_strike_price < strike_price
89
+ if next_item[:call_oi] > 0
90
+ @all_items[strike_price][:call_max_pain] += 100 * next_item[:call_oi] * (strike_price - next_strike_price)
91
+ end
92
+ end
93
+
94
+ if next_strike_price > strike_price
95
+ if next_item[:put_oi] > 0
96
+ @all_items[strike_price][:put_max_pain] += 100 * next_item[:put_oi] * (next_strike_price - strike_price)
97
+ end
98
+ end
99
+ end
100
+
101
+
89
102
  end
90
103
 
104
+ # puts_sql = "select putCall, symbol, strikePrice, openInterest, created_at
105
+ # from iro_option_price_items
106
+ # where expirationDate = #{@expirationDate} and putCall = 'PUT' and ticker = '#{@ticker}'
107
+ # group by putCall, symbol, strikePrice, openInterest, created_at
108
+ # order by putCall, strikePrice, created_at desc;"
109
+ # @puts_items = []
110
+ # @puts_array = ActiveRecord::Base.connection.execute(puts_sql)
111
+ # puts_subtotal = 0
112
+ # @puts_array.each do |_item|
113
+ # item = {
114
+ # putCall: _item[0],
115
+ # symbol: _item[1],
116
+ # strikePrice: _item[2],
117
+ # oi: _item[3],
118
+ # created_at: _item[4],
119
+ # }
120
+ # item[:subtotal] = item[:strikePrice] * 100 * item[:oi]
121
+ # puts_subtotal = puts_subtotal + item[:subtotal]
122
+ # item[:total] = puts_subtotal
123
+ # puts! item, 'item'
124
+ # @puts_items.push( item )
125
+ # @all_items[item[:strikePrice]] ||= {
126
+ # subtotal: 0,
127
+ # strikePrice: item[:strikePrice],
128
+ # }
129
+ # @all_items[item[:strikePrice]][:puts_subtotal] = puts_subtotal
130
+ # @all_items[item[:strikePrice]][:puts_oi] = item[:oi]
131
+ # @all_items[item[:strikePrice]][:subtotal] = @all_items[item[:strikePrice]][:subtotal] + puts_subtotal
132
+ # end
133
+
91
134
 
92
135
  render 'ish_manager/iro_watches/max_pain'
93
136
  end
@@ -57,7 +57,9 @@ class ::IshManager::LeadsetsController < IshManager::ApplicationController
57
57
  @email_contexts[lead.email] = lead.email_contexts
58
58
  end
59
59
 
60
- @employees = @leadset.employees.page( params[:leads_page] ).per( current_profile.per_page )
60
+ @employees = @leadset.employees.page( params[:leads_page] ).per( current_profile.per_page )
61
+ @subscriptions = @leadset.subscriptions
62
+ @invoices = @leadset.invoices
61
63
  end
62
64
 
63
65
  def update
@@ -0,0 +1,15 @@
1
+
2
+
3
+
4
+
5
+ class IshManager::PricesController < IshManager::ApplicationController
6
+
7
+ def update
8
+
9
+ # if !params[:price][:interval].present?
10
+ # @price.interval = nil
11
+ # end
12
+ end
13
+
14
+ end
15
+
@@ -3,37 +3,48 @@ class IshManager::ProductsController < IshManager::ApplicationController
3
3
 
4
4
  before_action :set_lists
5
5
 
6
- # alphabetized : )
6
+ # Alphabetized : )
7
7
 
8
8
  def create
9
- @product = Wco::Product.new params[:product].permit!
9
+ @product = Wco::Product.new params[:product].permit( :name )
10
+ @price = Wco::Price.new params[:price].permit( :amount_cents, :interval )
10
11
  authorize! :create, @product
11
12
 
12
- stripe_product = Stripe::Product.create({ name: params[:product][:name] })
13
- puts! stripe_product, 'stripe_product'
13
+ if !params[:price][:interval].present?
14
+ @price.interval = nil
15
+ end
16
+
17
+ stripe_product = Stripe::Product.create({ name: @product.name })
18
+ # puts! stripe_product, 'stripe_product'
19
+ flash_notice 'Created stripe product.'
20
+ @product.product_id = stripe_product[:id]
21
+
22
+ if @product.save
23
+ flash_notice 'Created wco product.'
24
+ else
25
+ flash_alert "Cannot create wco product: #{@product.errors.full_messages.join(', ')}."
26
+ end
14
27
 
15
28
  price_hash = {
16
- product: stripe_product.id,
17
- unit_amount: params[:product][:price_cents],
18
- currency: 'usd',
29
+ product: stripe_product.id,
30
+ unit_amount: @price.amount_cents,
31
+ currency: 'usd',
19
32
  }
20
- if params[:product][:interval].present?
21
- price_hash[:recurring] = { interval: params[:product][:interval] }
33
+ if @price.interval.present?
34
+ price_hash[:recurring] = { interval: @price.interval }
22
35
  end
23
36
  stripe_price = Stripe::Price.create( price_hash )
24
- puts! stripe_price, 'stripe_price'
25
-
26
- @product.product_id = stripe_product[:id]
27
- @product.price_id = stripe_price[:id]
28
-
29
- flag = @product.save
30
- if flag
31
- flash[:notice] = 'Created the product.'
32
- redirect_to action: :index
37
+ # puts! stripe_price, 'stripe_price'
38
+ flash_notice 'Created stripe price.'
39
+ @price.product = @product
40
+ @price.price_id = stripe_price[:id]
41
+ if @price.save
42
+ flash_notice @price
33
43
  else
34
- flash[:alert] = "No luck: #{@product.errors.full_messages.join(', ')}."
35
- render action: :index
44
+ flash_alert @price
36
45
  end
46
+
47
+ redirect_to action: :index
37
48
  end
38
49
 
39
50
  def destroy
@@ -60,25 +71,42 @@ class IshManager::ProductsController < IshManager::ApplicationController
60
71
 
61
72
  def index
62
73
  authorize! :index, Wco::Product
63
- @stripe_products = {}
64
74
 
65
- Stripe.api_key = ::STRIPE_SK
66
- Stripe.api_version = '2020-08-27'
75
+ @stripe_products = {}
67
76
  @_stripe_products = Stripe::Product.list().data
68
- @_stripe_prices = Stripe::Price.list().data
77
+ @_stripe_prices = Stripe::Price.list().data
69
78
 
70
79
  @_stripe_products.each do |sp|
71
80
  @stripe_products[sp[:id]] = sp
72
81
  @stripe_products[sp[:id]][:prices] ||= {}
73
82
  end
74
83
  @_stripe_prices.each do |price|
75
- @stripe_products[price[:product]][:prices][price[:id]] = price
84
+ begin
85
+ @stripe_products[price[:product]][:prices][price[:id]] = price
86
+ rescue Exception
87
+ nil
88
+ end
76
89
  end
77
90
 
78
- @products = Wco::Product.all
91
+ @wco_products = Wco::Product.all.includes( :prices )
92
+ @wco_products.each do |item|
93
+ if @stripe_products[item[:product_id]]
94
+ @stripe_products[item[:product_id]][:wco_product] = item
95
+ end
96
+ end
97
+
98
+ ## 2023-09-07 @TODO: move to model:
99
+ ## @wco_prices_hash = Wco::Price.all.hash_by( :price_id )
100
+ ##
101
+ @wco_prices_hash = {}
102
+ @wco_prices = Wco::Price.all
103
+ @wco_prices.each do |item|
104
+ @wco_prices_hash[item[:price_id]] = item
105
+ end
79
106
 
80
107
  end
81
108
 
109
+
82
110
  def show
83
111
  authorize! :show, @product
84
112
  @product = Wco::Product.find params[:id]
@@ -5,42 +5,51 @@ class IshManager::SubscriptionsController < IshManager::ApplicationController
5
5
 
6
6
  ## Alphabetized : )
7
7
 
8
+ ##
9
+ ## A stripe subscription is currently single-item only.
10
+ ##
8
11
  def create
9
12
  @subscription = Wco::Subscription.new params[:subscription].permit!
10
13
  authorize! :create, @subscription
11
14
 
12
- payment_methods = Stripe::Customer.list_payment_methods( params[:subscription][:customer_id] ).data
13
- # puts! payment_methods, 'payment_methods'
14
-
15
- params = {
16
- customer: params[:subscription][:customer_id],
17
- default_payment_method: payment_methods[0][:id],
18
- items: [
19
- { price: params[:subscription][:price_id] },
20
- ],
21
- }
22
- puts! params, 'params'
23
- @stripe_subscription = Stripe::Subscription.create( params )
24
- # puts! @stripe_subscription, '@stripe_subscription'
15
+ @subscription.leadset_id = Leadset.where({ customer_id: params[:subscription][:customer_id] }).first&.id
16
+ @subscription.price = Wco::Price.find_by price_id: params[:subscription][:price_id]
17
+ @subscription.product = @subscription.price.product
18
+
19
+ if params[:is_stripe]
20
+ payment_methods = Stripe::Customer.list_payment_methods( params[:subscription][:customer_id] ).data
21
+ params = {
22
+ customer: params[:subscription][:customer_id],
23
+ default_payment_method: payment_methods[0][:id],
24
+ items: [
25
+ { price: params[:subscription][:price_id],
26
+ quantity: params[:subscription][:quantity],
27
+ },
28
+ ],
29
+ }
30
+ @stripe_subscription = Stripe::Subscription.create( params )
31
+ flash_notice @stripe_subscription
32
+ end
25
33
 
26
34
 
27
35
  flag = @subscription.save
28
36
  if flag
29
- flash[:notice] = 'Created the subscription.'
37
+ flash_notice @subscription
30
38
  redirect_to action: :show, id: @subscription.id
31
39
  else
32
- flash[:alert] = "Cannot create the subscription: #{@subscription.errors.full_messages.join(', ')}."
33
- render action: :new
40
+ flash_alert @subscription
41
+ redirect_to action: :new
34
42
  end
35
43
  end
36
44
 
45
+
37
46
  def index
38
47
  authorize! :index, Wco::Subscription
39
48
 
40
49
  @stripe_customers = Stripe::Customer.list().data
41
50
  @stripe_subscriptions = Stripe::Subscription.list().data
42
51
 
43
- @customers = {}
52
+ @customers = {} ## still stripe customers
44
53
  customer_ids = @stripe_customers.map &:id
45
54
  @leadsets = Leadset.where( :customer_id.in => customer_ids )
46
55
  @leadsets.each do |i|
@@ -54,8 +63,10 @@ class IshManager::SubscriptionsController < IshManager::ApplicationController
54
63
  @customers[i[:customer_id]][:profiles] ||= []
55
64
  @customers[i[:customer_id]][:profiles].push( i )
56
65
  end
57
-
58
66
  # puts! @customers, '@customers'
67
+
68
+ @wco_subscriptions = Wco::Subscription.all
69
+
59
70
  end
60
71
 
61
72
  def new
@@ -63,6 +74,16 @@ class IshManager::SubscriptionsController < IshManager::ApplicationController
63
74
  authorize! :new, @subscription
64
75
  end
65
76
 
77
+ def new_stripe
78
+ @subscription = Wco::Subscription.new
79
+ authorize! :new, @subscription
80
+ end
81
+
82
+ def new_wco
83
+ @subscription = Wco::Subscription.new
84
+ authorize! :new, @subscription
85
+ end
86
+
66
87
  def show
67
88
  @subscription = Wco::Subscription.find params[:id]
68
89
  authorize! :show, @subscription
@@ -75,11 +96,19 @@ class IshManager::SubscriptionsController < IshManager::ApplicationController
75
96
 
76
97
  def set_lists
77
98
  super
78
- @products_list = Wco::Product.list
79
- leadsets = Leadset.where( "customer_id IS NOT NULL" ).map { |i| [ "leadset // #{i.company_url}", i.customer_id ] }
80
- profiles = ::Ish::UserProfile.where( :customer_id.ne => nil ).map { |i| [ "profile ++ #{i.email}", i.customer_id ] }
99
+ @products_list = Wco::Product.list
100
+ leadsets = Leadset.where( "customer_id IS NOT NULL" ).map { |i| [ "leadset // #{i.company_url} (#{i.email})", i.customer_id ] }
101
+ profiles = ::Ish::UserProfile.where( :customer_id.ne => nil ).map { |i| [ "profile // #{i.email}", i.customer_id ] }
81
102
  @customer_ids_list = leadsets + profiles
82
- @price_ids_list = Wco::Product.all.map { |i| [ i.name, i.price_id ] }
103
+ @price_ids_list = Wco::Product.all.includes( :prices ).map do |i|
104
+ price = i.prices[0]
105
+ if price&.price_id
106
+ puts! price.interval, 'price.interval'
107
+ [ "#{i.name} // $#{price.amount_cents.to_f/100}/#{price.interval||'onetime'}", price.price_id ]
108
+ else
109
+ [ "#{i.name} - no price!!!", nil ]
110
+ end
111
+ end
83
112
  end
84
113
 
85
114
  end
@@ -18,4 +18,5 @@
18
18
  - else
19
19
  <no-serverhost>
20
20
  %li.host <b>host:</b> #{i.host}
21
- -# %li.inspect= i.inspect
21
+ %hr
22
+
@@ -1,12 +1,22 @@
1
1
 
2
2
  .row.max-width
3
3
  .col-sm-12
4
- - if notice
4
+ - if notice&.class == String
5
5
  .notice
6
6
  = notice
7
7
  .close [x]
8
- - if alert
8
+ - if notice&.class == Array
9
+ - notice.each do |i|
10
+ .notice
11
+ = i
12
+ .close [x]
13
+ - if alert&.class == String
9
14
  .alert
10
15
  = alert
11
16
  .close [x]
17
+ - if alert&.class == Array
18
+ - alert.each do |i|
19
+ .alert
20
+ = i
21
+ .close [x]
12
22
 
@@ -104,7 +104,8 @@
104
104
  %li
105
105
  = link_to 'Products & Prices', products_path
106
106
  %li
107
- = link_to 'Customers & Subscriptions', subscriptions_path
107
+ = link_to 'Subscriptions', subscriptions_path
108
+ = link_to '[+]', new_wco_subscription_path
108
109
 
109
110
  .c
110
111
 
@@ -15,6 +15,14 @@
15
15
  = text_field_tag "search_query"
16
16
  = submit_tag 'search'
17
17
 
18
+ .bordered-card
19
+ = form_tag "https://wiki.wasya.co/index.php", method: :get, target: :_blank do
20
+ %p Search wiki.wasya.co:
21
+ = text_field_tag "search"
22
+ = submit_tag 'search'
23
+
24
+
25
+
18
26
  .bordered-card
19
27
  %h5.center.text-center USD to COP
20
28
  #root{ width: 500, height: 300 }