spree_cm_commissioner 2.8.2.pre.pre.1 → 2.8.2
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/.gitignore +0 -4
- data/Gemfile.lock +1 -1
- data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
- data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
- data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
- data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/products_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/taxons_controller.rb +1 -1
- data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
- data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
- data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
- data/app/models/spree_cm_commissioner/product_decorator.rb +0 -39
- data/app/models/spree_cm_commissioner/role_decorator.rb +1 -4
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -15
- data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -10
- data/app/models/spree_cm_commissioner/tenant.rb +0 -9
- data/app/models/spree_cm_commissioner/user_decorator.rb +0 -5
- data/app/models/spree_cm_commissioner/variant_options.rb +0 -4
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -4
- data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -1
- data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
- data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
- data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
- data/config/initializers/spree_permitted_attributes.rb +0 -8
- data/config/locales/en.yml +0 -14
- data/config/locales/km.yml +0 -10
- data/config/routes.rb +0 -26
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -7
- data/spree_cm_commissioner.gemspec +1 -1
- metadata +3 -115
- data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
- data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
- data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
- data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
- data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
- data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
- data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
- data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
- data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
- data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -34
- data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
- data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -40
- data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
- data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
- data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
- data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
- data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
- data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
- data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/show.rb +0 -159
- data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
- data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
- data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
- data/app/models/spree_cm_commissioner/show_episode.rb +0 -135
- data/app/models/spree_cm_commissioner/show_person.rb +0 -15
- data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -20
- data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
- data/app/models/spree_cm_commissioner/vote.rb +0 -16
- data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -19
- data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -46
- data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
- data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
- data/app/models/spree_cm_commissioner/voting_session.rb +0 -223
- data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
- data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
- data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
- data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -17
- data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
- data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -26
- data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -22
- data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
- data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -18
- data/app/services/spree_cm_commissioner/fraud_check.rb +0 -279
- data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
- data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
- data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
- data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
- data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
- data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
- data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
- data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
- data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
- data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
- data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -334
- data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -32
- data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
- data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
- data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
- data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
- data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
- data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -74
- data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -66
- data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
- data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
- data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
- data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
- data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
- data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
- data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
- data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
- data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
- data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
- data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
- data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
- data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
- data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
- data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
- data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
- data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
- data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
- data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
- data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
- data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
- data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
- data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
- data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
- data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
- data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
- data/docs/sql/jsonb_query_guide.md +0 -57
- data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
- data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
- data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
- data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
- data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
- data/lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cc101fbc1fb46a184c311e3cdf1827cd6515ae3b0399d77ca67c48560b3417bc
|
|
4
|
+
data.tar.gz: 5437f4e82b8c48ce55753432d2ce529935b0c63d472946f03153e817ba3c3038
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 74c7a8c0fbb21ae704c905b4f14b8d878b701adf82fc569a0db9d3bb780cae702eb93303c29db6bd08f602e9270fb89caed7bf5ebdb3a21d474057cef17d2157
|
|
7
|
+
data.tar.gz: 981dc574b4b68c1fec6ed7a665ec47ef52bfb60ef89476ab119e72da1311c9e2ae01e78a69436a8663ba185b460df46c6fd5836ccc52531c5e4a13eeaa5c3209
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -51,10 +51,7 @@ module Spree
|
|
|
51
51
|
def permitted_resource_params
|
|
52
52
|
segment_value = helpers.calculate_segment_value(params[:spree_cm_commissioner_homepage_section])
|
|
53
53
|
|
|
54
|
-
params
|
|
55
|
-
.require(:spree_cm_commissioner_homepage_section)
|
|
56
|
-
.permit(:title, :description, :active, :tenant_id, :preview)
|
|
57
|
-
.merge(segment: segment_value)
|
|
54
|
+
params.require(:spree_cm_commissioner_homepage_section).permit(:title, :description, :active, :tenant_id).merge(segment: segment_value)
|
|
58
55
|
end
|
|
59
56
|
|
|
60
57
|
def load_tenants
|
|
@@ -3,7 +3,6 @@ module Spree
|
|
|
3
3
|
module TaxonsControllerDecorator
|
|
4
4
|
def self.prepended(base)
|
|
5
5
|
base.before_action :build_assets, only: %i[create update]
|
|
6
|
-
base.before_action :normalize_sti_taxon_params, only: %i[create update]
|
|
7
6
|
end
|
|
8
7
|
|
|
9
8
|
# override
|
|
@@ -51,24 +50,6 @@ module Spree
|
|
|
51
50
|
@taxon.build_home_banner(attachment: permitted_resource_params.delete(:home_banner)) if permitted_resource_params[:home_banner]
|
|
52
51
|
@taxon.build_video_banner(attachment: permitted_resource_params.delete(:video_banner)) if permitted_resource_params[:video_banner]
|
|
53
52
|
end
|
|
54
|
-
|
|
55
|
-
# Some admin forms submit STI records under their class key
|
|
56
|
-
# (e.g. :spree_cm_commissioner_show) while Spree update reads :taxon.
|
|
57
|
-
# Merge both into :taxon so all edited fields are persisted.
|
|
58
|
-
def normalize_sti_taxon_params
|
|
59
|
-
return unless @taxon
|
|
60
|
-
|
|
61
|
-
sti_key = @taxon.class.model_name.param_key.to_sym
|
|
62
|
-
sti_params = params[sti_key]
|
|
63
|
-
return unless sti_params.is_a?(::ActionController::Parameters)
|
|
64
|
-
|
|
65
|
-
base_params = params[:taxon]
|
|
66
|
-
base_hash = base_params.is_a?(::ActionController::Parameters) ? base_params.to_unsafe_h : {}
|
|
67
|
-
sti_hash = sti_params.to_unsafe_h
|
|
68
|
-
merged_params = ::ActionController::Parameters.new(base_hash.merge(sti_hash))
|
|
69
|
-
|
|
70
|
-
params[:taxon] = merged_params
|
|
71
|
-
end
|
|
72
53
|
end
|
|
73
54
|
end
|
|
74
55
|
end
|
|
@@ -6,7 +6,6 @@ module SpreeCmCommissioner
|
|
|
6
6
|
base.around_action :set_writing_role, only: %i[index]
|
|
7
7
|
base.after_action :set_tenant_after_update, only: %i[update]
|
|
8
8
|
base.before_action :merge_industry_taxons_into_taxons, only: [:update]
|
|
9
|
-
base.before_action :normalize_sti_product_params, only: %i[create update]
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
# Override
|
|
@@ -52,24 +51,6 @@ module SpreeCmCommissioner
|
|
|
52
51
|
|
|
53
52
|
protected
|
|
54
53
|
|
|
55
|
-
# Some admin forms submit STI records under their class key while
|
|
56
|
-
# Spree update reads :product. Merge both into :product so all edited
|
|
57
|
-
# fields are persisted for STI product subclasses.
|
|
58
|
-
def normalize_sti_product_params
|
|
59
|
-
return unless @product
|
|
60
|
-
|
|
61
|
-
sti_key = @product.class.model_name.param_key.to_sym
|
|
62
|
-
sti_params = params[sti_key]
|
|
63
|
-
return unless sti_params.is_a?(::ActionController::Parameters)
|
|
64
|
-
|
|
65
|
-
base_params = params[:product]
|
|
66
|
-
base_hash = base_params.is_a?(::ActionController::Parameters) ? base_params.to_unsafe_h : {}
|
|
67
|
-
sti_hash = sti_params.to_unsafe_h
|
|
68
|
-
merged_params = ::ActionController::Parameters.new(base_hash.merge(sti_hash))
|
|
69
|
-
|
|
70
|
-
params[:product] = merged_params
|
|
71
|
-
end
|
|
72
|
-
|
|
73
54
|
def merge_industry_taxons_into_taxons
|
|
74
55
|
return if params[:product].blank?
|
|
75
56
|
|
|
@@ -26,10 +26,8 @@ module SpreeCmCommissioner
|
|
|
26
26
|
|
|
27
27
|
state_machine.after_transition to: :canceled, do: :precalculate_conversion
|
|
28
28
|
state_machine.after_transition to: :canceled, do: :restock_inventory!
|
|
29
|
-
state_machine.after_transition to: :canceled, do: :de_allocate_resources
|
|
30
29
|
|
|
31
30
|
state_machine.after_transition to: :complete, do: :increment_route_fulfilled_order_count
|
|
32
|
-
state_machine.after_transition to: :complete, do: :allocate_resources
|
|
33
31
|
|
|
34
32
|
scope :accepted, -> { where(request_state: 'accepted') }
|
|
35
33
|
|
|
@@ -330,13 +328,5 @@ module SpreeCmCommissioner
|
|
|
330
328
|
factory = OrderTelegramMessageFactory.new(title: title, order: self)
|
|
331
329
|
TelegramNotificationSenderJob.perform_later(chat_id: chat_id, message: factory.message, parse_mode: factory.parse_mode)
|
|
332
330
|
end
|
|
333
|
-
|
|
334
|
-
def allocate_resources
|
|
335
|
-
SpreeCmCommissioner::VotingCreditAllocationJob.perform_later(order_id: id)
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
def de_allocate_resources
|
|
339
|
-
SpreeCmCommissioner::VotingCreditDeAllocationJob.perform_later(order_id: id)
|
|
340
|
-
end
|
|
341
331
|
end
|
|
342
332
|
end
|
|
@@ -5,7 +5,7 @@ module SpreeCmCommissioner
|
|
|
5
5
|
module ProductType
|
|
6
6
|
extend ActiveSupport::Concern
|
|
7
7
|
|
|
8
|
-
PRODUCT_TYPES = %i[accommodation service ecommerce transit
|
|
8
|
+
PRODUCT_TYPES = %i[accommodation service ecommerce transit].freeze
|
|
9
9
|
PERMANENT_STOCK_PRODUCT_TYPES = %w[accommodation service transit].freeze
|
|
10
10
|
PRE_INVENTORY_DAYS = { 'transit' => 90, 'accommodation' => 365, 'service' => 30 }.freeze
|
|
11
11
|
|
|
@@ -14,8 +14,6 @@ module SpreeCmCommissioner
|
|
|
14
14
|
|
|
15
15
|
base.delegate :is_open_dated, :is_open_dated?, to: :trip, allow_nil: true
|
|
16
16
|
|
|
17
|
-
base.has_many :voting_sessions, class_name: 'SpreeCmCommissioner::VotingSession', foreign_key: :episode_id, dependent: :destroy
|
|
18
|
-
|
|
19
17
|
base.has_many :variant_kind_option_types, -> { where(kind: :variant).order(:position) },
|
|
20
18
|
through: :product_option_types, source: :option_type
|
|
21
19
|
|
|
@@ -57,45 +55,8 @@ module SpreeCmCommissioner
|
|
|
57
55
|
|
|
58
56
|
base.belongs_to :event, class_name: 'Spree::Taxon', optional: true
|
|
59
57
|
|
|
60
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole', as: :previewable
|
|
61
58
|
base.has_many :industry_classifications, -> { joins(:taxon).where(spree_taxons: { kind: :industry }) }, class_name: 'Spree::Classification'
|
|
62
59
|
base.has_many :industry_taxons, through: :industry_classifications, source: :taxon
|
|
63
|
-
base.scope :visible_to, lambda { |user|
|
|
64
|
-
publicly_available = where(status: :active, preview: false)
|
|
65
|
-
|
|
66
|
-
if user
|
|
67
|
-
# Resolved through associations — avoids hardcoding class names.
|
|
68
|
-
taxon_type = reflect_on_association(:taxons).klass.polymorphic_name
|
|
69
|
-
|
|
70
|
-
# IDs of products that have been explicitly assigned their own PreviewRole.
|
|
71
|
-
products_with_own_roles = SpreeCmCommissioner::PreviewRole
|
|
72
|
-
.where(previewable_type: polymorphic_name)
|
|
73
|
-
.select(:previewable_id)
|
|
74
|
-
|
|
75
|
-
# Path A: product has its own PreviewRole → user must hold that role directly.
|
|
76
|
-
# Taxon membership is irrelevant for these products.
|
|
77
|
-
via_product_role = where(status: :active, preview: true)
|
|
78
|
-
.where(id: products_with_own_roles)
|
|
79
|
-
.where(id: user.preview_roles.where(previewable_type: polymorphic_name).select(:previewable_id))
|
|
80
|
-
|
|
81
|
-
# Path B: product has no own PreviewRole → inherit access from its event or taxons.
|
|
82
|
-
# Accessible if the user holds a preview role for the product's event_id or any
|
|
83
|
-
# taxon the product belongs to via the classifications join table.
|
|
84
|
-
allowed_taxon_ids = user.preview_roles.where(previewable_type: taxon_type).select(:previewable_id)
|
|
85
|
-
preview_no_own = where(status: :active, preview: true).where.not(id: products_with_own_roles)
|
|
86
|
-
|
|
87
|
-
via_event_id = preview_no_own.where(event_id: allowed_taxon_ids)
|
|
88
|
-
via_taxon_join = preview_no_own.joins(:taxons).where(spree_taxons: { id: allowed_taxon_ids })
|
|
89
|
-
|
|
90
|
-
publicly_available
|
|
91
|
-
.or(via_product_role)
|
|
92
|
-
.or(where(id: via_event_id.select(:id)))
|
|
93
|
-
.or(where(id: via_taxon_join.select(:id)))
|
|
94
|
-
else
|
|
95
|
-
publicly_available
|
|
96
|
-
end
|
|
97
|
-
}
|
|
98
|
-
|
|
99
60
|
base.scope :min_price, lambda { |vendor|
|
|
100
61
|
joins(:prices_including_master)
|
|
101
62
|
.where(vendor_id: vendor.id, product_type: vendor.primary_product_type)
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
module RoleDecorator
|
|
3
3
|
def self.prepended(base)
|
|
4
|
-
base.enum role_type: { internal: 0, external: 1
|
|
4
|
+
base.enum role_type: { internal: 0, external: 1 }
|
|
5
5
|
|
|
6
6
|
base.has_many :role_permissions, class_name: 'SpreeCmCommissioner::RolePermission'
|
|
7
7
|
base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission'
|
|
8
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole'
|
|
9
8
|
|
|
10
9
|
base.belongs_to :vendor, optional: true
|
|
11
10
|
|
|
@@ -14,8 +13,6 @@ module SpreeCmCommissioner
|
|
|
14
13
|
where(vendor_id: vendor)
|
|
15
14
|
}
|
|
16
15
|
base.scope :filter_external, -> { where(role_type: :external) }
|
|
17
|
-
base.scope :filter_internal, -> { where(role_type: :internal) }
|
|
18
|
-
base.scope :filter_preview, -> { where(role_type: :preview) }
|
|
19
16
|
|
|
20
17
|
base.accepts_nested_attributes_for :role_permissions, allow_destroy: true
|
|
21
18
|
|
|
@@ -83,21 +83,7 @@ module SpreeCmCommissioner
|
|
|
83
83
|
|
|
84
84
|
base.has_many :import_orders, as: :importable, class_name: 'SpreeCmCommissioner::Imports::ImportOrder', dependent: :destroy
|
|
85
85
|
|
|
86
|
-
base.scope :shows, -> { where(taxonomy_id: Spree::Taxonomy.shows.id, depth: 1) }
|
|
87
|
-
base.scope :events, -> { where(taxonomy_id: Spree::Taxonomy.events.id, depth: 1) }
|
|
88
86
|
base.has_many :agencies, class_name: 'SpreeCmCommissioner::Agency', foreign_key: :agency_category_id
|
|
89
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole', as: :previewable
|
|
90
|
-
|
|
91
|
-
base.scope :visible_to, lambda { |user|
|
|
92
|
-
publicly_available = where(preview: false)
|
|
93
|
-
|
|
94
|
-
if user
|
|
95
|
-
allowed_ids = user.preview_roles.where(previewable_type: polymorphic_name).select(:previewable_id)
|
|
96
|
-
publicly_available.or(where(preview: true, id: allowed_ids))
|
|
97
|
-
else
|
|
98
|
-
publicly_available
|
|
99
|
-
end
|
|
100
|
-
}
|
|
101
87
|
|
|
102
88
|
# Create maintaining task to purge taxon related caches
|
|
103
89
|
base.after_save { SpreeCmCommissioner::MaintenanceTasks::CacheInvalidation.pending.create_or_find_by(maintainable: self) }
|
|
@@ -110,7 +96,6 @@ module SpreeCmCommissioner
|
|
|
110
96
|
.joins('INNER JOIN cm_homepage_sections ON cm_homepage_section_relatables.homepage_section_id = cm_homepage_sections.id')
|
|
111
97
|
.where(cm_homepage_sections: { tenant_id: nil, active: true })
|
|
112
98
|
.where(kind: :event)
|
|
113
|
-
.where(preview: false)
|
|
114
99
|
end
|
|
115
100
|
|
|
116
101
|
def base.find_event(id)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
module TaxonomyDecorator
|
|
3
|
-
def self.prepended(base)
|
|
3
|
+
def self.prepended(base)
|
|
4
4
|
base.include SpreeCmCommissioner::TaxonKind
|
|
5
5
|
|
|
6
6
|
base.belongs_to :vendor, class_name: 'Spree::Vendor', optional: true
|
|
@@ -15,15 +15,6 @@ module SpreeCmCommissioner
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def base.shows
|
|
19
|
-
ActiveRecord::Base.connected_to(role: :writing) do
|
|
20
|
-
shows = Spree::Taxonomy.find_or_create_by(name: 'Shows', store: Spree::Store.default)
|
|
21
|
-
shows.kind = :event
|
|
22
|
-
shows.save if shows.changed?
|
|
23
|
-
shows
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def base.businesses
|
|
28
19
|
ActiveRecord::Base.connected_to(role: :writing) do
|
|
29
20
|
businesses = Spree::Taxonomy.find_or_create_by(name: 'Businesses', store: Spree::Store.default)
|
|
@@ -24,8 +24,6 @@ module SpreeCmCommissioner
|
|
|
24
24
|
|
|
25
25
|
before_validation :generate_slug, if: -> { slug.blank? && name.present? }
|
|
26
26
|
|
|
27
|
-
validate :single_active_vendor
|
|
28
|
-
|
|
29
27
|
def active_vendor
|
|
30
28
|
vendors.where(state: :active).first
|
|
31
29
|
end
|
|
@@ -45,12 +43,5 @@ module SpreeCmCommissioner
|
|
|
45
43
|
def generate_slug
|
|
46
44
|
self.slug = name.parameterize if slug.blank?
|
|
47
45
|
end
|
|
48
|
-
|
|
49
|
-
# Add Guardrails to ensure data integrity and make system predictable.
|
|
50
|
-
def single_active_vendor
|
|
51
|
-
return unless vendors.where(state: :active).count > 1
|
|
52
|
-
|
|
53
|
-
errors.add(:base, 'must have at most one active vendor')
|
|
54
|
-
end
|
|
55
46
|
end
|
|
56
47
|
end
|
|
@@ -19,8 +19,6 @@ module SpreeCmCommissioner
|
|
|
19
19
|
base.has_many :payments, as: :payable, class_name: 'Spree::Payment', dependent: :nullify
|
|
20
20
|
base.has_many :role_permissions, through: :spree_roles, class_name: 'SpreeCmCommissioner::RolePermission'
|
|
21
21
|
base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission'
|
|
22
|
-
base.has_many :preview_spree_roles, -> { where(role_type: :preview) }, through: :role_users, source: :role, class_name: 'Spree::Role'
|
|
23
|
-
base.has_many :preview_roles, through: :preview_spree_roles, class_name: 'SpreeCmCommissioner::PreviewRole'
|
|
24
22
|
base.has_many :line_items, through: :orders, source: :line_items
|
|
25
23
|
base.has_many :check_ins, foreign_key: 'check_in_by_id', class_name: 'SpreeCmCommissioner::CheckIn'
|
|
26
24
|
base.has_many :user_events, class_name: 'SpreeCmCommissioner::UserEvent'
|
|
@@ -37,9 +35,6 @@ module SpreeCmCommissioner
|
|
|
37
35
|
base.has_many :user_agencies, class_name: 'SpreeCmCommissioner::UserAgency'
|
|
38
36
|
base.has_many :user_places, class_name: 'SpreeCmCommissioner::UserPlace'
|
|
39
37
|
base.has_many :places, through: :user_places, class_name: 'SpreeCmCommissioner::Place'
|
|
40
|
-
base.has_many :voting_credits, class_name: 'SpreeCmCommissioner::VotingCredit', dependent: :destroy
|
|
41
|
-
base.has_many :votes, class_name: 'SpreeCmCommissioner::Vote', dependent: :destroy
|
|
42
|
-
base.has_many :voting_credit_transactions, through: :voting_credits, class_name: 'SpreeCmCommissioner::VotingCreditTransaction'
|
|
43
38
|
|
|
44
39
|
base.has_one :profile, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::UserProfile'
|
|
45
40
|
base.has_one :customer, class_name: 'SpreeCmCommissioner::Customer'
|
|
@@ -146,10 +146,6 @@ module SpreeCmCommissioner
|
|
|
146
146
|
@seat_type ||= option_value_name_for(option_type_name: 'seat-type')
|
|
147
147
|
end
|
|
148
148
|
|
|
149
|
-
def vote_package_amount
|
|
150
|
-
@vote_package_amount ||= option_value_name_for(option_type_name: 'vote-package')&.to_i
|
|
151
|
-
end
|
|
152
|
-
|
|
153
149
|
# can consider as customers.
|
|
154
150
|
def number_of_guests
|
|
155
151
|
number_of_adults + number_of_kids
|
|
@@ -33,10 +33,6 @@ module SpreeCmCommissioner
|
|
|
33
33
|
|
|
34
34
|
base.has_many :taxon_vendors, class_name: 'SpreeCmCommissioner::TaxonVendor'
|
|
35
35
|
base.has_many :taxons, through: :taxon_vendors
|
|
36
|
-
base.has_many :shows, -> { where(spree_taxons: { type: 'SpreeCmCommissioner::Show' }) },
|
|
37
|
-
through: :taxon_vendors, source: :taxon, class_name: 'SpreeCmCommissioner::Show'
|
|
38
|
-
|
|
39
|
-
base.has_many :voting_sessions, class_name: 'SpreeCmCommissioner::VotingSession', dependent: :destroy
|
|
40
36
|
|
|
41
37
|
base.has_many :promoted_option_types, -> { where(promoted: true).order(:position) },
|
|
42
38
|
through: :vendor_option_types, source: :option_type
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module V2
|
|
3
3
|
module Storefront
|
|
4
4
|
class HomepageSectionSerializer < BaseSerializer
|
|
5
|
-
attributes :id, :title, :segments, :description, :active, :position, :
|
|
5
|
+
attributes :id, :title, :segments, :description, :active, :position, :created_at, :updated_at
|
|
6
6
|
has_many :homepage_section_relatables
|
|
7
7
|
end
|
|
8
8
|
end
|
|
@@ -13,7 +13,7 @@ module Spree
|
|
|
13
13
|
base.has_one :venue, serializer: ::SpreeCmCommissioner::V2::Storefront::ProductPlaceSerializer
|
|
14
14
|
|
|
15
15
|
base.attributes :need_confirmation, :product_type, :kyc, :kyc_fields, :allowed_upload_later, :allow_anonymous_booking, :use_video_as_default
|
|
16
|
-
base.attributes :reveal_description, :discontinue_on, :public_metadata, :purchasable_on
|
|
16
|
+
base.attributes :reveal_description, :discontinue_on, :public_metadata, :purchasable_on
|
|
17
17
|
|
|
18
18
|
# Expose only the `event_id` here instead of the full event object.
|
|
19
19
|
# This lets the client fetch event details separately (usually already cached),
|
|
@@ -15,8 +15,7 @@ module Spree
|
|
|
15
15
|
|
|
16
16
|
base.attributes :custom_redirect_url, :kind, :subtitle, :from_date, :to_date,
|
|
17
17
|
:background_color, :foreground_color, :show_badge_status,
|
|
18
|
-
:purchasable_on, :vendor_id, :available_on, :hide_video_banner
|
|
19
|
-
:preview
|
|
18
|
+
:purchasable_on, :vendor_id, :available_on, :hide_video_banner
|
|
20
19
|
|
|
21
20
|
# To get full seat layout details, call the seat_layouts API with this ID.
|
|
22
21
|
base.attribute :seat_layout_ids, &:preload_seat_layout_ids
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
module Tenant
|
|
4
4
|
class HomepageSectionSerializer < BaseSerializer
|
|
5
5
|
attributes :id, :title, :segments, :description,
|
|
6
|
-
:active, :position, :
|
|
6
|
+
:active, :position, :created_at, :updated_at
|
|
7
7
|
|
|
8
8
|
has_many :homepage_section_relatables, serializer: ::Spree::V2::Tenant::HomepageSectionRelatableSerializer
|
|
9
9
|
end
|
|
@@ -32,11 +32,6 @@
|
|
|
32
32
|
<%= f.label :active %>
|
|
33
33
|
<%= f.check_box :active %>
|
|
34
34
|
<% end %>
|
|
35
|
-
<%= f.field_container :preview, class: ['custom-control', 'custom-checkbox', 'my-4'] do %>
|
|
36
|
-
<%= f.check_box :preview, class: 'custom-control-input' %>
|
|
37
|
-
<%= f.label :preview, 'Preview (internal team only)', class: 'custom-control-label' %>
|
|
38
|
-
<%= f.error_message_on :preview %>
|
|
39
|
-
<% end %>
|
|
40
35
|
</div>
|
|
41
36
|
</div>
|
|
42
37
|
</div>
|
|
@@ -47,10 +47,6 @@ module Spree
|
|
|
47
47
|
available_on
|
|
48
48
|
hide_video_banner
|
|
49
49
|
vendor_id
|
|
50
|
-
type
|
|
51
|
-
voting_config
|
|
52
|
-
fraud_config
|
|
53
|
-
preview
|
|
54
50
|
]
|
|
55
51
|
|
|
56
52
|
@@store_attributes += [
|
|
@@ -107,9 +103,5 @@ module Spree
|
|
|
107
103
|
route_stops
|
|
108
104
|
terms_and_conditions
|
|
109
105
|
]
|
|
110
|
-
|
|
111
|
-
@@product_attributes += %i[
|
|
112
|
-
preview
|
|
113
|
-
]
|
|
114
106
|
end
|
|
115
107
|
end
|
data/config/locales/en.yml
CHANGED
|
@@ -215,8 +215,6 @@ en:
|
|
|
215
215
|
riel: "៛"
|
|
216
216
|
|
|
217
217
|
spree:
|
|
218
|
-
voting_contestant_advancer:
|
|
219
|
-
reversion_error: "Cannot eliminate here yet. This contestant appears in a later session."
|
|
220
218
|
is_open_dated: "Is Open Dated Trip?"
|
|
221
219
|
description: Description
|
|
222
220
|
registered_by:
|
|
@@ -531,10 +529,6 @@ en:
|
|
|
531
529
|
attributes:
|
|
532
530
|
exception_rules:
|
|
533
531
|
invalid_json: "is not a valid format"
|
|
534
|
-
spree_cm_commissioner/show_contestant:
|
|
535
|
-
attributes:
|
|
536
|
-
video_highlights:
|
|
537
|
-
invalid_json: "is not a valid format"
|
|
538
532
|
spree_cm_commissioner/customer:
|
|
539
533
|
attributes:
|
|
540
534
|
base:
|
|
@@ -761,12 +755,4 @@ en:
|
|
|
761
755
|
token_missing: "Verification token is missing"
|
|
762
756
|
verification_failed: "Human verification failed"
|
|
763
757
|
service_unavailable: "Verification service is temporarily unavailable"
|
|
764
|
-
voting:
|
|
765
|
-
errors:
|
|
766
|
-
rate_limit_user: "You're voting too fast. Please wait a moment before voting again."
|
|
767
|
-
rate_limit_ip: "Too many votes from your network. Please try again shortly."
|
|
768
|
-
device_account_limit: "This device has been used by too many accounts."
|
|
769
|
-
vpn_blocked: "Voting is not allowed from VPN or proxy connections."
|
|
770
|
-
no_winners_confirmed: "No winners confirmed"
|
|
771
|
-
all_contestants_must_be_ranked: "All non-eliminated contestants must be ranked"
|
|
772
758
|
|
data/config/locales/km.yml
CHANGED
|
@@ -202,8 +202,6 @@ km:
|
|
|
202
202
|
riel: "៛"
|
|
203
203
|
|
|
204
204
|
spree:
|
|
205
|
-
voting_contestant_advancer:
|
|
206
|
-
reversion_error: "មិនអាចដកចេញនៅវគ្គនេះបានទេ។ បេក្ខជននេះមាននៅវគ្គបោះឆ្នោតក្រោយ។"
|
|
207
205
|
registered_by:
|
|
208
206
|
system_registered: "ចុះឈ្មោះដោយប្រព័ន្ធ"
|
|
209
207
|
self_registered: "ចុះឈ្មោះដោយខ្លួនឯង"
|
|
@@ -408,10 +406,6 @@ km:
|
|
|
408
406
|
attributes:
|
|
409
407
|
exception_rules:
|
|
410
408
|
invalid_json: "Format មិនត្រឹមត្រូវ"
|
|
411
|
-
spree_cm_commissioner/show_contestant:
|
|
412
|
-
attributes:
|
|
413
|
-
video_highlights:
|
|
414
|
-
invalid_json: "Format មិនត្រឹមត្រូវ"
|
|
415
409
|
spree_cm_commissioner/tenant:
|
|
416
410
|
attributes:
|
|
417
411
|
host:
|
|
@@ -605,8 +599,4 @@ km:
|
|
|
605
599
|
token_missing: "សញ្ញាណផ្ទៀងផ្ទាត់គឺបាត់"
|
|
606
600
|
verification_failed: "ការផ្ទៀងផ្ទាត់បានបរាជ័យ"
|
|
607
601
|
service_unavailable: "សេវាកម្មពេលនេះមិនមានការផ្ទៀងផ្ទាត់"
|
|
608
|
-
voting:
|
|
609
|
-
errors:
|
|
610
|
-
no_winners_confirmed: "មិនមានអ្នកឈ្នះត្រូវបានបញ្ជាក់"
|
|
611
|
-
all_contestants_must_be_ranked: "អ្នកចូលរួមទាំងអស់ដែលមិនត្រូវបានលុបចោលត្រូវតែមានចំណាត់ថ្នាក់"
|
|
612
602
|
|
data/config/routes.rb
CHANGED
|
@@ -508,7 +508,6 @@ Spree::Core::Engine.add_routes do
|
|
|
508
508
|
|
|
509
509
|
resources :homepage, only: [] do
|
|
510
510
|
resources :homepage_sections, only: [:index]
|
|
511
|
-
resources :preview_sections, only: %i[index]
|
|
512
511
|
end
|
|
513
512
|
|
|
514
513
|
resource :account, controller: :account, only: %i[show update]
|
|
@@ -587,28 +586,6 @@ Spree::Core::Engine.add_routes do
|
|
|
587
586
|
resources :cms_pages, only: %i[index show]
|
|
588
587
|
resources :waiting_room_sessions, only: :create
|
|
589
588
|
|
|
590
|
-
resources :shows, only: [:show] do
|
|
591
|
-
resources :people, controller: :show_people, only: %i[index] do
|
|
592
|
-
resources :assignments, controller: :show_person_assignments, only: %i[index]
|
|
593
|
-
end
|
|
594
|
-
resources :contestants, controller: :show_contestants, only: %i[show]
|
|
595
|
-
resources :elimination_sessions, controller: :show_elimination_sessions, only: %i[index]
|
|
596
|
-
resources :free_vote_claims, only: :create
|
|
597
|
-
end
|
|
598
|
-
|
|
599
|
-
resources :voting_sessions, only: [] do
|
|
600
|
-
resources :voting_contestants, only: :index
|
|
601
|
-
resources :voting_credits, only: :index
|
|
602
|
-
resources :votes, only: %i[create index]
|
|
603
|
-
end
|
|
604
|
-
|
|
605
|
-
resources :voting_credit_transactions, only: :index
|
|
606
|
-
resources :votes, only: :index
|
|
607
|
-
|
|
608
|
-
resources :preview_taxons, only: %i[index show], id: /.+/
|
|
609
|
-
resources :preview_products, only: %i[index show]
|
|
610
|
-
resources :preview_shows, only: %i[show]
|
|
611
|
-
|
|
612
589
|
resources :order_histories, only: %i[index] do
|
|
613
590
|
member do
|
|
614
591
|
patch :archive
|
|
@@ -719,7 +696,6 @@ Spree::Core::Engine.add_routes do
|
|
|
719
696
|
resources :homepage, only: [] do
|
|
720
697
|
resources :homepage_sections, only: [:index]
|
|
721
698
|
resource :homepage_background, controller: :homepage_background, only: [:show]
|
|
722
|
-
resources :preview_sections, only: %i[index]
|
|
723
699
|
end
|
|
724
700
|
resources :active_homepage_events, only: [:index]
|
|
725
701
|
|
|
@@ -743,8 +719,6 @@ Spree::Core::Engine.add_routes do
|
|
|
743
719
|
resources :inventory_items, only: %i[index]
|
|
744
720
|
resources :event_matches, only: %i[index]
|
|
745
721
|
resources :invite_guests, only: %i[show update]
|
|
746
|
-
resources :preview_taxons, only: %i[index show], id: /.+/
|
|
747
|
-
resources :preview_products, only: %i[index show]
|
|
748
722
|
namespace :transit do
|
|
749
723
|
resources :draft_orders, only: %i[create]
|
|
750
724
|
end
|