spree_cm_commissioner 1.8.4 → 1.8.6.pre.beta1
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 +11 -1
- data/app/controllers/blazer/base_controller_decorator.rb +23 -0
- data/app/controllers/spree/admin/event_blazer_queries_controller.rb +23 -0
- data/app/controllers/spree/api/v2/storefront/active_homepage_events_controller.rb +23 -0
- data/app/controllers/spree/api/v2/tenant/account/orders_controller.rb +48 -0
- data/app/controllers/spree/api/v2/tenant/cart_controller.rb +15 -0
- data/app/controllers/spree/api/v2/tenant/cart_payment_method_groups_controller.rb +33 -0
- data/app/controllers/spree/api/v2/tenant/checkout_controller.rb +14 -0
- data/app/models/spree_cm_commissioner/ability_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/order_decorator.rb +2 -1
- data/app/models/spree_cm_commissioner/role_decorator.rb +9 -0
- data/app/models/spree_cm_commissioner/taxon_blazer_query.rb +8 -0
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +14 -1
- data/app/models/spree_cm_commissioner/tenant.rb +5 -1
- data/app/models/spree_cm_commissioner/trip_connection.rb +30 -0
- data/app/models/spree_cm_commissioner/user_decorator.rb +9 -0
- data/app/overrides/spree/admin/taxons/_form/hide_video_banner.html.erb.deface +7 -0
- data/app/serializers/spree/v2/storefront/active_homepage_event_serializer.rb +18 -0
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -1
- data/app/serializers/spree/v2/tenant/booking_card_class_serializer.rb +10 -0
- data/app/serializers/spree/v2/tenant/guest_card_class_serializer.rb +11 -0
- data/app/serializers/spree/v2/tenant/order_serializer.rb +1 -0
- data/app/serializers/spree/v2/tenant/payment_method_group_serializer.rb +11 -0
- data/app/serializers/spree/v2/tenant/payment_method_serializer.rb +13 -0
- data/app/views/blazer/queries/_content.html.erb +85 -0
- data/app/views/blazer/queries/embed/_content.html.erb +85 -0
- data/app/views/blazer/queries/embed/_download_button.html.erb +7 -0
- data/app/views/blazer/queries/show.html.erb +12 -0
- data/app/views/layouts/blazer/application.html.erb +35 -0
- data/config/initializers/spree_permitted_attributes.rb +1 -0
- data/config/locales/en.yml +3 -0
- data/config/locales/km.yml +5 -1
- data/config/routes.rb +14 -0
- data/db/migrate/20250321041406_create_trip_connections.rb +12 -0
- data/db/migrate/20250327074327_add_hide_video_banner_to_spree_taxon.rb +5 -0
- data/db/migrate/20250328072717_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20250328072841_add_vendor_id_to_spree_roles.rb +6 -0
- data/db/migrate/20250328072947_remove_unique_constraint_from_name_in_spree_roles.rb +7 -0
- data/db/migrate/20250403040036_install_blazer.rb +47 -0
- data/db/migrate/20250403083001_create_spree_cm_commissioner_taxon_blazer_query.rb +9 -0
- data/docs/sql/events/active_homepage_events.sql +14 -0
- data/lib/generators/spree_cm_commissioner/install/install_generator.rb +1 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -0
- data/spree_cm_commissioner.gemspec +1 -1
- metadata +44 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0b65120bd40e618788bb86e33eee9c8a8e153d94009f1d75d0ba14aa4a53892
|
4
|
+
data.tar.gz: 8051369cfb6c2d1629c572092b6ddc25c4ebea0141260342e27d23c87fa4b260
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 529acfe1be953123a8566c8b947e3f9672b1685e9f26de383c1f862c7efd16e64bafb69922a92b4b1c160181d759e019876357acd8ef6c8eb591192b86081cc2
|
7
|
+
data.tar.gz: 5e30758a1ed19f5197120ad204bc619a9c8e798bcae5c1670c9ac0d884872fb033e495f45cc454363c703670eae87ffb9ce4ab6b6cbb7372951175ea733b0b71
|
data/Gemfile.lock
CHANGED
@@ -34,12 +34,13 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (1.8.
|
37
|
+
spree_cm_commissioner (1.8.6.pre.beta1)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
41
41
|
aws-sdk-ecs
|
42
42
|
aws-sdk-s3
|
43
|
+
blazer (~> 3.0.0)
|
43
44
|
byebug
|
44
45
|
counter_culture (~> 3.2)
|
45
46
|
dry-validation (~> 1.10)
|
@@ -215,6 +216,12 @@ GEM
|
|
215
216
|
base64 (0.1.1)
|
216
217
|
bcrypt (3.1.19)
|
217
218
|
bigdecimal (3.1.8)
|
219
|
+
blazer (3.0.4)
|
220
|
+
activerecord (>= 6.1)
|
221
|
+
chartkick (>= 5)
|
222
|
+
csv
|
223
|
+
railties (>= 6.1)
|
224
|
+
safely_block (>= 0.4)
|
218
225
|
bootstrap (4.6.2)
|
219
226
|
autoprefixer-rails (>= 9.1.0)
|
220
227
|
popper_js (>= 1.16.1, < 2)
|
@@ -238,6 +245,7 @@ GEM
|
|
238
245
|
capybara-select-2 (0.5.1)
|
239
246
|
carmen (1.1.3)
|
240
247
|
activesupport (>= 3.0.0)
|
248
|
+
chartkick (5.1.4)
|
241
249
|
chunky_png (1.4.0)
|
242
250
|
coderay (1.1.3)
|
243
251
|
concurrent-ruby (1.2.2)
|
@@ -253,6 +261,7 @@ GEM
|
|
253
261
|
crass (1.0.6)
|
254
262
|
css_parser (1.16.0)
|
255
263
|
addressable
|
264
|
+
csv (3.3.3)
|
256
265
|
database_cleaner (2.0.2)
|
257
266
|
database_cleaner-active_record (>= 2, < 3)
|
258
267
|
database_cleaner-active_record (2.1.0)
|
@@ -698,6 +707,7 @@ GEM
|
|
698
707
|
ffi (~> 1.12)
|
699
708
|
ruby2_keywords (0.0.5)
|
700
709
|
rubyzip (2.3.2)
|
710
|
+
safely_block (0.4.1)
|
701
711
|
sass-rails (6.0.0)
|
702
712
|
sassc-rails (~> 2.1, >= 2.1.1)
|
703
713
|
sassc (2.4.0)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# https://stackoverflow.com/questions/77318060/blazer-raised-activerecordconnectionnotestablished
|
2
|
+
module Blazer
|
3
|
+
module BaseControllerDecorator
|
4
|
+
def self.prepended(base)
|
5
|
+
base.around_action :set_writing_role
|
6
|
+
base.before_action :restrict_organizer_access
|
7
|
+
end
|
8
|
+
|
9
|
+
# Annonymous block: https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/BlockForwarding
|
10
|
+
def set_writing_role(&block)
|
11
|
+
ActiveRecord::Base.connected_to(role: :writing, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def restrict_organizer_access
|
15
|
+
return unless spree_current_user.organizer? && !spree_current_user.admin?
|
16
|
+
return if controller_name == 'queries' && %w[show run].include?(action_name)
|
17
|
+
|
18
|
+
raise ActionController::RoutingError, 'Unauthorized'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Blazer::BaseController.prepend(Blazer::BaseControllerDecorator) unless Blazer::BaseController.ancestors.include?(Blazer::BaseControllerDecorator)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class EventBlazerQueriesController < Spree::Admin::ResourceController
|
4
|
+
def model_class
|
5
|
+
SpreeCmCommissioner::TaxonBlazerQuery
|
6
|
+
end
|
7
|
+
|
8
|
+
def object_name
|
9
|
+
'spree_cm_commissioner_taxon_blazer_query'
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
event_blazer = SpreeCmCommissioner::TaxonBlazerQuery.new(taxon_id: params[:event_id], blazer_query_id: params[:blazer_query_id])
|
14
|
+
if event_blazer.save
|
15
|
+
flash[:success] = I18n.t('event_blazer_queries.success')
|
16
|
+
else
|
17
|
+
flash[:alert] = event_blazer.errors.full_messages.join(', ')
|
18
|
+
end
|
19
|
+
redirect_to blazer.query_path(id: event_blazer.blazer_query_id, event_id: event_blazer.taxon_id)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Storefront
|
5
|
+
class ActiveHomepageEventsController < Spree::Api::V2::ResourceController
|
6
|
+
private
|
7
|
+
|
8
|
+
def collection
|
9
|
+
@collection ||= model_class.active_homepage_events
|
10
|
+
end
|
11
|
+
|
12
|
+
def model_class
|
13
|
+
Spree::Taxon
|
14
|
+
end
|
15
|
+
|
16
|
+
def collection_serializer
|
17
|
+
Spree::V2::Storefront::ActiveHomepageEventSerializer
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Tenant
|
5
|
+
module Account
|
6
|
+
class OrdersController < BaseController
|
7
|
+
around_action :wrap_with_multitenant_without
|
8
|
+
before_action :require_spree_current_user
|
9
|
+
|
10
|
+
def collection
|
11
|
+
scope
|
12
|
+
end
|
13
|
+
|
14
|
+
def resource
|
15
|
+
@resource ||= scope.find_by!(number: params[:id])
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def wrap_with_multitenant_without(&block)
|
21
|
+
MultiTenant.without(&block)
|
22
|
+
end
|
23
|
+
|
24
|
+
def allowed_sort_attributes
|
25
|
+
super << :completed_at
|
26
|
+
end
|
27
|
+
|
28
|
+
def scope
|
29
|
+
spree_current_user.orders.complete
|
30
|
+
end
|
31
|
+
|
32
|
+
def collection_serializer
|
33
|
+
Spree::V2::Tenant::OrderSerializer
|
34
|
+
end
|
35
|
+
|
36
|
+
def resource_serializer
|
37
|
+
Spree::V2::Tenant::OrderSerializer
|
38
|
+
end
|
39
|
+
|
40
|
+
def model_class
|
41
|
+
Spree::Order
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -53,6 +53,17 @@ module Spree
|
|
53
53
|
render_order(result)
|
54
54
|
end
|
55
55
|
|
56
|
+
def remove_line_item
|
57
|
+
spree_authorize! :update, spree_current_order, order_token
|
58
|
+
|
59
|
+
remove_line_item_service.call(
|
60
|
+
order: spree_current_order,
|
61
|
+
line_item: line_item
|
62
|
+
)
|
63
|
+
|
64
|
+
render_serialized_payload { serialized_current_order }
|
65
|
+
end
|
66
|
+
|
56
67
|
def destroy
|
57
68
|
spree_authorize! :update, spree_current_order, order_token
|
58
69
|
|
@@ -145,6 +156,10 @@ module Spree
|
|
145
156
|
Spree::Api::Dependencies.storefront_cart_add_item_service.constantize
|
146
157
|
end
|
147
158
|
|
159
|
+
def remove_line_item_service
|
160
|
+
Spree::Api::Dependencies.storefront_cart_remove_line_item_service.constantize
|
161
|
+
end
|
162
|
+
|
148
163
|
def destroy_cart_service
|
149
164
|
Spree::Api::Dependencies.storefront_cart_destroy_service.constantize
|
150
165
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Tenant
|
5
|
+
class CartPaymentMethodGroupsController < BaseController
|
6
|
+
include Spree::Api::V2::Storefront::OrderConcern
|
7
|
+
|
8
|
+
before_action :ensure_order
|
9
|
+
|
10
|
+
# override
|
11
|
+
def index
|
12
|
+
render_serialized_payload do
|
13
|
+
collection_serializer.new(collection, { include: resource_includes }).serializable_hash
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# override
|
18
|
+
def collection
|
19
|
+
@collection ||= SpreeCmCommissioner::PaymentMethods::GroupByBank.new.execute(
|
20
|
+
payment_methods: spree_current_order.available_payment_methods,
|
21
|
+
preferred_payment_method_id: spree_current_user&.preferred_payment_method_id
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
# override
|
26
|
+
def collection_serializer
|
27
|
+
Spree::V2::Tenant::PaymentMethodGroupSerializer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -47,6 +47,16 @@ module Spree
|
|
47
47
|
render_order(result)
|
48
48
|
end
|
49
49
|
|
50
|
+
def create_payment
|
51
|
+
result = create_payment_service.call(order: spree_current_order, params: params)
|
52
|
+
|
53
|
+
if result.success?
|
54
|
+
render_serialized_payload(201) { serialize_resource(spree_current_order.reload) }
|
55
|
+
else
|
56
|
+
render_error_payload(result.error)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
50
60
|
private
|
51
61
|
|
52
62
|
def wrap_with_multitenant_without(&block)
|
@@ -72,6 +82,10 @@ module Spree
|
|
72
82
|
def update_service
|
73
83
|
Spree::Api::Dependencies.storefront_checkout_update_service.constantize
|
74
84
|
end
|
85
|
+
|
86
|
+
def create_payment_service
|
87
|
+
Vpago::Payments::FindOrCreate
|
88
|
+
end
|
75
89
|
end
|
76
90
|
end
|
77
91
|
end
|
@@ -31,13 +31,14 @@ module SpreeCmCommissioner
|
|
31
31
|
base.has_one :invoice, dependent: :destroy, class_name: 'SpreeCmCommissioner::Invoice'
|
32
32
|
base.has_one :customer, class_name: 'SpreeCmCommissioner::Customer', through: :subscription
|
33
33
|
|
34
|
-
base.belongs_to :tenant, class_name: 'SpreeCmCommissioner::Tenant'
|
34
|
+
base.belongs_to :tenant, class_name: 'SpreeCmCommissioner::Tenant', optional: true
|
35
35
|
base.belongs_to :subscription, class_name: 'SpreeCmCommissioner::Subscription', optional: true
|
36
36
|
|
37
37
|
base.has_many :taxons, class_name: 'Spree::Taxon', through: :customer
|
38
38
|
base.has_many :vendors, through: :products, class_name: 'Spree::Vendor'
|
39
39
|
base.has_many :taxons, through: :products, class_name: 'Spree::Taxon'
|
40
40
|
base.has_many :guests, through: :line_items, class_name: 'SpreeCmCommissioner::Guest'
|
41
|
+
base.has_many :guest_card_classes, class_name: 'SpreeCmCommissioner::GuestCardClass', through: :variants
|
41
42
|
|
42
43
|
base.delegate :customer, to: :user, allow_nil: true
|
43
44
|
|
@@ -4,7 +4,16 @@ module SpreeCmCommissioner
|
|
4
4
|
base.has_many :role_permissions, class_name: 'SpreeCmCommissioner::RolePermission'
|
5
5
|
base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission'
|
6
6
|
|
7
|
+
base.belongs_to :vendor, optional: true
|
8
|
+
|
9
|
+
base.scope :non_vendor, -> { where(vendor_id: nil) }
|
10
|
+
|
7
11
|
base.accepts_nested_attributes_for :role_permissions, allow_destroy: true
|
12
|
+
|
13
|
+
base._validators.reject! { |key, _| key == :name }
|
14
|
+
base._validate_callbacks.each { |c| c.filter.attributes.delete(:name) if c.filter.respond_to?(:attributes) }
|
15
|
+
|
16
|
+
base.validates :name, uniqueness: { scope: :vendor_id, allow_blank: true }
|
8
17
|
end
|
9
18
|
end
|
10
19
|
end
|
@@ -0,0 +1,8 @@
|
|
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
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
module TaxonDecorator
|
3
3
|
# rubocop:disable Metrics/MethodLength
|
4
|
-
def self.prepended(base)
|
4
|
+
def self.prepended(base) # rubocop:disable Metrics/AbcSize
|
5
5
|
base.include SpreeCmCommissioner::TaxonKind
|
6
6
|
base.include SpreeCmCommissioner::Transit::TaxonBitwise
|
7
7
|
|
8
8
|
base.preference :background_color, :string
|
9
9
|
base.preference :foreground_color, :string
|
10
|
+
base.preference :reports, :array, default: []
|
10
11
|
|
11
12
|
base.has_many :taxon_vendors, class_name: 'SpreeCmCommissioner::TaxonVendor'
|
12
13
|
base.has_many :vendors, through: :taxon_vendors
|
@@ -53,6 +54,18 @@ module SpreeCmCommissioner
|
|
53
54
|
base.has_many :invite_user_events, through: :user_events, class_name: 'SpreeCmCommissioner::InviteUserEvent'
|
54
55
|
|
55
56
|
base.has_many :line_items, through: :products
|
57
|
+
base.has_many :event_blazer_queries, class_name: 'SpreeCmCommissioner::TaxonBlazerQuery'
|
58
|
+
base.has_many :blazer_queries, through: :event_blazer_queries, class_name: 'Blazer::Query'
|
59
|
+
|
60
|
+
def base.active_homepage_events
|
61
|
+
joins(:homepage_section_relatables)
|
62
|
+
.joins("INNER JOIN spree_taxons taxon ON taxon.id = cm_homepage_section_relatables.relatable_id
|
63
|
+
AND cm_homepage_section_relatables.relatable_type = 'Spree::Taxon'"
|
64
|
+
)
|
65
|
+
.joins('INNER JOIN cm_homepage_sections ON cm_homepage_section_relatables.homepage_section_id = cm_homepage_sections.id')
|
66
|
+
.where(cm_homepage_sections: { tenant_id: nil, active: true })
|
67
|
+
.where(kind: :event)
|
68
|
+
end
|
56
69
|
end
|
57
70
|
# rubocop:enable Metrics/MethodLength
|
58
71
|
|
@@ -3,7 +3,11 @@ module SpreeCmCommissioner
|
|
3
3
|
extend FriendlyId
|
4
4
|
friendly_id :name, use: :history
|
5
5
|
|
6
|
-
has_many :vendors, class_name: 'Spree::Vendor'
|
6
|
+
has_many :vendors, class_name: 'Spree::Vendor', inverse_of: :tenant
|
7
|
+
has_many :orders, class_name: 'Spree::Order', inverse_of: :tenant
|
8
|
+
has_many :tenant_payment_methods, class_name: 'Spree::PaymentMethod',
|
9
|
+
through: :vendors,
|
10
|
+
source: :payment_methods
|
7
11
|
|
8
12
|
enum state: { enabled: 0, disabled: 1 }
|
9
13
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
class TripConnection < ApplicationRecord
|
3
|
+
attr_accessor :hours, :minutes
|
4
|
+
|
5
|
+
belongs_to :from_trip, class_name: 'Spree::Variant'
|
6
|
+
belongs_to :to_trip, class_name: 'Spree::Variant'
|
7
|
+
|
8
|
+
validate :both_trip_cannot_be_the_same
|
9
|
+
before_validation :calculate_connection_time_minutes
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def calculate_connection_time_minutes
|
14
|
+
return if from_trip.nil? || to_trip.nil?
|
15
|
+
|
16
|
+
connection_time_in_minutes = (to_trip.options.departure_time - from_trip.options.arrival_time) / 60
|
17
|
+
if connection_time_in_minutes.between?(0, 180)
|
18
|
+
self.connection_time_minutes = connection_time_in_minutes
|
19
|
+
else
|
20
|
+
errors.add(:base, 'Connection time should be between 0 and 180 minutes')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def both_trip_cannot_be_the_same
|
25
|
+
return unless from_trip.id == to_trip.id
|
26
|
+
|
27
|
+
errors.add(:base, 'Both trip cannot be the same')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -55,6 +55,15 @@ module SpreeCmCommissioner
|
|
55
55
|
base.has_many :places, through: :user_places, class_name: 'SpreeCmCommissioner::Place'
|
56
56
|
end
|
57
57
|
|
58
|
+
def permissions_for_vendor(vendor_id)
|
59
|
+
permissions.joins(role_permissions: :role).where(spree_roles: { vendor_id: vendor_id })
|
60
|
+
end
|
61
|
+
|
62
|
+
# override
|
63
|
+
def has_spree_role?(role_name) # rubocop:disable Naming/PredicateName
|
64
|
+
spree_roles.non_vendor.exists?(name: role_name)
|
65
|
+
end
|
66
|
+
|
58
67
|
def super_admin?
|
59
68
|
has_spree_role?('super_admin')
|
60
69
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<!-- insert_before "erb[loud]:contains('field_container :hide_from_nav')" -->
|
2
|
+
|
3
|
+
<%= f.field_container :hide_video_banner, class: ['custom-control', 'custom-checkbox', 'my-4'] do %>
|
4
|
+
<%= f.check_box :hide_video_banner, class: 'custom-control-input' %>
|
5
|
+
<%= f.label :hide_video_banner, Spree.t(:hide_video_banner), class: 'custom-control-label' %>
|
6
|
+
<%= f.error_message_on :hide_video_banner %>
|
7
|
+
<% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Spree
|
2
|
+
module V2
|
3
|
+
module Storefront
|
4
|
+
class ActiveHomepageEventSerializer < BaseSerializer
|
5
|
+
attributes :name, :pretty_name, :permalink, :seo_title,
|
6
|
+
:description, :meta_title, :meta_description, :meta_keywords,
|
7
|
+
:depth, :updated_at, :custom_redirect_url, :kind,
|
8
|
+
:subtitle, :from_date, :to_date
|
9
|
+
|
10
|
+
attribute :is_root, &:root?
|
11
|
+
attribute :is_child, &:child?
|
12
|
+
attribute :is_leaf, &:leaf?
|
13
|
+
|
14
|
+
has_one :category_icon, serializer: ::SpreeCmCommissioner::V2::Storefront::AssetSerializer
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -14,7 +14,7 @@ module Spree
|
|
14
14
|
|
15
15
|
base.attributes :custom_redirect_url, :kind, :subtitle, :from_date, :to_date,
|
16
16
|
:background_color, :foreground_color, :show_badge_status,
|
17
|
-
:purchasable_on, :vendor_id, :available_on
|
17
|
+
:purchasable_on, :vendor_id, :available_on, :hide_video_banner
|
18
18
|
|
19
19
|
base.attribute :purchasable_on_app do |taxon|
|
20
20
|
taxon.purchasable_on == 'app' || taxon.purchasable_on == 'both'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spree
|
2
|
+
module V2
|
3
|
+
module Tenant
|
4
|
+
class PaymentMethodSerializer < BaseSerializer
|
5
|
+
attributes :type, :name, :description, :public_metadata
|
6
|
+
|
7
|
+
attribute :preferences do |object|
|
8
|
+
object.public_preferences.as_json
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
<% blazer_title @query.name %>
|
2
|
+
|
3
|
+
<div class="topbar">
|
4
|
+
<div class="container">
|
5
|
+
<div class="row" style="padding-top: 13px;">
|
6
|
+
<div class="col-sm-9">
|
7
|
+
<%= render partial: "blazer/nav" %>
|
8
|
+
<h3 style="line-height: 34px; display: inline; margin-left: 5px;">
|
9
|
+
<%= @query.name %>
|
10
|
+
</h3>
|
11
|
+
</div>
|
12
|
+
<div class="col-sm-3 text-right">
|
13
|
+
<%= link_to "Edit", edit_query_path(@query, params: variable_params(@query)), class: "btn btn-default", disabled: !@query.editable?(blazer_user) %>
|
14
|
+
<%= link_to "Fork", new_query_path(params: {variables: variable_params(@query), fork_query_id: @query.id, data_source: @query.data_source, name: @query.name}), class: "btn btn-info" %>
|
15
|
+
|
16
|
+
<% if !@error && @success %>
|
17
|
+
<%= button_to "Download", run_queries_path(format: "csv"), params: @run_data, class: "btn btn-primary" %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div style="margin-bottom: 60px;"></div>
|
25
|
+
|
26
|
+
<% if @sql_errors.any? %>
|
27
|
+
<div class="alert alert-danger">
|
28
|
+
<ul>
|
29
|
+
<% @sql_errors.each do |message| %>
|
30
|
+
<li><%= message %></li>
|
31
|
+
<% end %>
|
32
|
+
</ul>
|
33
|
+
</div>
|
34
|
+
<% end %>
|
35
|
+
|
36
|
+
<% if @query.description.present? %>
|
37
|
+
<p style="white-space: pre-line;"><%= @query.description %></p>
|
38
|
+
<% end %>
|
39
|
+
|
40
|
+
<div style="display: flex;">
|
41
|
+
<%= render partial: "blazer/variables", locals: { action: query_path(@query) } %>
|
42
|
+
<% if !@error && @success && params[:event_id].present? %>
|
43
|
+
<div>
|
44
|
+
<%= link_to 'Save Event',
|
45
|
+
spree.admin_event_blazer_queries_path(event_id: params[:event_id], blazer_query_id: params[:id].split('-').first),
|
46
|
+
method: :post,
|
47
|
+
class: "btn btn-primary",
|
48
|
+
style: "margin-left: 10px;" %>
|
49
|
+
</div>
|
50
|
+
<% end %>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<% if flash[:success] %>
|
54
|
+
<div class="alert alert-success">
|
55
|
+
<%= flash[:success] %>
|
56
|
+
</div>
|
57
|
+
<% elsif flash[:alert] %>
|
58
|
+
<div class="alert alert-danger">
|
59
|
+
<%= flash[:alert] %>
|
60
|
+
</div>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
|
64
|
+
<pre id="code"><code><%= @statement.display_statement %></code></pre>
|
65
|
+
|
66
|
+
<% if @success %>
|
67
|
+
<div id="results">
|
68
|
+
<p class="text-muted">Loading...</p>
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<script>
|
72
|
+
function showRun(data) {
|
73
|
+
$("#results").html(data)
|
74
|
+
$("#results table").stupidtable(stupidtableCustomSettings).stickyTableHeaders({fixedOffset: 60})
|
75
|
+
}
|
76
|
+
|
77
|
+
function showError(message) {
|
78
|
+
$("#results").addClass("query-error").html(message)
|
79
|
+
}
|
80
|
+
|
81
|
+
<%= blazer_js_var "data", @run_data %>
|
82
|
+
|
83
|
+
runQuery(data, showRun, showError)
|
84
|
+
</script>
|
85
|
+
<% end %>
|
@@ -0,0 +1,85 @@
|
|
1
|
+
<div class="topbar">
|
2
|
+
<div class="row" style="padding-top: 13px; margin: 0;">
|
3
|
+
<div class="col-sm-9"></div>
|
4
|
+
<div class="col-sm-3 text-right">
|
5
|
+
<%= render partial: 'blazer/queries/embed/download_button' %>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div style="margin-bottom: 10px;"></div>
|
10
|
+
|
11
|
+
<% if @success %>
|
12
|
+
<div id="results" style="font-family: 'Poppins', sans-serif;"></div>
|
13
|
+
<p class="text-muted">Loading...</p>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<script>
|
17
|
+
function showRun(data) {
|
18
|
+
$("#results").html(data)
|
19
|
+
$("#results table").stupidtable(stupidtableCustomSettings).stickyTableHeaders({fixedOffset: 60})
|
20
|
+
}
|
21
|
+
|
22
|
+
function showError(message) {
|
23
|
+
$("#results").addClass("query-error").html(message)
|
24
|
+
}
|
25
|
+
|
26
|
+
<%= blazer_js_var "data", @run_data %>
|
27
|
+
|
28
|
+
runQuery(data, showRun, showError)
|
29
|
+
</script>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
|
33
|
+
<% theme = cookies[:theme] %>
|
34
|
+
<%
|
35
|
+
colors = {
|
36
|
+
'dark' => { background: '#1a1f26', text: '#fff', table_background: 'oklch(25.33% 0.016 252.42)', border: '#2f353d' },
|
37
|
+
'light' => { background: '#f7f9fa', text: '#000', table_background: '#fff', border: '#E5E7EB' }
|
38
|
+
}
|
39
|
+
theme_colors = colors[theme] || colors['light']
|
40
|
+
%>
|
41
|
+
|
42
|
+
<style>
|
43
|
+
.topbar {
|
44
|
+
background-color: <%= theme_colors[:background] %>;
|
45
|
+
}
|
46
|
+
|
47
|
+
#results table {
|
48
|
+
background-color: <%= theme_colors[:table_background] %>;
|
49
|
+
color: <%= theme_colors[:text] %>;
|
50
|
+
border: none;
|
51
|
+
}
|
52
|
+
|
53
|
+
#results table th,
|
54
|
+
#results table td {
|
55
|
+
font-size: 16px;
|
56
|
+
padding: 15px;
|
57
|
+
border-bottom: 1px solid <%= theme_colors[:border] %>;
|
58
|
+
}
|
59
|
+
|
60
|
+
#results table th {
|
61
|
+
font-weight: 700;
|
62
|
+
background-color: <%= theme_colors[:table_background] %>;
|
63
|
+
}
|
64
|
+
|
65
|
+
#results table td {
|
66
|
+
font-size: 14px;
|
67
|
+
}
|
68
|
+
|
69
|
+
.download-btn {
|
70
|
+
background-color: <%= theme_colors[:table_background] %>;
|
71
|
+
border: 1px solid <%= theme_colors[:border] %>;
|
72
|
+
border-radius: 50%;
|
73
|
+
width: 40px;
|
74
|
+
height: 40px;
|
75
|
+
display: flex;
|
76
|
+
align-items: center;
|
77
|
+
justify-content: center;
|
78
|
+
}
|
79
|
+
|
80
|
+
.download-btn svg {
|
81
|
+
width: 15px;
|
82
|
+
height: 15px;
|
83
|
+
fill: <%= theme_colors[:text] %>;
|
84
|
+
}
|
85
|
+
</style>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<% if !@error && @success %>
|
2
|
+
<%= button_to run_queries_path(format: "csv"), params: @run_data, class: "download-btn" do %>
|
3
|
+
<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<path d="M0 17H18V19H0V17ZM10 11.1716L16.0711 5.1005L17.4853 6.51472L9 15L0.51472 6.51472L1.92893 5.1005L8 11.1716V0H10V11.1716Z" />
|
5
|
+
</svg>
|
6
|
+
<% end %>
|
7
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% if params[:embed].present? %>
|
2
|
+
<%= render partial: "blazer/queries/embed/content" %>
|
3
|
+
<% else %>
|
4
|
+
<%= render partial: "content" %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<script>
|
8
|
+
var code = $("#code code");
|
9
|
+
if (code.text().length < 10000) {
|
10
|
+
hljs.highlightElement(code.get(0));
|
11
|
+
}
|
12
|
+
</script>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= blazer_title ? blazer_title : "Blazer" %></title>
|
5
|
+
|
6
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
7
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
|
9
|
+
|
10
|
+
<meta charset="utf-8" />
|
11
|
+
<%= favicon_link_tag "blazer/favicon.png" %>
|
12
|
+
<% if defined?(Propshaft::Railtie) %>
|
13
|
+
<%= stylesheet_link_tag "blazer/bootstrap-propshaft", "blazer/bootstrap", "blazer/selectize", "blazer/github", "blazer/daterangepicker", "blazer/application" %>
|
14
|
+
<%= javascript_include_tag "blazer/jquery", "blazer/rails-ujs", "blazer/stupidtable", "blazer/stupidtable-custom-settings", "blazer/jquery.stickytableheaders", "blazer/selectize", "blazer/highlight.min", "blazer/moment", "blazer/moment-timezone-with-data", "blazer/daterangepicker", "blazer/chart.umd", "blazer/chartjs-adapter-date-fns.bundle", "blazer/chartkick", "blazer/mapkick.bundle", "blazer/ace/ace", "blazer/ace/ext-language_tools", "blazer/ace/theme-twilight", "blazer/ace/mode-sql", "blazer/ace/snippets/text", "blazer/ace/snippets/sql", "blazer/Sortable", "blazer/bootstrap", "blazer/vue.global.prod", "blazer/routes", "blazer/queries", "blazer/fuzzysearch", "blazer/application" %>
|
15
|
+
<% else %>
|
16
|
+
<%= stylesheet_link_tag "blazer/application" %>
|
17
|
+
<%= javascript_include_tag "blazer/application" %>
|
18
|
+
<% end %>
|
19
|
+
<script>
|
20
|
+
<%= blazer_js_var "rootPath", root_path %>
|
21
|
+
</script>
|
22
|
+
<%= csrf_meta_tags %>
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
<% if params[:embed].present? %>
|
26
|
+
<div>
|
27
|
+
<%= yield %>
|
28
|
+
</div>
|
29
|
+
<% else %>
|
30
|
+
<div class="container">
|
31
|
+
<%= yield %>
|
32
|
+
</div>
|
33
|
+
<% end %>
|
34
|
+
</body>
|
35
|
+
</html>
|
data/config/locales/en.yml
CHANGED
@@ -573,4 +573,7 @@ en:
|
|
573
573
|
url_expired: 'Invitation link is expired'
|
574
574
|
already_invited: 'Failed: User already invited to event'
|
575
575
|
update_fail: 'Failed: to Update invite user'
|
576
|
+
event_blazer_queries:
|
577
|
+
success: 'Event saved Successfully'
|
578
|
+
fail: 'Event already saved'
|
576
579
|
|
data/config/locales/km.yml
CHANGED
@@ -417,4 +417,8 @@ km:
|
|
417
417
|
accept_fail: 'បរាជ័យក្នុងការទទួលយកការអញ្ជើញ'
|
418
418
|
url_expired: 'តំណអញ្ជើញបានផុតកំណត់'
|
419
419
|
already_invited: 'បរាជ័យ៖ អ្នកប្រើប្រាស់បានអញ្ជើញចូលរួមព្រឹត្តិការណ៍រួចហើយ'
|
420
|
-
update_fail: 'បរាជ័យ៖ ធ្វើបច្ចុប្បន្នភាពអ្នកប្រើប្រាស់អញ្ជើញ'
|
420
|
+
update_fail: 'បរាជ័យ៖ ធ្វើបច្ចុប្បន្នភាពអ្នកប្រើប្រាស់អញ្ជើញ'
|
421
|
+
|
422
|
+
event_blazer_queries:
|
423
|
+
success: 'បានរក្សាទុកព្រឹត្តិការណ៍ដោយជោគជ័យ'
|
424
|
+
fail: 'បានរក្សាទុកព្រឹត្តិការណ៍រួចហើយs'
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
Spree::Core::Engine.add_routes do
|
2
2
|
# Add your extension routes here
|
3
|
+
|
4
|
+
authenticate :spree_user, -> (user) { user.admin? || user.organizer? } do
|
5
|
+
mount Blazer::Engine, at: 'admin/bi_reports'
|
6
|
+
end
|
7
|
+
|
3
8
|
namespace :admin do
|
4
9
|
post '/invalidate_api_caches', to: 'base#invalidate_api_caches'
|
5
10
|
|
@@ -267,6 +272,7 @@ Spree::Core::Engine.add_routes do
|
|
267
272
|
resources :tenants do
|
268
273
|
resources :vendors, controller: :tenant_vendors
|
269
274
|
end
|
275
|
+
resources :event_blazer_queries
|
270
276
|
end
|
271
277
|
|
272
278
|
resources :events, controller: 'events/base' do
|
@@ -463,9 +469,13 @@ Spree::Core::Engine.add_routes do
|
|
463
469
|
resource :account, controller: :account, only: %i[show update]
|
464
470
|
resource :account_deletions, only: %i[destroy]
|
465
471
|
resource :account_recovers, only: [:update]
|
472
|
+
namespace :account do
|
473
|
+
resources :orders, controller: :orders, only: %i[index show]
|
474
|
+
end
|
466
475
|
|
467
476
|
resource :cart, controller: :cart, only: %i[show create destroy] do
|
468
477
|
post :add_item
|
478
|
+
delete 'remove_line_item/:line_item_id', to: 'cart#remove_line_item', as: :cart_remove_line_item
|
469
479
|
patch :set_quantity
|
470
480
|
patch :apply_coupon_code
|
471
481
|
delete 'remove_coupon_code/:coupon_code', to: 'cart#remove_coupon_code', as: :cart_remove_coupon_code
|
@@ -479,6 +489,7 @@ Spree::Core::Engine.add_routes do
|
|
479
489
|
patch :next
|
480
490
|
patch :advance
|
481
491
|
patch :complete
|
492
|
+
post :create_payment
|
482
493
|
end
|
483
494
|
|
484
495
|
resources :customer_notifications, only: [:show]
|
@@ -492,9 +503,11 @@ Spree::Core::Engine.add_routes do
|
|
492
503
|
end
|
493
504
|
|
494
505
|
resources :user_account_linkages, only: %i[index create destroy]
|
506
|
+
resources :cart_payment_method_groups, only: %i[index]
|
495
507
|
resource :s3_signed_urls
|
496
508
|
resource :profile_images, only: %i[update destroy]
|
497
509
|
resources :line_items, only: %i[index show]
|
510
|
+
resources :guest_card_classes
|
498
511
|
end
|
499
512
|
|
500
513
|
namespace :storefront do
|
@@ -574,6 +587,7 @@ Spree::Core::Engine.add_routes do
|
|
574
587
|
resources :homepage_sections, only: [:index]
|
575
588
|
resource :homepage_background, controller: :homepage_background, only: [:show]
|
576
589
|
end
|
590
|
+
resources :active_homepage_events, only: [:index]
|
577
591
|
|
578
592
|
resources :qr_urls, only: [:show]
|
579
593
|
resources :guest_qrs, only: [:show]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateTripConnections < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :cm_trip_connections, if_not_exists: true do |t|
|
4
|
+
t.references :from_trip, null: false, foreign_key: { to_table: :spree_variants }, index: true,if_not_exists: true
|
5
|
+
t.references :to_trip, null: false, foreign_key: { to_table: :spree_variants }, index: true, if_not_exists: true
|
6
|
+
t.integer :connection_time_minutes, null: false, if_not_exists: true
|
7
|
+
t.text :description, null: true, if_not_exists: true
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class InstallBlazer < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :blazer_queries do |t|
|
4
|
+
t.references :creator
|
5
|
+
t.string :name
|
6
|
+
t.text :description
|
7
|
+
t.text :statement
|
8
|
+
t.string :data_source
|
9
|
+
t.string :status
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
|
13
|
+
create_table :blazer_audits do |t|
|
14
|
+
t.references :user
|
15
|
+
t.references :query
|
16
|
+
t.text :statement
|
17
|
+
t.string :data_source
|
18
|
+
t.datetime :created_at
|
19
|
+
end
|
20
|
+
|
21
|
+
create_table :blazer_dashboards do |t|
|
22
|
+
t.references :creator
|
23
|
+
t.string :name
|
24
|
+
t.timestamps null: false
|
25
|
+
end
|
26
|
+
|
27
|
+
create_table :blazer_dashboard_queries do |t|
|
28
|
+
t.references :dashboard
|
29
|
+
t.references :query
|
30
|
+
t.integer :position
|
31
|
+
t.timestamps null: false
|
32
|
+
end
|
33
|
+
|
34
|
+
create_table :blazer_checks do |t|
|
35
|
+
t.references :creator
|
36
|
+
t.references :query
|
37
|
+
t.string :state
|
38
|
+
t.string :schedule
|
39
|
+
t.text :emails
|
40
|
+
t.text :slack_channels
|
41
|
+
t.string :check_type
|
42
|
+
t.text :message
|
43
|
+
t.datetime :last_run_at
|
44
|
+
t.timestamps null: false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class CreateSpreeCmCommissionerTaxonBlazerQuery < ActiveRecord::Migration[7.0]
|
2
|
+
def change
|
3
|
+
create_table :cm_taxon_blazer_queries,if_not_exists: true do |t|
|
4
|
+
t.references :taxon, foreign_key: { to_table: :spree_taxons }, null: false, index: true
|
5
|
+
t.references :blazer_query, foreign_key: { to_table: :blazer_queries }, null: false, index: true
|
6
|
+
t.timestamps
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
SELECT
|
2
|
+
*
|
3
|
+
FROM spree_taxons
|
4
|
+
|
5
|
+
INNER JOIN cm_homepage_section_relatables
|
6
|
+
ON spree_taxons.id = cm_homepage_section_relatables.relatable_id
|
7
|
+
AND cm_homepage_section_relatables.relatable_type = 'Spree::Taxon'
|
8
|
+
|
9
|
+
INNER JOIN cm_homepage_sections
|
10
|
+
ON cm_homepage_section_relatables.homepage_section_id = cm_homepage_sections.id
|
11
|
+
|
12
|
+
WHERE cm_homepage_sections.tenant_id IS NULL
|
13
|
+
AND cm_homepage_sections.active = TRUE
|
14
|
+
AND spree_taxons.kind = 2
|
@@ -28,7 +28,6 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_dependency 'spree_backend', spree_opts
|
29
29
|
s.add_dependency 'spree_multi_vendor', '>= 2.4.1'
|
30
30
|
s.add_dependency 'spree_extension'
|
31
|
-
|
32
31
|
s.add_dependency 'activerecord-multi-tenant'
|
33
32
|
s.add_dependency 'phonelib'
|
34
33
|
s.add_dependency 'aws-sdk-ecs'
|
@@ -56,5 +55,6 @@ Gem::Specification.new do |s|
|
|
56
55
|
s.add_dependency 'counter_culture', '~> 3.2'
|
57
56
|
s.add_development_dependency 'pg'
|
58
57
|
s.add_development_dependency 'spree_dev_tools'
|
58
|
+
s.add_dependency 'blazer', '~> 3.0.0'
|
59
59
|
s.metadata['rubygems_mfa_required'] = 'true'
|
60
60
|
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.8.
|
4
|
+
version: 1.8.6.pre.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- You
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03
|
11
|
+
date: 2025-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree
|
@@ -478,6 +478,20 @@ dependencies:
|
|
478
478
|
- - ">="
|
479
479
|
- !ruby/object:Gem::Version
|
480
480
|
version: '0'
|
481
|
+
- !ruby/object:Gem::Dependency
|
482
|
+
name: blazer
|
483
|
+
requirement: !ruby/object:Gem::Requirement
|
484
|
+
requirements:
|
485
|
+
- - "~>"
|
486
|
+
- !ruby/object:Gem::Version
|
487
|
+
version: 3.0.0
|
488
|
+
type: :runtime
|
489
|
+
prerelease: false
|
490
|
+
version_requirements: !ruby/object:Gem::Requirement
|
491
|
+
requirements:
|
492
|
+
- - "~>"
|
493
|
+
- !ruby/object:Gem::Version
|
494
|
+
version: 3.0.0
|
481
495
|
description: Add (optional) extension description here
|
482
496
|
email: you@example.com
|
483
497
|
executables: []
|
@@ -657,6 +671,7 @@ files:
|
|
657
671
|
- app/assets/stylesheets/spree_cm_commissioner/telegram/telegram_bot.css.scss
|
658
672
|
- app/assets/stylesheets/spree_cm_commissioner/vehicle_seat.css
|
659
673
|
- app/controllers/.gitkeep
|
674
|
+
- app/controllers/blazer/base_controller_decorator.rb
|
660
675
|
- app/controllers/concerns/spree/billing/order_parents_concern.rb
|
661
676
|
- app/controllers/concerns/spree/billing/payment_creatable.rb
|
662
677
|
- app/controllers/concerns/spree/billing/payment_fireable.rb
|
@@ -674,6 +689,7 @@ files:
|
|
674
689
|
- app/controllers/spree/admin/classifications_controller.rb
|
675
690
|
- app/controllers/spree/admin/customer_notifications_controller.rb
|
676
691
|
- app/controllers/spree/admin/device_tokens_controller.rb
|
692
|
+
- app/controllers/spree/admin/event_blazer_queries_controller.rb
|
677
693
|
- app/controllers/spree/admin/feature_images_controller.rb
|
678
694
|
- app/controllers/spree/admin/google_wallets_controller.rb
|
679
695
|
- app/controllers/spree/admin/guest_card_classes_controller.rb
|
@@ -761,6 +777,7 @@ files:
|
|
761
777
|
- app/controllers/spree/api/v2/storefront/account_checker_controller.rb
|
762
778
|
- app/controllers/spree/api/v2/storefront/account_deletions_controller.rb
|
763
779
|
- app/controllers/spree/api/v2/storefront/account_recovers_controller.rb
|
780
|
+
- app/controllers/spree/api/v2/storefront/active_homepage_events_controller.rb
|
764
781
|
- app/controllers/spree/api/v2/storefront/anonymous_line_items_controller.rb
|
765
782
|
- app/controllers/spree/api/v2/storefront/anonymous_orders_controller.rb
|
766
783
|
- app/controllers/spree/api/v2/storefront/cart_guests_controller.rb
|
@@ -812,6 +829,7 @@ files:
|
|
812
829
|
- app/controllers/spree/api/v2/storefront/waiting_room_sessions_controller.rb
|
813
830
|
- app/controllers/spree/api/v2/storefront/wished_items_controller.rb
|
814
831
|
- app/controllers/spree/api/v2/storefront/wishlists_controller_decorator.rb
|
832
|
+
- app/controllers/spree/api/v2/tenant/account/orders_controller.rb
|
815
833
|
- app/controllers/spree/api/v2/tenant/account_checker_controller.rb
|
816
834
|
- app/controllers/spree/api/v2/tenant/account_controller.rb
|
817
835
|
- app/controllers/spree/api/v2/tenant/account_deletions_controller.rb
|
@@ -819,6 +837,7 @@ files:
|
|
819
837
|
- app/controllers/spree/api/v2/tenant/base_controller.rb
|
820
838
|
- app/controllers/spree/api/v2/tenant/cart_controller.rb
|
821
839
|
- app/controllers/spree/api/v2/tenant/cart_guests_controller.rb
|
840
|
+
- app/controllers/spree/api/v2/tenant/cart_payment_method_groups_controller.rb
|
822
841
|
- app/controllers/spree/api/v2/tenant/checkout_controller.rb
|
823
842
|
- app/controllers/spree/api/v2/tenant/customer_notifications_controller.rb
|
824
843
|
- app/controllers/spree/api/v2/tenant/guests_controller.rb
|
@@ -1210,6 +1229,7 @@ files:
|
|
1210
1229
|
- app/models/spree_cm_commissioner/store_decorator.rb
|
1211
1230
|
- app/models/spree_cm_commissioner/subscription.rb
|
1212
1231
|
- app/models/spree_cm_commissioner/taxon_app_banner.rb
|
1232
|
+
- app/models/spree_cm_commissioner/taxon_blazer_query.rb
|
1213
1233
|
- app/models/spree_cm_commissioner/taxon_brand_logo.rb
|
1214
1234
|
- app/models/spree_cm_commissioner/taxon_category_icon.rb
|
1215
1235
|
- app/models/spree_cm_commissioner/taxon_decorator.rb
|
@@ -1221,6 +1241,7 @@ files:
|
|
1221
1241
|
- app/models/spree_cm_commissioner/telegram_bot.rb
|
1222
1242
|
- app/models/spree_cm_commissioner/tenant.rb
|
1223
1243
|
- app/models/spree_cm_commissioner/trip.rb
|
1244
|
+
- app/models/spree_cm_commissioner/trip_connection.rb
|
1224
1245
|
- app/models/spree_cm_commissioner/trip_stop.rb
|
1225
1246
|
- app/models/spree_cm_commissioner/user_decorator.rb
|
1226
1247
|
- app/models/spree_cm_commissioner/user_deletion_survey.rb
|
@@ -1349,6 +1370,7 @@ files:
|
|
1349
1370
|
- app/overrides/spree/admin/taxons/_form/available_on.html.erb.deface
|
1350
1371
|
- app/overrides/spree/admin/taxons/_form/background_color_and_foreground_color.html.erb.deface
|
1351
1372
|
- app/overrides/spree/admin/taxons/_form/custom_redirect_url.html.erb.deface
|
1373
|
+
- app/overrides/spree/admin/taxons/_form/hide_video_banner.html.erb.deface
|
1352
1374
|
- app/overrides/spree/admin/taxons/_form/kind_html.erb.deface
|
1353
1375
|
- app/overrides/spree/admin/taxons/_form/purchasable_on_status.html.erb.deface
|
1354
1376
|
- app/overrides/spree/admin/taxons/_form/show_badge_status.html.erb.deface
|
@@ -1421,6 +1443,7 @@ files:
|
|
1421
1443
|
- app/serializers/spree/v2/organizer/ticket_serializer.rb
|
1422
1444
|
- app/serializers/spree/v2/organizer/user_serializer.rb
|
1423
1445
|
- app/serializers/spree/v2/storefront/accommodation_serializer.rb
|
1446
|
+
- app/serializers/spree/v2/storefront/active_homepage_event_serializer.rb
|
1424
1447
|
- app/serializers/spree/v2/storefront/address_serializer_decorator.rb
|
1425
1448
|
- app/serializers/spree/v2/storefront/cart_serializer_decorator.rb
|
1426
1449
|
- app/serializers/spree/v2/storefront/customer_notification_serializer.rb
|
@@ -1451,8 +1474,10 @@ files:
|
|
1451
1474
|
- app/serializers/spree/v2/tenant/address_serializer.rb
|
1452
1475
|
- app/serializers/spree/v2/tenant/asset_serializer.rb
|
1453
1476
|
- app/serializers/spree/v2/tenant/base_serializer.rb
|
1477
|
+
- app/serializers/spree/v2/tenant/booking_card_class_serializer.rb
|
1454
1478
|
- app/serializers/spree/v2/tenant/customer_notification_serializer.rb
|
1455
1479
|
- app/serializers/spree/v2/tenant/digital_link_serializer.rb
|
1480
|
+
- app/serializers/spree/v2/tenant/guest_card_class_serializer.rb
|
1456
1481
|
- app/serializers/spree/v2/tenant/guest_serializer.rb
|
1457
1482
|
- app/serializers/spree/v2/tenant/homepage_section_relatable_serializer.rb
|
1458
1483
|
- app/serializers/spree/v2/tenant/homepage_section_serializer.rb
|
@@ -1462,6 +1487,8 @@ files:
|
|
1462
1487
|
- app/serializers/spree/v2/tenant/option_type_serializer.rb
|
1463
1488
|
- app/serializers/spree/v2/tenant/option_value_serializer.rb
|
1464
1489
|
- app/serializers/spree/v2/tenant/order_serializer.rb
|
1490
|
+
- app/serializers/spree/v2/tenant/payment_method_group_serializer.rb
|
1491
|
+
- app/serializers/spree/v2/tenant/payment_method_serializer.rb
|
1465
1492
|
- app/serializers/spree/v2/tenant/role_serializer.rb
|
1466
1493
|
- app/serializers/spree/v2/tenant/s3_signed_url_serializer.rb
|
1467
1494
|
- app/serializers/spree/v2/tenant/stock_item_serializer.rb
|
@@ -1572,6 +1599,11 @@ files:
|
|
1572
1599
|
- app/services/spree_cm_commissioner/webhooks/subscribers/handle_request_decorator.rb
|
1573
1600
|
- app/services/spree_cm_commissioner/webhooks/subscribers/make_request.rb
|
1574
1601
|
- app/services/spree_cm_commissioner/webhooks/subscribers/queue_requests_decorator.rb
|
1602
|
+
- app/views/blazer/queries/_content.html.erb
|
1603
|
+
- app/views/blazer/queries/embed/_content.html.erb
|
1604
|
+
- app/views/blazer/queries/embed/_download_button.html.erb
|
1605
|
+
- app/views/blazer/queries/show.html.erb
|
1606
|
+
- app/views/layouts/blazer/application.html.erb
|
1575
1607
|
- app/views/shared/_asset_field.html.erb
|
1576
1608
|
- app/views/shared/_calendar.html.erb
|
1577
1609
|
- app/views/shared/_kind_field.html.erb
|
@@ -2276,11 +2308,19 @@ files:
|
|
2276
2308
|
- db/migrate/20250307073003_add_tenant_id_to_cm_customer_notifications.rb
|
2277
2309
|
- db/migrate/20250307083809_remove_tenant_id_from_cm_notifications.rb
|
2278
2310
|
- db/migrate/20250314013434_add_available_on_to_spree_taxons.rb
|
2311
|
+
- db/migrate/20250321041406_create_trip_connections.rb
|
2312
|
+
- db/migrate/20250327074327_add_hide_video_banner_to_spree_taxon.rb
|
2313
|
+
- db/migrate/20250328072717_add_description_to_spree_roles.rb
|
2314
|
+
- db/migrate/20250328072841_add_vendor_id_to_spree_roles.rb
|
2315
|
+
- db/migrate/20250328072947_remove_unique_constraint_from_name_in_spree_roles.rb
|
2316
|
+
- db/migrate/20250403040036_install_blazer.rb
|
2317
|
+
- db/migrate/20250403083001_create_spree_cm_commissioner_taxon_blazer_query.rb
|
2279
2318
|
- docker-compose.yml
|
2280
2319
|
- docs/option_types/attr_types.md
|
2281
2320
|
- docs/private_key.pem
|
2282
2321
|
- docs/public_key.pem
|
2283
2322
|
- docs/spree_core/add_new_promotion.md
|
2323
|
+
- docs/sql/events/active_homepage_events.sql
|
2284
2324
|
- docs/sql/subscriptions/remaining_subscriptions.sql
|
2285
2325
|
- docs/webhook/sqs.rb
|
2286
2326
|
- docs/webhook/sqs/params_job_complete.json
|
@@ -2413,9 +2453,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2413
2453
|
version: '2.7'
|
2414
2454
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2415
2455
|
requirements:
|
2416
|
-
- - "
|
2456
|
+
- - ">"
|
2417
2457
|
- !ruby/object:Gem::Version
|
2418
|
-
version:
|
2458
|
+
version: 1.3.1
|
2419
2459
|
requirements:
|
2420
2460
|
- none
|
2421
2461
|
rubygems_version: 3.4.1
|