shopify-gold 4.0.1 → 4.0.2

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
  SHA256:
3
- metadata.gz: 3ae3534c766c64f75ddc836965f6ed350122bff113449ebd0d6cf36ca3490a10
4
- data.tar.gz: e6334c900e2fead3533daf82accdb295a7322e45703b7f7378c17b02d7f310d9
3
+ metadata.gz: 80643acee44a7474c72b7286d4875e30a6a15d2dfc7755e69b06d1efdf71ebd9
4
+ data.tar.gz: d33356b33692267a6c29ea31554f5c99a11a5c01fe8504a291e2a94485a52e30
5
5
  SHA512:
6
- metadata.gz: d6e88dbb63de80478f8ed5c25b645571de75def9f1378b1e8f7729c9a32d2d508223507332441c7687600fc8c26674b993896399046545e5939546f5eb9fdc1a
7
- data.tar.gz: 0244c687235812af8951ac46e9bc7e4d1938340984886a3540c0531e579b237d4e62fff74ce7cbbb1310d31955fee1c044d75d6bf2ffd4da50e53670951d64f1
6
+ metadata.gz: ffd0c44af7c2b7dbab2e9f79b19ede308fa0e30cab8e0e7c1317e27c48ad8b241898797c645e026d17a6ef17c4ab48d3d030ab5dfdd943305563a68390f48f00
7
+ data.tar.gz: 7e5e8038e53f66fdeb7fc88b977e9834044df9fce4243f4b77ffe9e15937646462237ec10f88b0cf2416e02f9f97fab77eea0fbed6079a7765e26bd63c6e0e8c
@@ -1,5 +1,6 @@
1
1
  module Gold
2
2
  module Admin
3
+ # Controller for referrals
3
4
  class ReferralsController < AdminController
4
5
  def create
5
6
  referral = Referral.new(referral_params)
@@ -11,7 +12,7 @@ module Gold
11
12
  flash[:danger] = "Failed to create, #{message}"
12
13
  end
13
14
 
14
- redirect_to "#{request.path}/#{referral.id}"
15
+ redirect_to "#{request.path}/#{referral.id}"
15
16
  end
16
17
 
17
18
  def update
@@ -37,6 +38,17 @@ module Gold
37
38
  redirect_to gold_admin_engine.referrals_path
38
39
  end
39
40
 
41
+ def add_billing
42
+ referral = Referral.find_by(id: params[:referral_id])
43
+ billing = Billing.find(params[:id])
44
+
45
+ billing.update(referral: referral)
46
+
47
+ flash[:success] = "Updated referral"
48
+
49
+ redirect_back(fallback_location: "/admin")
50
+ end
51
+
40
52
  private
41
53
 
42
54
  def referral_params
@@ -42,17 +42,7 @@ module Gold
42
42
  def tier
43
43
  billing # Expose the @billing variable to the view
44
44
 
45
- # Apply a referral tracking. Don't overwrite an existing code
46
- if !billing.referral && session[:gold_referral_id]
47
- referral = Gold::Referral.find_by(id: session[:gold_referral_id])
48
-
49
- if referral
50
- billing.referral = referral
51
- billing.update(
52
- discount_percentage: referral.discount_percentage || 0
53
- )
54
- end
55
- end
45
+ apply_referral_cookie
56
46
 
57
47
  @tiers = Tier.visible
58
48
  end
@@ -204,6 +194,29 @@ module Gold
204
194
  end
205
195
  end
206
196
 
197
+ def apply_referral_cookie
198
+ reference_id = :gold_referral_id
199
+ referral_tracking = cookies[reference_id]
200
+
201
+ # Remove the cookie for future use
202
+ cookies.delete(reference_id)
203
+
204
+ # Don't continue if billing already has a referral or there's no tracking code
205
+ return if billing.referral || !referral_tracking
206
+
207
+ # Find the referral by ID
208
+ referral = Gold::Referral.find_by(id: referral_tracking)
209
+
210
+ # Don't continue if that referral code wasn't found
211
+ return unless referral
212
+
213
+ # Apply the referral to the billing object
214
+ billing.referral = referral
215
+ billing.update(
216
+ discount_percentage: referral.discount_percentage || 0
217
+ )
218
+ end
219
+
207
220
  # Ensure that the current merchant is in one of the provided states or
208
221
  # redirect to the app's root URL.
209
222
  def ensure_billing_is(*states)
@@ -4,7 +4,7 @@ module Gold
4
4
  def track
5
5
  referral = Referral.find_by(code: params[:code])
6
6
 
7
- session[:gold_referral_id] = referral.id if referral
7
+ cookies[:gold_referral_id] = { value: referral.id, expires: 30.days } if referral
8
8
 
9
9
  redirect_to Gold.configuration.referral_redirect_url
10
10
  end
@@ -20,4 +20,4 @@ module Gold
20
20
  self.code = code.parameterize.underscore.upcase
21
21
  end
22
22
  end
23
- end
23
+ end
@@ -0,0 +1,29 @@
1
+ <div class="card mb-3">
2
+ <div class="card-header">
3
+ <strong>Referral</strong>
4
+ </div>
5
+ <div class="card-body">
6
+ <aside class="float-right">
7
+ <a data-toggle="collapse" href="#collapseReferral">Change</a>
8
+
9
+ <div id="collapseReferral" class="collapse mt-3">
10
+ <%= form_tag(gold_admin_engine.add_billing_referral_path) do %>
11
+ <select name="referral_id">
12
+ <option value="">None</option>
13
+ <%= Gold::Referral.all.each do |referral| %>
14
+ <option value="<%= referral.id %>" <% if billing.referral&.id == referral.id %>selected<% end %>><%= referral.code %></option>
15
+ <% end %>
16
+ </select>
17
+
18
+ <input type="submit" class="btn btn-primary btn-sm" value="Update">
19
+ <% end %>
20
+ </div>
21
+ </aside>
22
+
23
+ <% if billing.referral %>
24
+ <%= link_to(@shop.billing.referral.code, admin_referral_path(@shop.billing.referral)) %>
25
+ <% else %>
26
+ <p>No referral</p>
27
+ <% end %>
28
+ </div>
29
+ </div>
data/config/routes.rb CHANGED
@@ -34,8 +34,9 @@ Gold::AdminEngine.routes.draw do
34
34
  end
35
35
 
36
36
  scope :referrals do
37
- post "/", to: "admin/referrals#create", as: "referrals"
38
- patch "/:id", to: "admin/referrals#update", as: "referral"
39
- delete "/:id", to: "admin/referrals#delete", as: "delete_referral"
37
+ post "/", to: "admin/referrals#create", as: "referrals"
38
+ patch "/:id", to: "admin/referrals#update", as: "referral"
39
+ post "/:id/billings", to: "admin/referrals#add_billing", as: "add_billing_referral"
40
+ delete "/:id", to: "admin/referrals#delete", as: "delete_referral"
40
41
  end
41
42
  end
data/lib/gold/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gold
2
- VERSION = "4.0.1".freeze
2
+ VERSION = "4.0.2".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-gold
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Smith
@@ -259,6 +259,7 @@ files:
259
259
  - app/views/gold/admin/billing/_tier.erb
260
260
  - app/views/gold/admin/billing/_trial_days.erb
261
261
  - app/views/gold/admin/referrals/_billings.erb
262
+ - app/views/gold/admin/referrals/_card.erb
262
263
  - app/views/gold/admin/referrals/_delete.erb
263
264
  - app/views/gold/admin/referrals/_form.erb
264
265
  - app/views/gold/billing/_inner_head.html.erb