spree_cm_commissioner 1.18.2.pre.pre1 → 1.19.0
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 +4 -4
- data/Gemfile.lock +1 -5
- data/app/controllers/spree/admin/event_blazer_queries_controller.rb +11 -4
- data/app/controllers/spree/admin/trip_blazer_queries_controller.rb +35 -0
- data/app/controllers/spree/api/v2/organizer/invite_crews_controller.rb +33 -0
- data/app/controllers/spree/api/v2/storefront/dynamic_field_options_controller.rb +5 -1
- data/app/controllers/spree/api/v2/tenant/checkout_controller.rb +2 -0
- data/app/controllers/spree_cm_commissioner/api/v2/storefront/checkout_controller_decorator.rb +11 -0
- data/app/interactors/spree_cm_commissioner/crew_invite_link_handler.rb +48 -0
- data/app/models/spree_cm_commissioner/blazer_queryable.rb +8 -0
- data/app/models/spree_cm_commissioner/crew_invite_link.rb +4 -0
- data/app/models/spree_cm_commissioner/dynamic_field.rb +2 -0
- data/app/models/spree_cm_commissioner/dynamic_field_option.rb +2 -0
- data/app/models/spree_cm_commissioner/invite.rb +4 -6
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +4 -2
- data/app/models/spree_cm_commissioner/trip.rb +12 -0
- data/app/serializers/spree/v2/organizer/invite_crews_serializer.rb +11 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_option_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb +1 -1
- data/app/views/blazer/queries/_content.html.erb +8 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20250711092937_add_position_to_cm_dynamic_fields.rb +11 -0
- data/db/migrate/20250711093045_add_position_to_cm_dynamic_field_options.rb +11 -0
- data/db/migrate/20250714121508_rename_cm_taxon_blazer_query_to_blazer_queryables.rb +7 -0
- data/db/migrate/20250714124323_make_cm_blazer_queryables_polymorphic.rb +19 -0
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +14 -5
- data/app/models/spree_cm_commissioner/taxon_blazer_query.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbe05a913d5525e83a57e29a837c4c1d5b9eec1607daba170f5ce305079b340b
|
4
|
+
data.tar.gz: '096d9299fd1faf8d19d7ca1ba00c82fbef35f1e1a938e48b0742f38a1f017aa8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5b1efce06f85b8b0439b3d9bba50066547f386c7960fe808014ee29f52598f307407d4f3e40f8320b337adcb1776882bc5d31f9f30da2b8600ecef19e74b3db
|
7
|
+
data.tar.gz: 1a8bbf21cce85c8d0ce52acd9e1fe9a54f48e90a010829514f1a2e192542f4b03eb9ca40fc6e91d4a2450cd2b477d380aa9bd0dfdc23f748a07e78381f7fe810
|
data/Gemfile.lock
CHANGED
@@ -34,7 +34,7 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (1.
|
37
|
+
spree_cm_commissioner (1.19.0)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
@@ -572,10 +572,6 @@ GEM
|
|
572
572
|
nokogiri (1.15.4)
|
573
573
|
mini_portile2 (~> 2.8.2)
|
574
574
|
racc (~> 1.4)
|
575
|
-
nokogiri (1.15.4-x86_64-darwin)
|
576
|
-
racc (~> 1.4)
|
577
|
-
nokogiri (1.15.4-x86_64-linux)
|
578
|
-
racc (~> 1.4)
|
579
575
|
noticed (1.6.3)
|
580
576
|
http (>= 4.0.0)
|
581
577
|
rails (>= 5.2.0)
|
@@ -2,21 +2,28 @@ module Spree
|
|
2
2
|
module Admin
|
3
3
|
class EventBlazerQueriesController < Spree::Admin::ResourceController
|
4
4
|
def model_class
|
5
|
-
SpreeCmCommissioner::
|
5
|
+
SpreeCmCommissioner::BlazerQueryable
|
6
6
|
end
|
7
7
|
|
8
8
|
def object_name
|
9
|
-
'
|
9
|
+
'spree_cm_commissioner_blazer_queryable'
|
10
10
|
end
|
11
11
|
|
12
12
|
def create
|
13
|
-
|
13
|
+
queryable = Spree::Taxon.find(params[:event_id])
|
14
|
+
|
15
|
+
event_blazer = SpreeCmCommissioner::BlazerQueryable.new(
|
16
|
+
queryable: queryable,
|
17
|
+
blazer_query_id: params[:blazer_query_id]
|
18
|
+
)
|
19
|
+
|
14
20
|
if event_blazer.save
|
15
21
|
flash[:success] = I18n.t('event_blazer_queries.success')
|
16
22
|
else
|
17
23
|
flash[:alert] = event_blazer.errors.full_messages.join(', ')
|
18
24
|
end
|
19
|
-
|
25
|
+
|
26
|
+
redirect_to blazer.query_path(id: event_blazer.blazer_query_id, event_id: queryable.id)
|
20
27
|
end
|
21
28
|
end
|
22
29
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class TripBlazerQueriesController < Spree::Admin::ResourceController
|
4
|
+
def model_class
|
5
|
+
SpreeCmCommissioner::BlazerQueryable
|
6
|
+
end
|
7
|
+
|
8
|
+
def object_name
|
9
|
+
'spree_cm_commissioner_blazer_queryable'
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
queryable = SpreeCmCommissioner::Trip.find_by(id: params[:trip_id])
|
14
|
+
|
15
|
+
if queryable.nil?
|
16
|
+
flash[:alert] = I18n.t('trip_blazer_queries.not_found')
|
17
|
+
redirect_to request.referer || spree.admin_trips_path and return
|
18
|
+
end
|
19
|
+
|
20
|
+
trip_blazer = SpreeCmCommissioner::BlazerQueryable.new(
|
21
|
+
queryable: queryable,
|
22
|
+
blazer_query_id: params[:blazer_query_id]
|
23
|
+
)
|
24
|
+
|
25
|
+
if trip_blazer.save
|
26
|
+
flash[:success] = I18n.t('trip_blazer_queries.success')
|
27
|
+
else
|
28
|
+
flash[:alert] = trip_blazer.errors.full_messages.join(', ')
|
29
|
+
end
|
30
|
+
|
31
|
+
redirect_to blazer.query_path(id: trip_blazer.blazer_query_id, trip_id: queryable.id)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Organizer
|
5
|
+
class InviteCrewsController < ::Spree::Api::V2::Organizer::BaseController
|
6
|
+
def show
|
7
|
+
render_serialized_payload { serialize_resource(invite) }
|
8
|
+
end
|
9
|
+
|
10
|
+
def update
|
11
|
+
context = SpreeCmCommissioner::CrewInviteLinkHandler.call(
|
12
|
+
params: params
|
13
|
+
)
|
14
|
+
|
15
|
+
if context.success?
|
16
|
+
render_serialized_payload { serialize_resource(context.invite) }
|
17
|
+
else
|
18
|
+
render_error_payload(context.message || I18n.t('invite.accept_fail'))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def invite
|
23
|
+
@invite ||= SpreeCmCommissioner::Invite.find_by!(token: params[:id])
|
24
|
+
end
|
25
|
+
|
26
|
+
def resource_serializer
|
27
|
+
::Spree::V2::Organizer::InviteCrewsSerializer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -8,7 +8,11 @@ module Spree
|
|
8
8
|
return @collection if defined?(@collection)
|
9
9
|
return SpreeCmCommissioner::DynamicFieldOption.none if params[:dynamic_field_id].blank?
|
10
10
|
|
11
|
-
@collection = SpreeCmCommissioner::DynamicFieldOption
|
11
|
+
@collection = SpreeCmCommissioner::DynamicFieldOption
|
12
|
+
.where(dynamic_field_id: params[:dynamic_field_id])
|
13
|
+
.active
|
14
|
+
.order(position: :asc)
|
15
|
+
|
12
16
|
@collection = @collection.where('value LIKE ?', "%#{params[:query]}%") if params[:query].present?
|
13
17
|
@collection
|
14
18
|
end
|
@@ -27,6 +27,8 @@ module Spree
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def complete
|
30
|
+
return render_serialized_payload { serialized_current_order } if spree_current_order.confirm? || spree_current_order.complete?
|
31
|
+
|
30
32
|
spree_authorize! :update, spree_current_order, order_token
|
31
33
|
|
32
34
|
result = complete_service.call(order: spree_current_order)
|
data/app/controllers/spree_cm_commissioner/api/v2/storefront/checkout_controller_decorator.rb
CHANGED
@@ -6,6 +6,17 @@ module SpreeCmCommissioner
|
|
6
6
|
def self.prepended(base)
|
7
7
|
base.include SpreeCmCommissioner::OrderConcern
|
8
8
|
end
|
9
|
+
|
10
|
+
# Override Spree's default behavior:
|
11
|
+
# By default, Spree raises an error if `complete` is called on a completed or confirmed order.
|
12
|
+
# We want to allow this call to succeed, so the API can be used both to:
|
13
|
+
# - complete the order (if it's not yet complete), or
|
14
|
+
# - return the latest state of a confirmed or completed order without raising a forbidden error.
|
15
|
+
def complete
|
16
|
+
return render_serialized_payload { serialized_current_order } if spree_current_order.confirm? || spree_current_order.complete?
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
9
20
|
end
|
10
21
|
end
|
11
22
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
class CrewInviteLinkHandler < BaseInteractor
|
3
|
+
delegate :params, to: :context
|
4
|
+
|
5
|
+
def call
|
6
|
+
validate_data
|
7
|
+
assign_role_to_user
|
8
|
+
create_user_event
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def validate_data
|
14
|
+
if invite.nil?
|
15
|
+
context.fail!(message: I18n.t('invite.url_not_found'))
|
16
|
+
else
|
17
|
+
context.invite = invite
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def assign_role_to_user
|
22
|
+
return if user.operator?
|
23
|
+
|
24
|
+
role = Spree::Role.find_by(name: 'operator')
|
25
|
+
role_user = Spree::RoleUser.new(user_id: user.id, role_id: role.id)
|
26
|
+
role_user.save
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_user_event
|
30
|
+
@user_event = SpreeCmCommissioner::UserEvent.new(
|
31
|
+
taxon_id: invite.taxon_id,
|
32
|
+
user_id: user.id
|
33
|
+
)
|
34
|
+
|
35
|
+
return if @user_event.save
|
36
|
+
|
37
|
+
context.fail!(message: I18n.t('invite.already_invited'))
|
38
|
+
end
|
39
|
+
|
40
|
+
def invite
|
41
|
+
@invite ||= SpreeCmCommissioner::Invite.find_by(token: params[:id])
|
42
|
+
end
|
43
|
+
|
44
|
+
def user
|
45
|
+
@user ||= Spree::User.find(params[:user_id])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
class BlazerQueryable < SpreeCmCommissioner::Base
|
3
|
+
belongs_to :queryable, polymorphic: true
|
4
|
+
belongs_to :blazer_query, class_name: 'Blazer::Query'
|
5
|
+
|
6
|
+
validates :queryable_id, uniqueness: { scope: %i[queryable_type blazer_query_id], message: I18n.t('event_blazer_queries.fail') }
|
7
|
+
end
|
8
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class DynamicField < SpreeCmCommissioner::Base
|
3
|
+
acts_as_list column: :position, scope: :vendor_id
|
4
|
+
|
3
5
|
belongs_to :vendor, class_name: 'Spree::Vendor', optional: false
|
4
6
|
|
5
7
|
has_many :dynamic_field_options, class_name: 'SpreeCmCommissioner::DynamicFieldOption', dependent: :destroy
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class DynamicFieldOption < SpreeCmCommissioner::Base
|
3
|
+
acts_as_list column: :position, scope: :dynamic_field_id
|
4
|
+
|
3
5
|
belongs_to :dynamic_field, class_name: 'SpreeCmCommissioner::DynamicField', optional: false
|
4
6
|
has_many :guest_dynamic_fields, class_name: 'SpreeCmCommissioner::GuestDynamicField', dependent: :restrict_with_error
|
5
7
|
|
@@ -5,16 +5,14 @@ module SpreeCmCommissioner
|
|
5
5
|
has_many :invite_user_events, class_name: 'SpreeCmCommissioner::InviteUserEvent', dependent: :destroy
|
6
6
|
scope :active, -> { where('expires_at > ?', Time.current) }
|
7
7
|
|
8
|
-
after_create :set_expiration
|
9
|
-
|
10
|
-
def set_expiration
|
11
|
-
update(expires_at: 3.days.from_now)
|
12
|
-
end
|
13
|
-
|
14
8
|
def invite_url
|
15
9
|
"#{Spree::Store.default.formatted_url}/invite/#{token}?utm_source=email"
|
16
10
|
end
|
17
11
|
|
12
|
+
def invite_crew_link
|
13
|
+
"#{Spree::Store.default.formatted_url}/invite_crews/#{token}"
|
14
|
+
end
|
15
|
+
|
18
16
|
def url_valid?
|
19
17
|
expires_at.present? && expires_at > Time.current
|
20
18
|
end
|
@@ -57,14 +57,16 @@ module SpreeCmCommissioner
|
|
57
57
|
base.has_many :crew_invites, class_name: 'SpreeCmCommissioner::CrewInvite', dependent: :destroy
|
58
58
|
base.has_many :invite_user_events, through: :user_events, class_name: 'SpreeCmCommissioner::InviteUserEvent'
|
59
59
|
|
60
|
+
base.has_many :crew_invite_links, class_name: 'SpreeCmCommissioner::CrewInviteLink', dependent: :destroy
|
61
|
+
|
60
62
|
base.has_many :invite_guests, class_name: 'SpreeCmCommissioner::InviteGuest', foreign_key: :event_id
|
61
63
|
|
62
64
|
base.has_many :line_items, through: :products
|
63
65
|
base.has_many :event_line_items, class_name: 'Spree::LineItem', foreign_key: :event_id
|
64
66
|
base.has_many :event_products, class_name: 'Spree::Product', foreign_key: :event_id
|
65
67
|
|
66
|
-
base.has_many :event_blazer_queries, class_name: 'SpreeCmCommissioner::
|
67
|
-
base.has_many :blazer_queries, through: :event_blazer_queries, class_name: 'Blazer::Query'
|
68
|
+
base.has_many :event_blazer_queries, as: :queryable, class_name: 'SpreeCmCommissioner::BlazerQueryable'
|
69
|
+
base.has_many :blazer_queries, through: :event_blazer_queries, source: :blazer_query, class_name: 'Blazer::Query'
|
68
70
|
|
69
71
|
base.has_many :taxon_option_types, class_name: 'SpreeCmCommissioner::TaxonOptionType'
|
70
72
|
base.has_many :taxon_option_values, class_name: 'SpreeCmCommissioner::TaxonOptionValue'
|
@@ -4,6 +4,18 @@ module SpreeCmCommissioner
|
|
4
4
|
attr_accessor :hours, :minutes, :seconds
|
5
5
|
|
6
6
|
before_validation :convert_duration_to_seconds
|
7
|
+
|
8
|
+
belongs_to :product, class_name: 'Spree::Product', inverse_of: :trip, optional: false
|
9
|
+
belongs_to :vehicle, class_name: 'SpreeCmCommissioner::Vehicle', optional: false
|
10
|
+
belongs_to :origin, class_name: 'SpreeCmCommissioner::Place', optional: true
|
11
|
+
belongs_to :destination, class_name: 'SpreeCmCommissioner::Place', optional: true
|
12
|
+
|
13
|
+
has_many :trip_blazer_queries, as: :queryable, class_name: 'SpreeCmCommissioner::BlazerQueryable'
|
14
|
+
has_many :blazer_queries, through: :trip_blazer_queries, source: :blazer_query, class_name: 'Blazer::Query'
|
15
|
+
|
16
|
+
has_many :trip_stops, class_name: 'SpreeCmCommissioner::TripStop', dependent: :destroy
|
17
|
+
has_many :variants, through: :product
|
18
|
+
has_many :inventory_items, through: :variants
|
7
19
|
belongs_to :variant, class_name: 'Spree::Variant'
|
8
20
|
|
9
21
|
belongs_to :route, class_name: 'Spree::Product'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Spree
|
2
|
+
module V2
|
3
|
+
module Organizer
|
4
|
+
class InviteCrewsSerializer < BaseSerializer
|
5
|
+
attributes :token, :expires_at
|
6
|
+
belongs_to :taxon, serializer: Spree::V2::Organizer::TaxonSerializer
|
7
|
+
belongs_to :inviter, serializer: Spree::V2::Organizer::UserSerializer
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
|
|
2
2
|
module V2
|
3
3
|
module Storefront
|
4
4
|
class DynamicFieldOptionSerializer < BaseSerializer
|
5
|
-
attributes :id, :value, :dynamic_field_id, :status, :created_at, :updated_at
|
5
|
+
attributes :id, :value, :dynamic_field_id, :status, :created_at, :updated_at, :position
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
|
|
2
2
|
module V2
|
3
3
|
module Storefront
|
4
4
|
class DynamicFieldSerializer < BaseSerializer
|
5
|
-
attributes :id, :label, :data_type, :vendor_id, :multiple_select, :created_at, :updated_at
|
5
|
+
attributes :id, :label, :data_type, :vendor_id, :multiple_select, :created_at, :updated_at, :position
|
6
6
|
|
7
7
|
has_many :dynamic_field_options, serializer: SpreeCmCommissioner::V2::Storefront::DynamicFieldOptionSerializer
|
8
8
|
end
|
@@ -47,6 +47,14 @@
|
|
47
47
|
class: "btn btn-primary",
|
48
48
|
style: "margin-left: 10px;" %>
|
49
49
|
</div>
|
50
|
+
<% elsif !@error && @success && params[:trip_id].present? %>
|
51
|
+
<div>
|
52
|
+
<%= link_to 'Save Trip',
|
53
|
+
spree.admin_trip_blazer_queries_path(trip_id: params[:trip_id], blazer_query_id: @query.id),
|
54
|
+
method: :post,
|
55
|
+
class: "btn btn-primary",
|
56
|
+
style: "margin-left: 10px;" %>
|
57
|
+
</div>
|
50
58
|
<% end %>
|
51
59
|
</div>
|
52
60
|
|
data/config/routes.rb
CHANGED
@@ -274,6 +274,7 @@ Spree::Core::Engine.add_routes do
|
|
274
274
|
resources :vendors, controller: :tenant_vendors
|
275
275
|
end
|
276
276
|
resources :event_blazer_queries
|
277
|
+
resources :trip_blazer_queries
|
277
278
|
end
|
278
279
|
|
279
280
|
resources :events, controller: 'events/base' do
|
@@ -450,6 +451,7 @@ Spree::Core::Engine.add_routes do
|
|
450
451
|
resources :images
|
451
452
|
resource :s3_signed_urls
|
452
453
|
resources :invites
|
454
|
+
resources :invite_crews, only: %i[show update]
|
453
455
|
resources :invite_guests, only: %i[show update]
|
454
456
|
end
|
455
457
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddPositionToCmDynamicFields < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
unless column_exists?(:cm_dynamic_fields, :position)
|
4
|
+
add_column :cm_dynamic_fields, :position, :integer, default: 0, null: false
|
5
|
+
end
|
6
|
+
|
7
|
+
unless index_exists?(:cm_dynamic_fields, :position, name: 'index_dynamic_fields_on_position')
|
8
|
+
add_index :cm_dynamic_fields, :position, name: 'index_dynamic_fields_on_position'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddPositionToCmDynamicFieldOptions < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
unless column_exists?(:cm_dynamic_field_options, :position)
|
4
|
+
add_column :cm_dynamic_field_options, :position, :integer, default: 0, null: false
|
5
|
+
end
|
6
|
+
|
7
|
+
unless index_exists?(:cm_dynamic_field_options, :position, name: 'index_dynamic_field_options_on_position')
|
8
|
+
add_index :cm_dynamic_field_options, :position, name: 'index_dynamic_field_options_on_position'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class MakeCmBlazerQueryablesPolymorphic < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
if column_exists?(:cm_blazer_queryables, :taxon_id) && !column_exists?(:cm_blazer_queryables, :queryable_id)
|
4
|
+
rename_column :cm_blazer_queryables, :taxon_id, :queryable_id
|
5
|
+
end
|
6
|
+
|
7
|
+
unless column_exists?(:cm_blazer_queryables, :queryable_type)
|
8
|
+
add_column :cm_blazer_queryables, :queryable_type, :string, default: 'Spree::Taxon'
|
9
|
+
end
|
10
|
+
|
11
|
+
if foreign_key_exists?(:cm_blazer_queryables, column: :queryable_id)
|
12
|
+
remove_foreign_key :cm_blazer_queryables, column: :queryable_id
|
13
|
+
end
|
14
|
+
|
15
|
+
unless index_exists?(:cm_blazer_queryables, [:queryable_type, :queryable_id], name: 'index_cm_blazer_queryables_on_queryable_type_and_id')
|
16
|
+
add_index :cm_blazer_queryables, [:queryable_type, :queryable_id], name: 'index_cm_blazer_queryables_on_queryable_type_and_id'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_cm_commissioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- You
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-07-
|
11
|
+
date: 2025-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree
|
@@ -787,6 +787,7 @@ files:
|
|
787
787
|
- app/controllers/spree/admin/telegram_bots_controller.rb
|
788
788
|
- app/controllers/spree/admin/tenant_vendors_controller.rb
|
789
789
|
- app/controllers/spree/admin/tenants_controller.rb
|
790
|
+
- app/controllers/spree/admin/trip_blazer_queries_controller.rb
|
790
791
|
- app/controllers/spree/admin/user_events_controller.rb
|
791
792
|
- app/controllers/spree/admin/user_identity_providers_controller.rb
|
792
793
|
- app/controllers/spree/admin/users_controller_decorator.rb
|
@@ -819,6 +820,7 @@ files:
|
|
819
820
|
- app/controllers/spree/api/v2/operator/taxons_controller.rb
|
820
821
|
- app/controllers/spree/api/v2/organizer/base_controller.rb
|
821
822
|
- app/controllers/spree/api/v2/organizer/images_controller.rb
|
823
|
+
- app/controllers/spree/api/v2/organizer/invite_crews_controller.rb
|
822
824
|
- app/controllers/spree/api/v2/organizer/invite_guests_controller.rb
|
823
825
|
- app/controllers/spree/api/v2/organizer/invites_controller.rb
|
824
826
|
- app/controllers/spree/api/v2/organizer/s3_signed_urls_controller.rb
|
@@ -1050,6 +1052,7 @@ files:
|
|
1050
1052
|
- app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb
|
1051
1053
|
- app/interactors/spree_cm_commissioner/create_event.rb
|
1052
1054
|
- app/interactors/spree_cm_commissioner/create_ticket.rb
|
1055
|
+
- app/interactors/spree_cm_commissioner/crew_invite_link_handler.rb
|
1053
1056
|
- app/interactors/spree_cm_commissioner/crew_inviter.rb
|
1054
1057
|
- app/interactors/spree_cm_commissioner/customer_content_notification_creator.rb
|
1055
1058
|
- app/interactors/spree_cm_commissioner/customer_notification_cron_executor.rb
|
@@ -1225,6 +1228,7 @@ files:
|
|
1225
1228
|
- app/models/spree_cm_commissioner/asset.rb
|
1226
1229
|
- app/models/spree_cm_commissioner/back_image.rb
|
1227
1230
|
- app/models/spree_cm_commissioner/base.rb
|
1231
|
+
- app/models/spree_cm_commissioner/blazer_queryable.rb
|
1228
1232
|
- app/models/spree_cm_commissioner/branch.rb
|
1229
1233
|
- app/models/spree_cm_commissioner/check_in.rb
|
1230
1234
|
- app/models/spree_cm_commissioner/check_in_ability.rb
|
@@ -1233,6 +1237,7 @@ files:
|
|
1233
1237
|
- app/models/spree_cm_commissioner/cms_page_decorator.rb
|
1234
1238
|
- app/models/spree_cm_commissioner/configuration.rb
|
1235
1239
|
- app/models/spree_cm_commissioner/crew_invite.rb
|
1240
|
+
- app/models/spree_cm_commissioner/crew_invite_link.rb
|
1236
1241
|
- app/models/spree_cm_commissioner/customer.rb
|
1237
1242
|
- app/models/spree_cm_commissioner/customer_notification.rb
|
1238
1243
|
- app/models/spree_cm_commissioner/customer_promotion_rule.rb
|
@@ -1346,7 +1351,6 @@ files:
|
|
1346
1351
|
- app/models/spree_cm_commissioner/store_decorator.rb
|
1347
1352
|
- app/models/spree_cm_commissioner/subscription.rb
|
1348
1353
|
- app/models/spree_cm_commissioner/taxon_app_banner.rb
|
1349
|
-
- app/models/spree_cm_commissioner/taxon_blazer_query.rb
|
1350
1354
|
- app/models/spree_cm_commissioner/taxon_brand_logo.rb
|
1351
1355
|
- app/models/spree_cm_commissioner/taxon_category_icon.rb
|
1352
1356
|
- app/models/spree_cm_commissioner/taxon_decorator.rb
|
@@ -1572,6 +1576,7 @@ files:
|
|
1572
1576
|
- app/serializers/spree/v2/organizer/asset_serializer.rb
|
1573
1577
|
- app/serializers/spree/v2/organizer/base_serializer.rb
|
1574
1578
|
- app/serializers/spree/v2/organizer/image_serializer.rb
|
1579
|
+
- app/serializers/spree/v2/organizer/invite_crews_serializer.rb
|
1575
1580
|
- app/serializers/spree/v2/organizer/invite_guest_serializer.rb
|
1576
1581
|
- app/serializers/spree/v2/organizer/invite_serializer.rb
|
1577
1582
|
- app/serializers/spree/v2/organizer/s3_signed_url_serializer.rb
|
@@ -2528,6 +2533,10 @@ files:
|
|
2528
2533
|
- db/migrate/20250702091305_add_dynamic_field_option_to_guest_dynamic_field.rb
|
2529
2534
|
- db/migrate/20250702091935_add_status_to_dynamic_field_option.rb
|
2530
2535
|
- db/migrate/20250707032008_add_vendor_id_to_spree_category.rb
|
2536
|
+
- db/migrate/20250711092937_add_position_to_cm_dynamic_fields.rb
|
2537
|
+
- db/migrate/20250711093045_add_position_to_cm_dynamic_field_options.rb
|
2538
|
+
- db/migrate/20250714121508_rename_cm_taxon_blazer_query_to_blazer_queryables.rb
|
2539
|
+
- db/migrate/20250714124323_make_cm_blazer_queryables_polymorphic.rb
|
2531
2540
|
- docker-compose.yml
|
2532
2541
|
- docs/option_types/attr_types.md
|
2533
2542
|
- docs/private_key.pem
|
@@ -2680,9 +2689,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2680
2689
|
version: '2.7'
|
2681
2690
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2682
2691
|
requirements:
|
2683
|
-
- - "
|
2692
|
+
- - ">="
|
2684
2693
|
- !ruby/object:Gem::Version
|
2685
|
-
version:
|
2694
|
+
version: '0'
|
2686
2695
|
requirements:
|
2687
2696
|
- none
|
2688
2697
|
rubygems_version: 3.4.1
|
@@ -1,8 +0,0 @@
|
|
1
|
-
module SpreeCmCommissioner
|
2
|
-
class TaxonBlazerQuery < SpreeCmCommissioner::Base
|
3
|
-
belongs_to :taxon, class_name: 'Spree::Taxon'
|
4
|
-
belongs_to :blazer_query, class_name: 'Blazer::Query'
|
5
|
-
|
6
|
-
validates :taxon_id, uniqueness: { scope: :blazer_query_id, message: I18n.t('event_blazer_queries.fail') }
|
7
|
-
end
|
8
|
-
end
|