spree_core 4.0.0.rc2 → 4.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60f1421b7468857f6c74fd7ab214f09a14c886b13e42110b53c6a22529691343
4
- data.tar.gz: 5d64b1bb1fa0866edd1778e6e01f79d1af23391633faf8cc08afbead4d519fcc
3
+ metadata.gz: a92eeda37655c24a7921c434a9e7cef57121e16da3457279999d2011f898bea8
4
+ data.tar.gz: 85dc63ab6533ea10eb138804558df376e33f1bfe24e0345d5209665a76c3b724
5
5
  SHA512:
6
- metadata.gz: 0cd4e217e4a314c1aafd05a682bd8e7b98107581e81d16419002b385f40ff633ee4c40ebd6b5a174e80e004c4b6aa0596b8d90bcc3ec5c09ae74da0850c8fd43
7
- data.tar.gz: fee6d187478f871e2b3cccda29eae1410a2b67eb709cd584217c9e8eeaae95dce886f3a2eea8d421de2cf3276f7d4642986d7a2929194025558f24dd432e45e4
6
+ metadata.gz: 368d97922da6dbda108e121097efce68a7393b556a0f3c0d8504db6158be11a42a1177d5a85e77c43d01d29de224f45666928a00ab0e3865274e44c0cb50b4fa
7
+ data.tar.gz: 3298b2b794cae1e7c9b8653c581af1d7bb5077cc8a7b199644657b903597f807ec2c8cf2312f78a5a88f01d1c06905016dcd5948bdab77ec000b38ae7e0b79f0
@@ -4,15 +4,17 @@ module Spree
4
4
  def initialize(scope:, params:, current_currency:)
5
5
  @scope = scope
6
6
 
7
- @ids = String(params.dig(:filter, :ids)).split(',')
8
- @skus = String(params.dig(:filter, :skus)).split(',')
9
- @price = String(params.dig(:filter, :price)).split(',')
10
- @currency = params[:currency] || current_currency
11
- @taxons = String(params.dig(:filter, :taxons)).split(',')
12
- @name = params.dig(:filter, :name)
13
- @options = params.dig(:filter, :options).try(:to_unsafe_hash)
14
- @deleted = params.dig(:filter, :show_deleted)
15
- @discontinued = params.dig(:filter, :show_discontinued)
7
+ @ids = String(params.dig(:filter, :ids)).split(',')
8
+ @skus = String(params.dig(:filter, :skus)).split(',')
9
+ @price = String(params.dig(:filter, :price)).split(',').map(&:to_f)
10
+ @currency = params[:currency] || current_currency
11
+ @taxons = String(params.dig(:filter, :taxons)).split(',')
12
+ @name = params.dig(:filter, :name)
13
+ @options = params.dig(:filter, :options).try(:to_unsafe_hash)
14
+ @option_value_ids = params.dig(:filter, :option_value_ids)
15
+ @sort_by = params.dig(:sort_by)
16
+ @deleted = params.dig(:filter, :show_deleted)
17
+ @discontinued = params.dig(:filter, :show_discontinued)
16
18
  end
17
19
 
18
20
  def execute
@@ -22,15 +24,17 @@ module Spree
22
24
  products = by_taxons(products)
23
25
  products = by_name(products)
24
26
  products = by_options(products)
27
+ products = by_option_value_ids(products)
25
28
  products = include_deleted(products)
26
29
  products = include_discontinued(products)
30
+ products = ordered(products)
27
31
 
28
32
  products
29
33
  end
30
34
 
31
35
  private
32
36
 
33
- attr_reader :ids, :skus, :price, :currency, :taxons, :name, :options, :scope, :deleted, :discontinued
37
+ attr_reader :ids, :skus, :price, :currency, :taxons, :name, :options, :option_value_ids, :scope, :sort_by, :deleted, :discontinued
34
38
 
35
39
  def ids?
36
40
  ids.present?
@@ -56,6 +60,14 @@ module Spree
56
60
  options.present?
57
61
  end
58
62
 
63
+ def option_value_ids?
64
+ option_value_ids.present?
65
+ end
66
+
67
+ def sort_by?
68
+ sort_by.present?
69
+ end
70
+
59
71
  def name_matcher
60
72
  Spree::Product.arel_table[:name].matches("%#{name}%")
61
73
  end
@@ -105,6 +117,27 @@ module Spree
105
117
  end.inject(:&)
106
118
  end
107
119
 
120
+ def by_option_value_ids(products)
121
+ return products unless option_value_ids?
122
+
123
+ products.joins(variants: :option_values).distinct.where(spree_option_values: { id: option_value_ids })
124
+ end
125
+
126
+ def ordered(products)
127
+ return products unless sort_by?
128
+
129
+ case sort_by
130
+ when 'default'
131
+ products
132
+ when 'newest-first'
133
+ products.order(available_on: :desc)
134
+ when 'price-high-to-low'
135
+ products.select('spree_products.*, spree_prices.amount').reorder('').send(:descend_by_master_price)
136
+ when 'price-low-to-high'
137
+ products.select('spree_products.*, spree_prices.amount').reorder('').send(:ascend_by_master_price)
138
+ end
139
+ end
140
+
108
141
  def include_deleted(products)
109
142
  deleted ? products.with_deleted : products.not_deleted
110
143
  end
@@ -3,12 +3,11 @@ module Spree
3
3
  class Find
4
4
  def initialize(scope:, params:)
5
5
  @scope = scope
6
-
7
- @ids = String(params[:ids]).split(',')
8
- @parent = params[:parent_id]
9
- @taxonomy = params[:taxonomy_id]
10
- @name = params[:name]
11
- @roots = params[:roots]
6
+ @ids = String(params.dig(:filter, :ids)).split(',')
7
+ @parent = params.dig(:filter, :parent_id)
8
+ @taxonomy = params.dig(:filter, :taxonomy_id)
9
+ @name = params.dig(:filter, :name)
10
+ @roots = params.dig(:filter, :roots)
12
11
  end
13
12
 
14
13
  def execute
@@ -1,5 +1,5 @@
1
1
  module Spree
2
2
  def self.version
3
- '4.0.0.rc2'
3
+ '4.0.0.rc3'
4
4
  end
5
5
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency 'carmen', '>= 1.0', '< 1.2'
27
27
  s.add_dependency 'cancancan', '~> 3.0'
28
28
  s.add_dependency 'ffaker', '~> 2.9'
29
- s.add_dependency 'friendly_id', '~> 5.2.1'
29
+ s.add_dependency 'friendly_id', '>= 5.2.1', '< 5.4.0'
30
30
  s.add_dependency 'highline', '~> 2.0.0' # Necessary for the install generator
31
31
  s.add_dependency 'kaminari', '>= 1.0.1', '< 1.2.0'
32
32
  s.add_dependency 'money', '~> 6.13'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc2
4
+ version: 4.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-17 00:00:00.000000000 Z
11
+ date: 2019-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -110,16 +110,22 @@ dependencies:
110
110
  name: friendly_id
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
115
  version: 5.2.1
116
+ - - "<"
117
+ - !ruby/object:Gem::Version
118
+ version: 5.4.0
116
119
  type: :runtime
117
120
  prerelease: false
118
121
  version_requirements: !ruby/object:Gem::Requirement
119
122
  requirements:
120
- - - "~>"
123
+ - - ">="
121
124
  - !ruby/object:Gem::Version
122
125
  version: 5.2.1
126
+ - - "<"
127
+ - !ruby/object:Gem::Version
128
+ version: 5.4.0
123
129
  - !ruby/object:Gem::Dependency
124
130
  name: highline
125
131
  requirement: !ruby/object:Gem::Requirement