effective_orders 4.6.1 → 4.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +86 -11
  4. data/app/controllers/admin/customers_controller.rb +16 -5
  5. data/app/controllers/admin/order_items_controller.rb +9 -6
  6. data/app/controllers/admin/orders_controller.rb +81 -17
  7. data/app/controllers/effective/carts_controller.rb +6 -10
  8. data/app/controllers/effective/customers_controller.rb +2 -4
  9. data/app/controllers/effective/orders_controller.rb +23 -27
  10. data/app/controllers/effective/providers/cheque.rb +1 -3
  11. data/app/controllers/effective/providers/free.rb +1 -3
  12. data/app/controllers/effective/providers/mark_as_paid.rb +2 -4
  13. data/app/controllers/effective/providers/moneris.rb +1 -3
  14. data/app/controllers/effective/providers/paypal.rb +2 -3
  15. data/app/controllers/effective/providers/phone.rb +1 -3
  16. data/app/controllers/effective/providers/pretend.rb +1 -3
  17. data/app/controllers/effective/providers/refund.rb +1 -3
  18. data/app/controllers/effective/providers/stripe.rb +1 -3
  19. data/app/controllers/effective/subscripter_controller.rb +2 -4
  20. data/app/controllers/effective/webhooks_controller.rb +3 -12
  21. data/app/datatables/admin/effective_customers_datatable.rb +3 -7
  22. data/app/datatables/admin/effective_orders_datatable.rb +2 -2
  23. data/app/datatables/effective_orders_datatable.rb +1 -1
  24. data/app/mailers/effective/orders_mailer.rb +96 -131
  25. data/app/models/concerns/acts_as_purchasable.rb +11 -0
  26. data/app/models/concerns/acts_as_subscribable.rb +6 -0
  27. data/app/models/effective/access_denied.rb +17 -0
  28. data/app/models/effective/cart.rb +5 -7
  29. data/app/models/effective/cart_item.rb +4 -7
  30. data/app/models/effective/customer.rb +6 -7
  31. data/app/models/effective/order.rb +42 -51
  32. data/app/models/effective/order_item.rb +8 -10
  33. data/app/models/effective/product.rb +6 -9
  34. data/app/models/effective/subscription.rb +12 -13
  35. data/app/views/admin/orders/_form.html.haml +9 -5
  36. data/app/views/admin/orders/_order_item_fields.html.haml +12 -8
  37. data/app/views/effective/orders/_checkout_step2.html.haml +2 -1
  38. data/app/views/effective/orders/_order_actions.html.haml +1 -1
  39. data/config/effective_orders.rb +32 -8
  40. data/config/routes.rb +17 -16
  41. data/db/migrate/01_create_effective_orders.rb.erb +0 -4
  42. data/lib/effective_orders.rb +76 -34
  43. data/lib/effective_orders/engine.rb +7 -0
  44. data/lib/effective_orders/version.rb +1 -1
  45. data/lib/generators/templates/effective_orders_mailer_preview.rb +13 -13
  46. data/lib/tasks/effective_orders_tasks.rake +2 -2
  47. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5693e3ae8df0c31b622cb87ab3297f991e35621f41abd0e9ca02566e1d8777d7
4
- data.tar.gz: 6053ce889d3d2e5ffb398a3d01ae0354633c4fcef5a0492c579c3babfc3cd2d1
3
+ metadata.gz: 07ed479ba56ebd55dae9b20168feec83435c0264cf7b00738a4438aa5104024e
4
+ data.tar.gz: 5756b29a14db32c53571fe75991285ed9864864e9a245b2b051886a68ed19229
5
5
  SHA512:
6
- metadata.gz: 61f708843535a4ae2f13cb0b6071378b38be77c9a88d6677f83451829191904b8ded3416c330a3e48549531a99b3bfd6d852338952c5444d766e980a03c64708
7
- data.tar.gz: 6b995206b0b6e944ba78000b79eea0c674f1bbbbc574ef2432399c6f64d9554a11904e419adb65fd14ec7363dadb2565ee5616f4070ac3f4cdaf2ac9f34d83b1
6
+ metadata.gz: 8de08c2426a57c57176a585131e211242fad9cb9f3bb18bac6216375798388e951021f6a58354be3c0810c3fa59b9d4b8f4505aae9f24b6377b34c0db8793a3d
7
+ data.tar.gz: 9a9bba6683d48272c12f4e509617afa99f1721bc53bd448e3689b07782d9b6e8a31cf28b29a031bf0be00ce621f0405eef56d2ca06c1323ec4f306d8a3852c53
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2021 Code and Effect Inc.
1
+ Copyright 2018 Code and Effect Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Carts, Orders, and collecting payment via Stripe, PayPal and Moneris.
4
4
 
5
- A Rails Engine to handle the purchase workflow in a Rails application.
5
+ A Rails Engine to handle the purchase workflow in a Rails 3.2.x / Rails 4 application.
6
6
 
7
7
  Also works with Stripe Subscriptions.
8
8
 
@@ -10,9 +10,17 @@ Sends order receipt emails automatically.
10
10
 
11
11
  Has Order History, My Purchases, My Sales and Admin screens.
12
12
 
13
- ## effective_orders 5.0
13
+ ## Upgrade to effective_orders 4.3
14
14
 
15
- This is the 5.0 series of effective_orders.
15
+ Add the migration
16
+
17
+ ```
18
+ add_column :customers, :payment_method_id, :string
19
+ ```
20
+
21
+ ## effective_orders 4.0
22
+
23
+ This is the 4.0 series of effective_orders.
16
24
 
17
25
  This requires Twitter Bootstrap 4 and Rails 5.1+
18
26
 
@@ -152,18 +160,32 @@ Once the database has been migrated, it is time to scaffold/build the CRUD Produ
152
160
 
153
161
  ### Products#new/#edit
154
162
 
155
- Use an [effective_bootstrap](https://github.com/code-and-effect/effective_bootstrap#effective-price) f.price_field input to enter the price.
163
+ Use an [effective_form_inputs](https://github.com/code-and-effect/effective_form_inputs#effective-price) effective_price input to enter the price.
156
164
 
157
165
  It displays the underlying Integer price as a currency formatted value, ensures that a properly formatted price is entered by the user, and POSTs the appropriate Integer value back to the server.
158
166
 
159
167
  This is available for simple_form, formtastic and Rails default FormBuilder.
160
168
 
161
169
  ```haml
162
- = effective_form_with(model: @product) do |f|
163
- = f.text_field :name
164
- = f.checkbox :tax_exempt
165
- = f.price_field :price
166
- = f.submit
170
+ = simple_form_for(@product) do |f|
171
+ = f.input :name
172
+ = f.input :tax_exempt
173
+ = f.input :price, as: :effective_price
174
+ = f.button :submit
175
+ ```
176
+
177
+ or
178
+
179
+ ```ruby
180
+ = semantic_form_for(@product) do |f|
181
+ = f.input :price, as: :effective_price
182
+ ```
183
+
184
+ or
185
+
186
+ ```haml
187
+ = form_for(@product) do |f|
188
+ = f.effective_price :price
167
189
  ```
168
190
 
169
191
  ### Products#show
@@ -265,6 +287,8 @@ end
265
287
 
266
288
  Of course, there's no mechanism here to prevent someone from just copy&pasting this URL to a friend.
267
289
 
290
+ If you're interested in that kind of restricted-download functionality, please check out [effective_assets](https://github.com/code-and-effect/effective_assets) and the authenticated-read temporary URLs.
291
+
268
292
 
269
293
  ### Tax Exempt
270
294
 
@@ -343,7 +367,54 @@ end
343
367
 
344
368
  ## Authorization
345
369
 
346
- All authorization checks are handled via the effective_resources gem found in the `config/initializers/effective_resources.rb` file.
370
+ All authorization checks are handled via the config.authorization_method found in the `config/initializers/effective_orders.rb` file.
371
+
372
+ It is intended for flow through to CanCan or Pundit, but neither of those gems are required.
373
+
374
+ This method is called by the controller action with the appropriate action and resource.
375
+
376
+ Action will be one of [:index, :show, :new, :create, :edit, :update, :destroy]
377
+
378
+ Resource will the appropriate Effective::Order, Effective::Cart or Effective::Subscription ActiveRecord object or class
379
+
380
+ The authorization method is defined in the initializer file:
381
+
382
+ ```ruby
383
+ # As a Proc (with CanCan)
384
+ config.authorization_method = Proc.new { |controller, action, resource| authorize!(action, resource) }
385
+ ```
386
+
387
+ ```ruby
388
+ # As a Custom Method
389
+ config.authorization_method = :my_authorization_method
390
+ ```
391
+
392
+ and then in your application_controller.rb:
393
+
394
+ ```ruby
395
+ def my_authorization_method(action, resource)
396
+ current_user.is?(:admin) || EffectivePunditPolicy.new(current_user, resource).send('#{action}?')
397
+ end
398
+ ```
399
+
400
+ or disabled entirely:
401
+
402
+ ```ruby
403
+ config.authorization_method = false
404
+ ```
405
+
406
+ If the method or proc returns false (user is not authorized) an Effective::AccessDenied exception will be raised
407
+
408
+ You can rescue from this exception by adding the following to your application_controller.rb:
409
+
410
+ ```ruby
411
+ rescue_from Effective::AccessDenied do |exception|
412
+ respond_to do |format|
413
+ format.html { render 'static_pages/access_denied', status: 403 }
414
+ format.any { render text: 'Access Denied', status: 403 }
415
+ end
416
+ end
417
+ ```
347
418
 
348
419
  ### Permissions
349
420
 
@@ -381,6 +452,7 @@ Only when the user proceeds to Checkout will they be required to login.
381
452
  Upon log in, the session Cart will be assigned to that User's ID, and if the User had a previous existing cart, all CartItems will be merged.
382
453
 
383
454
 
455
+
384
456
  You shouldn't need to deal with the Cart object at all, except to make a link from your Site Menu to the 'My Cart' page (as documented above).
385
457
 
386
458
  However, if you want to render a Cart on another page, or play with the Cart object directly, you totally can.
@@ -428,6 +500,9 @@ If you are using effective_orders to roll your own custom payment workflow, you
428
500
 
429
501
  Emails will be sent immediately unless `config.mailer[:deliver_method] == :deliver_later`.
430
502
 
503
+ If you are using [Delayed::Job](https://github.com/collectiveidea/delayed_job) to send emails in a background process then you should set the `delayed_job_deliver` option so that `config.mailer[:delayed_job_deliver] == true`.
504
+
505
+
431
506
  ### Effective::Order Model
432
507
 
433
508
  There may be times where you want to deal with the `Effective::Order` object directly.
@@ -922,7 +997,7 @@ You should generate separate private and public certificates/keys for this and i
922
997
 
923
998
  ## License
924
999
 
925
- MIT License. Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
1000
+ MIT License. Copyright [Code and Effect Inc.](http://www.codeandeffect.com/)
926
1001
 
927
1002
  ## Contributing
928
1003
 
@@ -1,12 +1,23 @@
1
1
  module Admin
2
2
  class CustomersController < ApplicationController
3
- before_action(:authenticate_user!) if defined?(Devise)
4
- before_action { EffectiveResources.authorize!(self, :admin, :effective_orders) }
3
+ before_action :authenticate_user!
5
4
 
6
- include Effective::CrudController
5
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_customers] : EffectiveOrders.layout)
7
6
 
8
- if (config = EffectiveOrders.layout)
9
- layout(config.kind_of?(Hash) ? config[:admin] : config)
7
+ def index
8
+ @datatable = Admin::EffectiveCustomersDatatable.new(self)
9
+
10
+ @page_title = 'Customers'
11
+
12
+ EffectiveOrders.authorize!(self, :admin, :effective_orders)
13
+ EffectiveOrders.authorize!(self, :index, Effective::Customer)
14
+ end
15
+
16
+ def show
17
+ @customer = Effective::Customer.find(params[:id])
18
+
19
+ @page_title ||= @customer.to_s
20
+ EffectiveOrders.authorize!(self, :show, Effective::Customer)
10
21
  end
11
22
 
12
23
  end
@@ -1,13 +1,16 @@
1
1
  module Admin
2
2
  class OrderItemsController < ApplicationController
3
- before_action(:authenticate_user!) if defined?(Devise)
4
- before_action { EffectiveResources.authorize!(self, :admin, :effective_orders) }
3
+ before_action :authenticate_user!
5
4
 
6
- include Effective::CrudController
5
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_orders] : EffectiveOrders.layout)
7
6
 
8
- if (config = EffectiveOrders.layout)
9
- layout(config.kind_of?(Hash) ? config[:admin] : config)
10
- end
7
+ def index
8
+ @datatable = Admin::EffectiveOrderItemsDatatable.new(self)
9
+
10
+ @page_title = 'Order Items'
11
11
 
12
+ EffectiveOrders.authorize!(self, :admin, :effective_orders)
13
+ EffectiveOrders.authorize!(self, :index, Effective::OrderItem)
14
+ end
12
15
  end
13
16
  end
@@ -1,21 +1,32 @@
1
1
  module Admin
2
2
  class OrdersController < ApplicationController
3
- before_action(:authenticate_user!) if defined?(Devise)
4
- before_action { EffectiveResources.authorize!(self, :admin, :effective_orders) }
3
+ before_action :authenticate_user!
5
4
 
6
- include Effective::CrudController
5
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:admin_orders] : EffectiveOrders.layout)
7
6
 
8
- if (config = EffectiveOrders.layout)
9
- layout(config.kind_of?(Hash) ? config[:admin] : config)
10
- end
7
+ def new
8
+ @order = Effective::Order.new
9
+
10
+ if params[:user_id]
11
+ @order.user = User.where(id: params[:user_id]).first
12
+ end
13
+
14
+ if params[:duplicate_id]
15
+ @duplicate = Effective::Order.deep.find(params[:duplicate_id])
16
+ EffectiveOrders.authorize!(self, :show, @duplicate)
17
+
18
+ @order.add(@duplicate)
19
+ end
11
20
 
12
- submit :save, 'Continue', redirect: :index
13
- submit :save, 'Add New', redirect: -> { effective_orders.new_admin_order_path(user_id: resource.user&.to_param) }
14
- submit :save, 'Duplicate', redirect: -> { effective_posts.new_admin_post_path(duplicate_id: resource.id) }
15
- submit :save, 'Checkout', redirect: -> { effective_orders.checkout_admin_order_path(resource) }
21
+ @page_title = 'New Order'
22
+
23
+ raise 'please install cocoon gem to use this page' unless defined?(Cocoon)
24
+
25
+ authorize_effective_order!
26
+ end
16
27
 
17
28
  def create
18
- @user = current_user.class.find_by_id(order_params[:user_id])
29
+ @user = User.find_by_id(order_params[:user_id])
19
30
  @order = Effective::Order.new(user: @user)
20
31
 
21
32
  authorize_effective_order!
@@ -43,10 +54,46 @@ module Admin
43
54
  end
44
55
 
45
56
  @page_title = 'New Order'
46
- flash.now[:danger] = flash_danger(@order) + error.to_s
57
+ flash.now[:danger] = flash_danger(@order)
47
58
  render :new
48
59
  end
49
60
 
61
+ def edit
62
+ @order = Effective::Order.find(params[:id])
63
+ @page_title ||= @order.to_s
64
+
65
+ authorize_effective_order!
66
+ end
67
+
68
+ def update
69
+ @order = Effective::Order.find(params[:id])
70
+
71
+ @page_title ||= @order.to_s
72
+
73
+ authorize_effective_order!
74
+
75
+ Effective::Order.transaction do
76
+ begin
77
+ @order.assign_attributes(order_params)
78
+ @order.save!
79
+ redirect_to(admin_redirect_path) and return
80
+ rescue => e
81
+ raise ActiveRecord::Rollback
82
+ end
83
+ end
84
+
85
+ flash.now[:danger] = "Unable to update order: #{@order.errors.full_messages.to_sentence}"
86
+ render :edit
87
+ end
88
+
89
+ def show
90
+ @order = Effective::Order.find(params[:id])
91
+
92
+ @page_title ||= @order.to_s
93
+
94
+ authorize_effective_order!
95
+ end
96
+
50
97
  # The show page posts to this action
51
98
  # See Effective::OrdersController checkout
52
99
  def checkout
@@ -75,6 +122,14 @@ module Admin
75
122
  render :checkout
76
123
  end
77
124
 
125
+ def index
126
+ @datatable = Admin::EffectiveOrdersDatatable.new(self)
127
+
128
+ @page_title = 'Orders'
129
+
130
+ authorize_effective_order!
131
+ end
132
+
78
133
  def destroy
79
134
  @order = Effective::Order.all.not_purchased.find(params[:id])
80
135
 
@@ -124,12 +179,12 @@ module Admin
124
179
  private
125
180
 
126
181
  def order_params
127
- params.require(:effective_order).permit(:user_id, :user_type, :cc,
182
+ params.require(:effective_order).permit(:user_id, :cc,
128
183
  :send_payment_request_to_buyer, :note_internal, :note_to_buyer,
129
184
  :payment_provider, :payment_card, :payment, :send_mark_as_paid_email_to_buyer,
130
185
  order_items_attributes: [
131
186
  :quantity, :_destroy, purchasable_attributes: [
132
- :name, :qb_item_name, :price, :tax_exempt
187
+ :name, :price, :tax_exempt
133
188
  ]
134
189
  ]
135
190
  )
@@ -140,18 +195,27 @@ module Admin
140
195
  end
141
196
 
142
197
  def authorize_effective_order!
143
- EffectiveResources.authorize!(self, action_name.to_sym, @order || Effective::Order)
198
+ EffectiveOrders.authorize!(self, :admin, :effective_orders)
199
+ EffectiveOrders.authorize!(self, action_name.to_sym, @order || Effective::Order)
144
200
  end
145
201
 
146
202
  def admin_redirect_path
203
+ # Allow an app to define effective_orders_admin_redirect_path in their ApplicationController
204
+ path = if self.respond_to?(:effective_orders_admin_redirect_path)
205
+ effective_orders_admin_redirect_path(params[:commit], @order)
206
+ end
207
+
208
+ return path if path.present?
209
+
147
210
  case params[:commit].to_s
148
211
  when 'Save' ; effective_orders.admin_order_path(@order)
212
+
149
213
  when 'Continue' ; effective_orders.admin_orders_path
150
214
  when 'Add New' ; effective_orders.new_admin_order_path(user_id: @order.user.try(:to_param))
151
215
  when 'Duplicate' ; effective_orders.new_admin_order_path(duplicate_id: @order.to_param)
152
216
  when 'Checkout' ; effective_orders.checkout_admin_order_path(@order.to_param)
153
- else
154
- effective_orders.admin_order_path(@order)
217
+
218
+ else effective_orders.admin_order_path(@order)
155
219
  end
156
220
  end
157
221
 
@@ -1,25 +1,21 @@
1
1
  module Effective
2
2
  class CartsController < ApplicationController
3
- before_action(:authenticate_user!) if defined?(Devise)
3
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:carts] : EffectiveOrders.layout)
4
4
 
5
- include Effective::CrudController
6
-
7
- if (config = EffectiveOrders.layout)
8
- layout(config.kind_of?(Hash) ? (config[:carts] || config[:application]) : config)
9
- end
5
+ before_action :authenticate_user!
10
6
 
11
7
  def show
12
8
  @cart = current_cart
13
9
  @pending_orders = Effective::Order.not_purchased.where(user: current_user) if current_user.present?
14
10
 
15
11
  @page_title ||= 'My Cart'
16
- EffectiveResources.authorize!(self, :show, @cart)
12
+ EffectiveOrders.authorize!(self, :show, @cart)
17
13
  end
18
14
 
19
15
  def destroy
20
16
  @cart = current_cart
21
17
 
22
- EffectiveResources.authorize!(self, :destroy, @cart)
18
+ EffectiveOrders.authorize!(self, :destroy, @cart)
23
19
 
24
20
  if @cart.destroy
25
21
  flash[:success] = 'Successfully emptied cart.'
@@ -33,7 +29,7 @@ module Effective
33
29
  def add_to_cart
34
30
  @purchasable = (add_to_cart_params[:purchasable_type].constantize.find(add_to_cart_params[:purchasable_id].to_i) rescue nil)
35
31
 
36
- EffectiveResources.authorize!(self, :update, current_cart)
32
+ EffectiveOrders.authorize!(self, :update, current_cart)
37
33
 
38
34
  begin
39
35
  raise "Please select a valid #{add_to_cart_params[:purchasable_type] || 'item' }." unless @purchasable
@@ -52,7 +48,7 @@ module Effective
52
48
  def remove_from_cart
53
49
  @cart_item = current_cart.cart_items.find(remove_from_cart_params[:id])
54
50
 
55
- EffectiveResources.authorize!(self, :update, current_cart)
51
+ EffectiveOrders.authorize!(self, :update, current_cart)
56
52
 
57
53
  if @cart_item.destroy
58
54
  flash[:success] = 'Successfully removed item from cart.'
@@ -1,12 +1,10 @@
1
1
  module Effective
2
2
  class CustomersController < ApplicationController
3
- before_action(:authenticate_user!) if defined?(Devise)
3
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:customers] : EffectiveOrders.layout)
4
4
 
5
5
  include Effective::CrudController
6
6
 
7
- if (config = EffectiveOrders.layout)
8
- layout(config.kind_of?(Hash) ? (config[:customers] || config[:application]) : config)
9
- end
7
+ before_action :authenticate_user!
10
8
 
11
9
  submit :save, 'Save', success: -> { 'Successfully updated card.' }
12
10
  page_title 'Customer Settings'
@@ -2,21 +2,17 @@ module Effective
2
2
  class OrdersController < ApplicationController
3
3
  include Concerns::Purchase
4
4
 
5
- include Providers::Cheque
6
- include Providers::Free
7
- include Providers::MarkAsPaid
8
- include Providers::Moneris
9
- include Providers::Paypal
10
- include Providers::Phone
11
- include Providers::Pretend
12
- include Providers::Refund
13
- include Providers::Stripe
14
-
15
- include Effective::CrudController
16
-
17
- if (config = EffectiveOrders.layout)
18
- layout(config.kind_of?(Hash) ? (config[:orders] || config[:application]) : config)
19
- end
5
+ include Providers::Cheque if EffectiveOrders.cheque?
6
+ include Providers::Free if EffectiveOrders.free?
7
+ include Providers::MarkAsPaid if EffectiveOrders.mark_as_paid?
8
+ include Providers::Moneris if EffectiveOrders.moneris?
9
+ include Providers::Paypal if EffectiveOrders.paypal?
10
+ include Providers::Phone if EffectiveOrders.phone?
11
+ include Providers::Pretend if EffectiveOrders.pretend?
12
+ include Providers::Refund if EffectiveOrders.refund?
13
+ include Providers::Stripe if EffectiveOrders.stripe?
14
+
15
+ layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:orders] : EffectiveOrders.layout)
20
16
 
21
17
  before_action :authenticate_user!, except: [:ccbill_postback, :free, :paypal_postback, :moneris_postback, :pretend]
22
18
  before_action :set_page_title, except: [:show]
@@ -30,7 +26,7 @@ module Effective
30
26
  def new
31
27
  @order ||= Effective::Order.new(view_context.current_cart)
32
28
 
33
- EffectiveResources.authorize!(self, :new, @order)
29
+ EffectiveOrders.authorize!(self, :new, @order)
34
30
 
35
31
  unless @order.valid?
36
32
  flash[:danger] = "Unable to proceed: #{flash_errors(@order)}. Please try again."
@@ -42,7 +38,7 @@ module Effective
42
38
  # Confirms an order from the cart.
43
39
  def create
44
40
  @order ||= Effective::Order.new(view_context.current_cart)
45
- EffectiveResources.authorize!(self, :create, @order)
41
+ EffectiveOrders.authorize!(self, :create, @order)
46
42
 
47
43
  @order.assign_attributes(checkout_params)
48
44
 
@@ -61,7 +57,7 @@ module Effective
61
57
  # Might render step1 or step2
62
58
  def show
63
59
  @order = Effective::Order.find(params[:id])
64
- EffectiveResources.authorize!(self, :show, @order)
60
+ EffectiveOrders.authorize!(self, :show, @order)
65
61
 
66
62
  @page_title ||= ((@order.user == current_user && !@order.purchased?) ? 'Checkout' : @order.to_s)
67
63
  end
@@ -69,13 +65,13 @@ module Effective
69
65
  # Always step1
70
66
  def edit
71
67
  @order ||= Effective::Order.find(params[:id])
72
- EffectiveResources.authorize!(self, :edit, @order)
68
+ EffectiveOrders.authorize!(self, :edit, @order)
73
69
  end
74
70
 
75
71
  # Confirms the order from existing order
76
72
  def update
77
73
  @order ||= Effective::Order.find(params[:id])
78
- EffectiveResources.authorize!(self, :update, @order)
74
+ EffectiveOrders.authorize!(self, :update, @order)
79
75
 
80
76
  @order.assign_attributes(checkout_params)
81
77
 
@@ -90,28 +86,28 @@ module Effective
90
86
  # My Orders History
91
87
  def index
92
88
  @datatable = EffectiveOrdersDatatable.new(user_id: current_user.id)
93
- EffectiveResources.authorize!(self, :index, Effective::Order.new(user: current_user))
89
+ EffectiveOrders.authorize!(self, :index, Effective::Order.new(user: current_user))
94
90
  end
95
91
 
96
92
  # Thank you for Purchasing this Order. This is where a successfully purchased order ends up
97
93
  def purchased # Thank You!
98
94
  @order = Effective::Order.purchased.find(params[:id])
99
- EffectiveResources.authorize!(self, :show, @order)
95
+ EffectiveOrders.authorize!(self, :show, @order)
100
96
  end
101
97
 
102
98
  def deferred
103
99
  @order = Effective::Order.deferred.find(params[:id])
104
- EffectiveResources.authorize!(self, :show, @order)
100
+ EffectiveOrders.authorize!(self, :show, @order)
105
101
  end
106
102
 
107
103
  def declined
108
104
  @order = Effective::Order.declined.find(params[:id])
109
- EffectiveResources.authorize!(self, :show, @order)
105
+ EffectiveOrders.authorize!(self, :show, @order)
110
106
  end
111
107
 
112
108
  def send_buyer_receipt
113
109
  @order = Effective::Order.find(params[:id])
114
- EffectiveResources.authorize!(self, :show, @order)
110
+ EffectiveOrders.authorize!(self, :show, @order)
115
111
 
116
112
  if @order.send_order_receipt_to_buyer!
117
113
  flash[:success] = "A receipt has been sent to #{@order.emails_send_to}"
@@ -132,10 +128,10 @@ module Effective
132
128
  @orders = Effective::Order.purchased.where(id: params[:ids])
133
129
 
134
130
  begin
135
- EffectiveResources.authorize!(self, :index, Effective::Order.new(user: current_user))
131
+ EffectiveOrders.authorize!(self, :index, Effective::Order.new(user: current_user))
136
132
 
137
133
  @orders.each do |order|
138
- next unless EffectiveResources.authorized?(self, :show, order)
134
+ next unless EffectiveOrders.authorized?(self, :show, order)
139
135
  order.send_order_receipt_to_buyer!
140
136
  end
141
137