spree_cm_commissioner 2.7.1.pre.pre6 → 2.7.1.pre.pre7

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: f88085ac9f274a24587f64dca172c3219d84b76e02385419388bc84196bdbc2e
4
- data.tar.gz: 3865b929388b20b69d3a641bbdf2695ae79055e5636c5fed7033bc297b511ff5
3
+ metadata.gz: 1d5c165b63ae28d6c85cc90a61791e4c358329c04ee7fc1d3e096c595a4998df
4
+ data.tar.gz: ac2ad57bca6d10b9fdab2de0cb4ed71fb642f566140f6fbde62e146bb6ece18d
5
5
  SHA512:
6
- metadata.gz: ec9862ee95fb74dc2031f22534084dbbfe01c7fd5351a248014f5a8011a97fd990d0145b1536d697877face277480bdc837fa126e64b73a41039a55268072182
7
- data.tar.gz: 4b84c53d6a14a05702b5eaa78a76b1eb6f80471f15b4cc95bee9fef3772f00abe49f40c9c9d0cd78ec7761d5aa012c1d4546931a121e7e8ae2e264e7788e5bb2
6
+ metadata.gz: 59c576a6399bb685a3c9af3df233ec99b58dadfc94abfccdfe1fd82c8adf635b78e7d1e682b65671ce66298bad1a3f76bb6c44186c1ef3f502ac614416f84e34
7
+ data.tar.gz: 154bcdb685ff2f61f50370b4dad38fba5a9f60914edecd5c55da28824c4f009e0563bf10e8f65632a758b2158558e77175a9a593c9bbc2158ed4407d210e6b33
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.7.1.pre.pre6)
37
+ spree_cm_commissioner (2.7.1.pre.pre7)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -14,14 +14,25 @@ module Spree
14
14
  "#{Digest::SHA256.hexdigest(permitted_preview_params.to_json)}:" \
15
15
  "#{pricing_models_updated_at.to_i}"
16
16
 
17
- result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do
18
- SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context)
17
+ cached_result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do
18
+ result = SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context)
19
+ if result.success?
20
+ {
21
+ success: true,
22
+ payload: serialize_resource(result.value[:pricing_preview]).as_json
23
+ }
24
+ else
25
+ {
26
+ success: false,
27
+ error: result.error.to_s
28
+ }
29
+ end
19
30
  end
20
31
 
21
- if result.success?
22
- render_serialized_payload { serialize_resource(result.value[:pricing_preview]) }
32
+ if cached_result[:success]
33
+ render_serialized_payload { cached_result[:payload] }
23
34
  else
24
- render_error_payload(result.error, 422)
35
+ render_error_payload(cached_result[:error], 422)
25
36
  end
26
37
  rescue ArgumentError => e
27
38
  render_error_payload(e.message, 422)
@@ -6,7 +6,11 @@ module Spree
6
6
  # GET /api/v2/tenant/pricing_previews
7
7
  def index
8
8
  permitted_preview_params = params.permit(SpreeCmCommissioner::PricingModels::OrderContext::PREVIEW_PERMITTED_PARAMS)
9
- order_context = SpreeCmCommissioner::PricingModels::OrderContext.load!(permitted_preview_params[:order_context])
9
+ order_context = SpreeCmCommissioner::PricingModels::OrderContext.load!(
10
+ permitted_preview_params[:order_context],
11
+ tenant_id: current_tenant.id
12
+ )
13
+
10
14
  pricing_models_updated_at = SpreeCmCommissioner::PricingModel.joins(:vendor)
11
15
  .where(spree_vendors: { tenant_id: current_tenant.id })
12
16
  .maximum(:updated_at)
@@ -14,14 +18,25 @@ module Spree
14
18
  "#{Digest::SHA256.hexdigest(permitted_preview_params.to_json)}:" \
15
19
  "#{pricing_models_updated_at.to_i}"
16
20
 
17
- result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do
18
- SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context)
21
+ cached_result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do
22
+ result = SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context)
23
+ if result.success?
24
+ {
25
+ success: true,
26
+ payload: serialize_resource(result.value[:pricing_preview]).as_json
27
+ }
28
+ else
29
+ {
30
+ success: false,
31
+ error: result.error.to_s
32
+ }
33
+ end
19
34
  end
20
35
 
21
- if result.success?
22
- render_serialized_payload { serialize_resource(result.value[:pricing_preview]) }
36
+ if cached_result[:success]
37
+ render_serialized_payload { cached_result[:payload] }
23
38
  else
24
- render_error_payload(result.error, 422)
39
+ render_error_payload(cached_result[:error], 422)
25
40
  end
26
41
  rescue ArgumentError => e
27
42
  render_error_payload(e.message, 422)
@@ -4,6 +4,9 @@ module SpreeCmCommissioner
4
4
  prepend ::Spree::ServiceModule::Base
5
5
 
6
6
  def call(order:)
7
+ return failure(:order_is_not_persisted) unless order.persisted?
8
+ return failure(:order_not_completed) unless order.completed?
9
+
7
10
  order_context = OrderContext.build_from_context(fallback_order: order)
8
11
 
9
12
  preview_result = Preview.call(order_context: order_context)
@@ -19,7 +19,9 @@ module SpreeCmCommissioner
19
19
  @line_item_contexts = options[:line_item_contexts] || []
20
20
  end
21
21
 
22
- def self.load!(params)
22
+ def self.load!(params, tenant_id: nil)
23
+ raise ArgumentError, 'order_context is required' if params.nil?
24
+
23
25
  params = params.to_h.deep_symbolize_keys
24
26
  number = params[:number].presence
25
27
  token = params[:token].presence
@@ -27,7 +29,7 @@ module SpreeCmCommissioner
27
29
  raise ArgumentError, 'order_context.number is required' if number.blank?
28
30
  raise ArgumentError, 'order_context.token is required' if token.blank?
29
31
 
30
- order = Spree::Order.find_by(number: number, token: token)
32
+ order = Spree::Order.find_by(number: number, token: token, tenant_id: tenant_id)
31
33
  raise ArgumentError, "order #{number} not found" if order.nil?
32
34
 
33
35
  build_from_context(attributes: params, fallback_order: order)
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.7.1-pre6'.freeze
2
+ VERSION = '2.7.1-pre7'.freeze
3
3
 
4
4
  module_function
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_cm_commissioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1.pre.pre6
4
+ version: 2.7.1.pre.pre7
5
5
  platform: ruby
6
6
  authors:
7
7
  - You