spree_cm_commissioner 2.8.2.pre.pre.2 → 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.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -4
  3. data/Gemfile.lock +1 -1
  4. data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
  5. data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
  6. data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
  7. data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
  8. data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
  9. data/app/controllers/spree/api/v2/tenant/products_controller.rb +1 -1
  10. data/app/controllers/spree/api/v2/tenant/taxons_controller.rb +1 -1
  11. data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
  12. data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
  13. data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
  14. data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
  15. data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +1 -2
  16. data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -10
  17. data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
  18. data/app/models/spree_cm_commissioner/product_decorator.rb +0 -39
  19. data/app/models/spree_cm_commissioner/role_decorator.rb +1 -4
  20. data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -15
  21. data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -10
  22. data/app/models/spree_cm_commissioner/tenant.rb +0 -9
  23. data/app/models/spree_cm_commissioner/user_decorator.rb +0 -5
  24. data/app/models/spree_cm_commissioner/variant_options.rb +0 -4
  25. data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -4
  26. data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
  27. data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -1
  28. data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
  29. data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
  30. data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
  31. data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
  32. data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +0 -12
  33. data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
  34. data/config/initializers/spree_permitted_attributes.rb +0 -8
  35. data/config/locales/en.yml +0 -14
  36. data/config/locales/km.yml +0 -10
  37. data/config/routes.rb +0 -26
  38. data/lib/spree_cm_commissioner/version.rb +1 -1
  39. data/lib/spree_cm_commissioner.rb +1 -7
  40. data/spree_cm_commissioner.gemspec +1 -1
  41. metadata +4 -116
  42. data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
  43. data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
  44. data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
  45. data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
  46. data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
  47. data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
  48. data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
  49. data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
  50. data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
  51. data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
  52. data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
  53. data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
  54. data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
  55. data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
  56. data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -34
  57. data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
  58. data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -40
  59. data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
  60. data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
  61. data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
  62. data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
  63. data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
  64. data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
  65. data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
  66. data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
  67. data/app/models/spree_cm_commissioner/show.rb +0 -159
  68. data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
  69. data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
  70. data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
  71. data/app/models/spree_cm_commissioner/show_episode.rb +0 -135
  72. data/app/models/spree_cm_commissioner/show_person.rb +0 -15
  73. data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -20
  74. data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
  75. data/app/models/spree_cm_commissioner/vote.rb +0 -16
  76. data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -19
  77. data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -46
  78. data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
  79. data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
  80. data/app/models/spree_cm_commissioner/voting_session.rb +0 -223
  81. data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
  82. data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
  83. data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
  84. data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
  85. data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -17
  86. data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
  87. data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
  88. data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -26
  89. data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
  90. data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
  91. data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -22
  92. data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
  93. data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
  94. data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -18
  95. data/app/services/spree_cm_commissioner/fraud_check.rb +0 -279
  96. data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
  97. data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
  98. data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
  99. data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
  100. data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
  101. data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
  102. data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
  103. data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
  104. data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
  105. data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
  106. data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
  107. data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
  108. data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -334
  109. data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -32
  110. data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
  111. data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
  112. data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
  113. data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
  114. data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
  115. data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -74
  116. data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -66
  117. data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
  118. data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
  119. data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
  120. data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
  121. data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
  122. data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
  123. data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
  124. data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
  125. data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
  126. data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
  127. data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
  128. data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
  129. data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
  130. data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
  131. data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
  132. data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
  133. data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
  134. data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
  135. data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
  136. data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
  137. data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
  138. data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
  139. data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
  140. data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
  141. data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
  142. data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
  143. data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
  144. data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
  145. data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
  146. data/docs/sql/jsonb_query_guide.md +0 -57
  147. data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
  148. data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
  149. data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
  150. data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
  151. data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
  152. data/lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb +0 -11
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
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.8.2.pre.pre.2'.freeze
2
+ VERSION = '2.8.2'.freeze
3
3
 
4
4
  module_function
5
5
 
@@ -69,22 +69,16 @@ require 'byebug' if Rails.env.development? || Rails.env.test?
69
69
  module SpreeCmCommissioner
70
70
  class << self
71
71
  # Allows overriding the default Redis connection pools with custom ones
72
- attr_writer :inventory_redis_pool, :voting_redis_pool
72
+ attr_writer :inventory_redis_pool
73
73
 
74
74
  # Inventory Redis pool for inventory management
75
75
  def inventory_redis_pool
76
76
  @inventory_redis_pool ||= default_redis_pool
77
77
  end
78
78
 
79
- # Voting Redis pool for voting system counters
80
- def voting_redis_pool
81
- @voting_redis_pool ||= default_redis_pool
82
- end
83
-
84
79
  # Resets all Redis pools, useful for testing or reinitialization
85
80
  def reset_redis_pools
86
81
  @inventory_redis_pool = nil
87
- @voting_redis_pool = nil
88
82
  end
89
83
 
90
84
  private
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(%r{^spec/fixtures})}
20
20
 
21
- s.require_paths = ['lib', 'app']
21
+ s.require_path = 'lib'
22
22
  s.requirements << 'none'
23
23
 
24
24
  spree_opts = '>= 4.5.0'
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: 2.8.2.pre.pre.2
4
+ version: 2.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-31 00:00:00.000000000 Z
11
+ date: 2026-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -995,11 +995,7 @@ files:
995
995
  - app/controllers/spree/api/v2/storefront/pin_code_otp_checkers_controller.rb
996
996
  - app/controllers/spree/api/v2/storefront/pin_code_otp_generators_controller.rb
997
997
  - app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb
998
- - app/controllers/spree/api/v2/storefront/preview_products_controller.rb
999
- - app/controllers/spree/api/v2/storefront/preview_sections_controller.rb
1000
- - app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb
1001
998
  - app/controllers/spree/api/v2/storefront/pricing_previews_controller.rb
1002
- - app/controllers/spree/api/v2/storefront/products_controller_decorator.rb
1003
999
  - app/controllers/spree/api/v2/storefront/profile_images_controller.rb
1004
1000
  - app/controllers/spree/api/v2/storefront/provinces_controller.rb
1005
1001
  - app/controllers/spree/api/v2/storefront/qr_urls_controller.rb
@@ -1009,7 +1005,6 @@ files:
1009
1005
  - app/controllers/spree/api/v2/storefront/saved_guests_controller.rb
1010
1006
  - app/controllers/spree/api/v2/storefront/seat_layouts_controller.rb
1011
1007
  - app/controllers/spree/api/v2/storefront/self_check_in_controller.rb
1012
- - app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb
1013
1008
  - app/controllers/spree/api/v2/storefront/tenants_controller.rb
1014
1009
  - app/controllers/spree/api/v2/storefront/transit/draft_orders_controller.rb
1015
1010
  - app/controllers/spree/api/v2/storefront/trip_places_controller.rb
@@ -1044,7 +1039,6 @@ files:
1044
1039
  - app/controllers/spree/api/v2/tenant/cms_pages_controller.rb
1045
1040
  - app/controllers/spree/api/v2/tenant/customer_notifications_controller.rb
1046
1041
  - app/controllers/spree/api/v2/tenant/dynamic_field_options_controller.rb
1047
- - app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb
1048
1042
  - app/controllers/spree/api/v2/tenant/guests_controller.rb
1049
1043
  - app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb
1050
1044
  - app/controllers/spree/api/v2/tenant/id_cards_controller.rb
@@ -1056,10 +1050,6 @@ files:
1056
1050
  - app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
1057
1051
  - app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb
1058
1052
  - app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb
1059
- - app/controllers/spree/api/v2/tenant/preview_products_controller.rb
1060
- - app/controllers/spree/api/v2/tenant/preview_sections_controller.rb
1061
- - app/controllers/spree/api/v2/tenant/preview_shows_controller.rb
1062
- - app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb
1063
1053
  - app/controllers/spree/api/v2/tenant/pricing_previews_controller.rb
1064
1054
  - app/controllers/spree/api/v2/tenant/product_dynamic_fields_controller.rb
1065
1055
  - app/controllers/spree/api/v2/tenant/products_controller.rb
@@ -1067,11 +1057,6 @@ files:
1067
1057
  - app/controllers/spree/api/v2/tenant/reset_passwords_controller.rb
1068
1058
  - app/controllers/spree/api/v2/tenant/routes_controller.rb
1069
1059
  - app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
1070
- - app/controllers/spree/api/v2/tenant/show_contestants_controller.rb
1071
- - app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb
1072
- - app/controllers/spree/api/v2/tenant/show_people_controller.rb
1073
- - app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb
1074
- - app/controllers/spree/api/v2/tenant/shows_controller.rb
1075
1060
  - app/controllers/spree/api/v2/tenant/taxons_controller.rb
1076
1061
  - app/controllers/spree/api/v2/tenant/tickets_controller.rb
1077
1062
  - app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb
@@ -1083,10 +1068,6 @@ files:
1083
1068
  - app/controllers/spree/api/v2/tenant/user_device_tokens_controller.rb
1084
1069
  - app/controllers/spree/api/v2/tenant/user_registration_with_pin_codes_controller.rb
1085
1070
  - app/controllers/spree/api/v2/tenant/vendors_controller.rb
1086
- - app/controllers/spree/api/v2/tenant/votes_controller.rb
1087
- - app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb
1088
- - app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb
1089
- - app/controllers/spree/api/v2/tenant/voting_credits_controller.rb
1090
1071
  - app/controllers/spree/api/v2/tenant/waiting_room_sessions_controller.rb
1091
1072
  - app/controllers/spree/api/webhook/base_controller.rb
1092
1073
  - app/controllers/spree/api/webhook/media_convert_queues_controller.rb
@@ -1398,9 +1379,6 @@ files:
1398
1379
  - app/jobs/spree_cm_commissioner/variants_public_metadata_updater_job.rb
1399
1380
  - app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb
1400
1381
  - app/jobs/spree_cm_commissioner/vendor_job.rb
1401
- - app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb
1402
- - app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb
1403
- - app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb
1404
1382
  - app/jobs/spree_cm_commissioner/waiting_guests_caller_job.rb
1405
1383
  - app/jobs/spree_cm_commissioner/waiting_room_latest_system_metadata_puller_job.rb
1406
1384
  - app/jobs/spree_cm_commissioner/waiting_room_session_firebase_logger_job.rb
@@ -1544,7 +1522,6 @@ files:
1544
1522
  - app/models/spree_cm_commissioner/maintenance_task.rb
1545
1523
  - app/models/spree_cm_commissioner/maintenance_tasks/cache_invalidation.rb
1546
1524
  - app/models/spree_cm_commissioner/maintenance_tasks/event.rb
1547
- - app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb
1548
1525
  - app/models/spree_cm_commissioner/menu_decorator.rb
1549
1526
  - app/models/spree_cm_commissioner/menu_item_decorator.rb
1550
1527
  - app/models/spree_cm_commissioner/notification.rb
@@ -1573,7 +1550,6 @@ files:
1573
1550
  - app/models/spree_cm_commissioner/pin_code_telegram.rb
1574
1551
  - app/models/spree_cm_commissioner/pin_code_update_user_login.rb
1575
1552
  - app/models/spree_cm_commissioner/place.rb
1576
- - app/models/spree_cm_commissioner/preview_role.rb
1577
1553
  - app/models/spree_cm_commissioner/price_decorator.rb
1578
1554
  - app/models/spree_cm_commissioner/price_list.rb
1579
1555
  - app/models/spree_cm_commissioner/pricing_action.rb
@@ -1620,7 +1596,6 @@ files:
1620
1596
  - app/models/spree_cm_commissioner/reserved_block.rb
1621
1597
  - app/models/spree_cm_commissioner/role_decorator.rb
1622
1598
  - app/models/spree_cm_commissioner/role_permission.rb
1623
- - app/models/spree_cm_commissioner/role_user_decorator.rb
1624
1599
  - app/models/spree_cm_commissioner/route.rb
1625
1600
  - app/models/spree_cm_commissioner/route_metric.rb
1626
1601
  - app/models/spree_cm_commissioner/route_photo.rb
@@ -1631,14 +1606,6 @@ files:
1631
1606
  - app/models/spree_cm_commissioner/seat_layout.rb
1632
1607
  - app/models/spree_cm_commissioner/seat_section.rb
1633
1608
  - app/models/spree_cm_commissioner/service_calendar.rb
1634
- - app/models/spree_cm_commissioner/show.rb
1635
- - app/models/spree_cm_commissioner/show_contestant.rb
1636
- - app/models/spree_cm_commissioner/show_contestant_image.rb
1637
- - app/models/spree_cm_commissioner/show_contestant_video.rb
1638
- - app/models/spree_cm_commissioner/show_episode.rb
1639
- - app/models/spree_cm_commissioner/show_person.rb
1640
- - app/models/spree_cm_commissioner/show_person_assignment.rb
1641
- - app/models/spree_cm_commissioner/show_person_image.rb
1642
1609
  - app/models/spree_cm_commissioner/sms_log.rb
1643
1610
  - app/models/spree_cm_commissioner/state_change_decorator.rb
1644
1611
  - app/models/spree_cm_commissioner/state_decorator.rb
@@ -1697,13 +1664,6 @@ files:
1697
1664
  - app/models/spree_cm_commissioner/vendor_web_promotion_banner.rb
1698
1665
  - app/models/spree_cm_commissioner/video.rb
1699
1666
  - app/models/spree_cm_commissioner/video_on_demand.rb
1700
- - app/models/spree_cm_commissioner/vote.rb
1701
- - app/models/spree_cm_commissioner/vote_fraud_event.rb
1702
- - app/models/spree_cm_commissioner/voting_contestant.rb
1703
- - app/models/spree_cm_commissioner/voting_credit.rb
1704
- - app/models/spree_cm_commissioner/voting_credit_transaction.rb
1705
- - app/models/spree_cm_commissioner/voting_session.rb
1706
- - app/models/spree_cm_commissioner/voting_session_stat.rb
1707
1667
  - app/models/spree_cm_commissioner/waiting_room_session.rb
1708
1668
  - app/models/spree_cm_commissioner/webhooks.rb
1709
1669
  - app/models/spree_cm_commissioner/webhooks/rules/order_states.rb
@@ -1753,7 +1713,6 @@ files:
1753
1713
  - app/overrides/spree/admin/products/_form/industry_taxons.html.erb.deface
1754
1714
  - app/overrides/spree/admin/products/_form/need_confirmation_checkbox.html.erb.deface
1755
1715
  - app/overrides/spree/admin/products/_form/option_types.html.erb.deface
1756
- - app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface
1757
1716
  - app/overrides/spree/admin/products/_form/product_types.html.erb.deface
1758
1717
  - app/overrides/spree/admin/products/_form/purchasable_on_status.html.erb.deface
1759
1718
  - app/overrides/spree/admin/products/_form/replace_vendor_label.html.erb.deface
@@ -1824,7 +1783,6 @@ files:
1824
1783
  - app/overrides/spree/admin/taxons/_form/custom_redirect_url.html.erb.deface
1825
1784
  - app/overrides/spree/admin/taxons/_form/hide_video_banner.html.erb.deface
1826
1785
  - app/overrides/spree/admin/taxons/_form/kind_html.erb.deface
1827
- - app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface
1828
1786
  - app/overrides/spree/admin/taxons/_form/purchasable_on_status.html.erb.deface
1829
1787
  - app/overrides/spree/admin/taxons/_form/show_badge_status.html.erb.deface
1830
1788
  - app/overrides/spree/admin/taxons/_form/sub_title.html.erb.deface
@@ -1978,11 +1936,6 @@ files:
1978
1936
  - app/serializers/spree/v2/tenant/reset_password_serializer.rb
1979
1937
  - app/serializers/spree/v2/tenant/role_serializer.rb
1980
1938
  - app/serializers/spree/v2/tenant/s3_signed_url_serializer.rb
1981
- - app/serializers/spree/v2/tenant/show_contestant_serializer.rb
1982
- - app/serializers/spree/v2/tenant/show_episode_serializer.rb
1983
- - app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb
1984
- - app/serializers/spree/v2/tenant/show_person_serializer.rb
1985
- - app/serializers/spree/v2/tenant/show_serializer.rb
1986
1939
  - app/serializers/spree/v2/tenant/stock_item_serializer.rb
1987
1940
  - app/serializers/spree/v2/tenant/stock_location_serializer.rb
1988
1941
  - app/serializers/spree/v2/tenant/taxon_serializer.rb
@@ -2000,12 +1953,6 @@ files:
2000
1953
  - app/serializers/spree/v2/tenant/variant_serializer.rb
2001
1954
  - app/serializers/spree/v2/tenant/vendor_image_serializer.rb
2002
1955
  - app/serializers/spree/v2/tenant/vendor_serializer.rb
2003
- - app/serializers/spree/v2/tenant/video_serializer.rb
2004
- - app/serializers/spree/v2/tenant/vote_serializer.rb
2005
- - app/serializers/spree/v2/tenant/voting_contestant_serializer.rb
2006
- - app/serializers/spree/v2/tenant/voting_credit_serializer.rb
2007
- - app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb
2008
- - app/serializers/spree/v2/tenant/voting_session_serializer.rb
2009
1956
  - app/serializers/spree/v2/tenant/waiting_room_session_serializer.rb
2010
1957
  - app/serializers/spree_cm_commissioner/api/v2/platform/digital_serializer_decorator.rb
2011
1958
  - app/serializers/spree_cm_commissioner/api/v2/platform/homepage_section_relatable_options_serializer.rb
@@ -2125,7 +2072,6 @@ files:
2125
2072
  - app/services/spree_cm_commissioner/feed/taxon_product.rb
2126
2073
  - app/services/spree_cm_commissioner/feed/vendor_include_product.rb
2127
2074
  - app/services/spree_cm_commissioner/feed/vendor_product.rb
2128
- - app/services/spree_cm_commissioner/fraud_check.rb
2129
2075
  - app/services/spree_cm_commissioner/google_wallets/base_event_ticket_class.rb
2130
2076
  - app/services/spree_cm_commissioner/google_wallets/base_generic_class.rb
2131
2077
  - app/services/spree_cm_commissioner/google_wallets/base_generic_object_builder.rb
@@ -2234,7 +2180,6 @@ files:
2234
2180
  - app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
2235
2181
  - app/services/spree_cm_commissioner/seeds/roles_decorator.rb
2236
2182
  - app/services/spree_cm_commissioner/seeds/user_usernames.rb
2237
- - app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb
2238
2183
  - app/services/spree_cm_commissioner/signing/sign_data.rb
2239
2184
  - app/services/spree_cm_commissioner/signing/verify_signature.rb
2240
2185
  - app/services/spree_cm_commissioner/sprite_data_loader_service.rb
@@ -2254,7 +2199,6 @@ files:
2254
2199
  - app/services/spree_cm_commissioner/trips/update_single_leg.rb
2255
2200
  - app/services/spree_cm_commissioner/trips/variants/create.rb
2256
2201
  - app/services/spree_cm_commissioner/update_guest_service.rb
2257
- - app/services/spree_cm_commissioner/url_embed/youtube_embed.rb
2258
2202
  - app/services/spree_cm_commissioner/user_authenticator.rb
2259
2203
  - app/services/spree_cm_commissioner/user_counters_service.rb
2260
2204
  - app/services/spree_cm_commissioner/user_roles_assigner.rb
@@ -2268,25 +2212,6 @@ files:
2268
2212
  - app/services/spree_cm_commissioner/vendor_places/bulk_create.rb
2269
2213
  - app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb
2270
2214
  - app/services/spree_cm_commissioner/vendor_places/update.rb
2271
- - app/services/spree_cm_commissioner/vote_counters/audit_counters.rb
2272
- - app/services/spree_cm_commissioner/vote_counters/base.rb
2273
- - app/services/spree_cm_commissioner/vote_counters/increment.rb
2274
- - app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb
2275
- - app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb
2276
- - app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb
2277
- - app/services/spree_cm_commissioner/vote_credit_deductor.rb
2278
- - app/services/spree_cm_commissioner/vote_package/create.rb
2279
- - app/services/spree_cm_commissioner/vote_package/update.rb
2280
- - app/services/spree_cm_commissioner/vote_processor.rb
2281
- - app/services/spree_cm_commissioner/voting_contestants/advancer.rb
2282
- - app/services/spree_cm_commissioner/voting_contestants/assigner.rb
2283
- - app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb
2284
- - app/services/spree_cm_commissioner/voting_credits/allocate.rb
2285
- - app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb
2286
- - app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb
2287
- - app/services/spree_cm_commissioner/voting_credits/de_allocate.rb
2288
- - app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb
2289
- - app/services/spree_cm_commissioner/voting_sessions/finalize.rb
2290
2215
  - app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb
2291
2216
  - app/services/spree_cm_commissioner/waiting_room_system_metadata_setter.rb
2292
2217
  - app/services/spree_cm_commissioner/webhooks/subscribers/handle_request_decorator.rb
@@ -3230,51 +3155,22 @@ files:
3230
3155
  - db/migrate/20260226105108_add_trip_type_to_cm_trip.rb
3231
3156
  - db/migrate/20260302062115_add_import_by_id_to_cm_imports.rb
3232
3157
  - db/migrate/20260302062116_add_offset_days_to_cm_trip_stops.rb
3233
- - db/migrate/20260309230148_create_cm_show_people.rb
3234
- - db/migrate/20260309230149_create_cm_show_people_assignments.rb
3235
- - db/migrate/20260310082711_create_cm_show_contestants.rb
3236
- - db/migrate/20260310082720_create_cm_voting_sessions.rb
3237
- - db/migrate/20260310082721_create_cm_voting_contestants.rb
3238
- - db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb
3239
- - db/migrate/20260310082735_add_type_to_spree_products.rb
3240
- - db/migrate/20260310082749_create_cm_voting_credits.rb
3241
3158
  - db/migrate/20260311105437_add_tenant_to_cm_sms_logs.rb
3242
3159
  - db/migrate/20260318081516_create_cm_agencies.rb
3243
3160
  - db/migrate/20260319090000_add_role_type_to_spree_roles.rb
3244
3161
  - db/migrate/20260320103313_add_index_to_spree_oauth_access_tokens_created_at.rb
3245
3162
  - db/migrate/20260325102409_create_cm_user_agencies.rb
3246
- - db/migrate/20260326080200_create_cm_voting_credit_transactions.rb
3247
3163
  - db/migrate/20260326100000_create_cm_price_lists.rb
3248
3164
  - db/migrate/20260327090000_create_cm_inventory_holds.rb
3249
3165
  - db/migrate/20260327090001_add_quantity_on_hold_to_cm_inventory_items.rb
3250
3166
  - db/migrate/20260330032107_create_cm_distribution_agreements.rb
3251
3167
  - db/migrate/20260330032108_add_vendor_id_to_spree_taxonomies.rb
3252
- - db/migrate/20260330160000_create_cm_votes.rb
3253
- - db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb
3254
3168
  - db/migrate/20260401080000_create_cm_route_prices.rb
3255
- - db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb
3256
- - db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb
3257
- - db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb
3258
- - db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb
3259
- - db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb
3260
- - db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb
3261
3169
  - db/migrate/20260410080000_add_payment_locked_at_to_cm_reserved_blocks.rb
3262
- - db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb
3263
- - db/migrate/20260422000001_create_cm_vote_fraud_events.rb
3264
- - db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb
3265
- - db/migrate/20260423000002_create_preview_roles.rb
3266
3170
  - db/migrate/20260504100000_add_public_and_private_metadata_to_cm_routes.rb
3267
3171
  - db/migrate/20260506090000_remove_default_from_cm_guests_nationality_group.rb
3268
3172
  - db/migrate/20260508103605_add_sms_sender_id_to_cm_tenants.rb
3269
3173
  - db/migrate/20260511000000_add_featured_until_to_cm_trips.rb
3270
- - db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb
3271
- - db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb
3272
- - db/migrate/20260518094322_create_cm_voting_session_stats.rb
3273
- - db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb
3274
- - db/migrate/20260520000001_optimize_cm_votes_indexes.rb
3275
- - db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb
3276
- - db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb
3277
- - db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb
3278
3174
  - docker-compose.yml
3279
3175
  - docs/api/scoped-access-token-endpoints.md
3280
3176
  - docs/option_types/attr_types.md
@@ -3286,7 +3182,6 @@ files:
3286
3182
  - docs/sprite_image/sprite_icon_implementation_prompt.md
3287
3183
  - docs/sprite_image/sprite_import_implementation_guide.md
3288
3184
  - docs/sql/events/active_homepage_events.sql
3289
- - docs/sql/jsonb_query_guide.md
3290
3185
  - docs/sql/subscriptions/remaining_subscriptions.sql
3291
3186
  - docs/tenant/test.com.md
3292
3187
  - docs/webhook/sqs.rb
@@ -3391,8 +3286,6 @@ files:
3391
3286
  - lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb
3392
3287
  - lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb
3393
3288
  - lib/spree_cm_commissioner/test_helper/factories/service_calendar_factory.rb
3394
- - lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb
3395
- - lib/spree_cm_commissioner/test_helper/factories/show_factory.rb
3396
3289
  - lib/spree_cm_commissioner/test_helper/factories/sms_logs.rb
3397
3290
  - lib/spree_cm_commissioner/test_helper/factories/state_factory.rb
3398
3291
  - lib/spree_cm_commissioner/test_helper/factories/stock_location_factory.rb
@@ -3420,10 +3313,6 @@ files:
3420
3313
  - lib/spree_cm_commissioner/test_helper/factories/vendor_photo_factory.rb
3421
3314
  - lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb
3422
3315
  - lib/spree_cm_commissioner/test_helper/factories/video_on_demand_factory.rb
3423
- - lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb
3424
- - lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb
3425
- - lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb
3426
- - lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb
3427
3316
  - lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_factory.rb
3428
3317
  - lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_rule_factory.rb
3429
3318
  - lib/spree_cm_commissioner/transit/leg.rb
@@ -3474,7 +3363,6 @@ post_install_message:
3474
3363
  rdoc_options: []
3475
3364
  require_paths:
3476
3365
  - lib
3477
- - app
3478
3366
  required_ruby_version: !ruby/object:Gem::Requirement
3479
3367
  requirements:
3480
3368
  - - ">="
@@ -3482,9 +3370,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
3482
3370
  version: '2.7'
3483
3371
  required_rubygems_version: !ruby/object:Gem::Requirement
3484
3372
  requirements:
3485
- - - ">"
3373
+ - - ">="
3486
3374
  - !ruby/object:Gem::Version
3487
- version: 1.3.1
3375
+ version: '0'
3488
3376
  requirements:
3489
3377
  - none
3490
3378
  rubygems_version: 3.4.1
@@ -1,48 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- class PreviewProductsController < ::Spree::Api::V2::Storefront::ProductsController
6
- before_action :require_spree_current_user
7
-
8
- private
9
-
10
- def scope(**args)
11
- taxon_type = model_class.reflect_on_association(:taxons).klass.polymorphic_name
12
-
13
- # IDs of products that have been explicitly assigned their own PreviewRole.
14
- products_with_own_roles = SpreeCmCommissioner::PreviewRole
15
- .where(previewable_type: model_class.polymorphic_name)
16
- .select(:previewable_id)
17
-
18
- # Base: all active preview products from the parent scope.
19
- base = super(**args).rewhere(preview: true).where(status: :active)
20
-
21
- # Path A: product has its own PreviewRole → user must hold that role directly.
22
- # Taxon membership is irrelevant for these products.
23
- via_product_role = base
24
- .where(id: products_with_own_roles)
25
- .where(id: spree_current_user.preview_roles
26
- .where(previewable_type: model_class.polymorphic_name)
27
- .select(:previewable_id)
28
- )
29
-
30
- # Path B: product has no own PreviewRole → inherit access from its taxons.
31
- # Accessible if the user holds a preview role for any taxon the product belongs to.
32
- via_taxon = base
33
- .where.not(id: products_with_own_roles)
34
- .joins(:taxons)
35
- .where(spree_taxons: { id: spree_current_user.preview_roles
36
- .where(previewable_type: taxon_type)
37
- .select(:previewable_id)
38
- }
39
- )
40
-
41
- # via_taxon uses joins(:taxons) which is incompatible with or — wrap as subquery.
42
- via_product_role.or(base.where(id: via_taxon.select(:id)))
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,27 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- class PreviewSectionsController < HomepageSectionsController
6
- before_action :require_spree_current_user
7
-
8
- # override
9
- def collection
10
- allowed_ids = spree_current_user.preview_roles.where(previewable_type: Spree::Taxon.polymorphic_name).pluck(:previewable_id)
11
-
12
- section_ids = SpreeCmCommissioner::HomepageSectionRelatable
13
- .where(relatable_type: 'Spree::Taxon', relatable_id: allowed_ids.presence || [])
14
- .select(:homepage_section_id)
15
-
16
- @collection ||= model_class.filter_by_segment(params[:homepage_id] || :general)
17
- .active
18
- .where(tenant_id: nil)
19
- .where(preview: true)
20
- .where(id: section_ids)
21
- .order(position: :asc)
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,18 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- class PreviewTaxonsController < ::Spree::Api::V2::Storefront::TaxonsController
6
- before_action :require_spree_current_user
7
-
8
- private
9
-
10
- def scope(**args)
11
- allowed_ids = spree_current_user.preview_roles.where(previewable_type: model_class.polymorphic_name).select(:previewable_id)
12
- super(**args).rewhere(preview: true).where(id: allowed_ids)
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- module ProductsControllerDecorator
6
- def scope
7
- super.where(preview: false)
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
14
-
15
- Spree::Api::V2::Storefront::ProductsController.prepend(Spree::Api::V2::Storefront::ProductsControllerDecorator)
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Storefront
5
- module TaxonsControllerDecorator
6
- def scope
7
- super.where(preview: false)
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
14
-
15
- Spree::Api::V2::Storefront::TaxonsController.prepend(Spree::Api::V2::Storefront::TaxonsControllerDecorator)
@@ -1,37 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Tenant
5
- class FreeVoteClaimsController < BaseController
6
- before_action :require_spree_current_user
7
-
8
- def create
9
- show = current_vendor.shows.find(params[:show_id])
10
-
11
- result = SpreeCmCommissioner::VotingCredits::ClaimFreeVotes.new(
12
- show: show,
13
- user: spree_current_user,
14
- tenant_id: MultiTenant.current_tenant_id,
15
- votable_type: params[:votable_type],
16
- votable_id: params[:votable_id]
17
- ).call
18
-
19
- if result.failure?
20
- render_error_payload(result.error.to_s)
21
- elsif result.value.nil?
22
- head :no_content
23
- else
24
- render_serialized_payload { serialize_resource(result.value) }
25
- end
26
- end
27
-
28
- private
29
-
30
- def resource_serializer
31
- Spree::V2::Tenant::VotingCreditSerializer
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,47 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Tenant
5
- class PreviewProductsController < ProductsController
6
- before_action :require_spree_current_user
7
-
8
- # override
9
- def scope
10
- taxon_type = model_class.reflect_on_association(:taxons).klass.polymorphic_name
11
-
12
- # IDs of products that have been explicitly assigned their own PreviewRole.
13
- products_with_own_roles = SpreeCmCommissioner::PreviewRole
14
- .where(previewable_type: model_class.polymorphic_name)
15
- .select(:previewable_id)
16
-
17
- # Base: all active preview products from the parent scope.
18
- base = super.where(status: :active, preview: true)
19
-
20
- # Path A: product has its own PreviewRole → user must hold that role directly.
21
- # Taxon membership is irrelevant for these products.
22
- via_product_role = base
23
- .where(id: products_with_own_roles)
24
- .where(id: spree_current_user.preview_roles
25
- .where(previewable_type: model_class.polymorphic_name)
26
- .select(:previewable_id)
27
- )
28
-
29
- # Path B: product has no own PreviewRole → inherit access from its taxons.
30
- # Accessible if the user holds a preview role for any taxon the product belongs to.
31
- via_taxon = base
32
- .where.not(id: products_with_own_roles)
33
- .joins(:taxons)
34
- .where(spree_taxons: { id: spree_current_user.preview_roles
35
- .where(previewable_type: taxon_type)
36
- .select(:previewable_id)
37
- }
38
- )
39
-
40
- # via_taxon uses joins(:taxons) which is incompatible with or — wrap as subquery.
41
- via_product_role.or(base.where(id: via_taxon.select(:id)))
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end