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.
Files changed (151) 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/views/spree/admin/homepage_section/_form.html.erb +0 -5
  33. data/config/initializers/spree_permitted_attributes.rb +0 -8
  34. data/config/locales/en.yml +0 -14
  35. data/config/locales/km.yml +0 -10
  36. data/config/routes.rb +0 -26
  37. data/lib/spree_cm_commissioner/version.rb +1 -1
  38. data/lib/spree_cm_commissioner.rb +1 -7
  39. data/spree_cm_commissioner.gemspec +1 -1
  40. metadata +3 -115
  41. data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
  42. data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
  43. data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
  44. data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
  45. data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
  46. data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
  47. data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
  48. data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
  49. data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
  50. data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
  51. data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
  52. data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
  53. data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
  54. data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
  55. data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -34
  56. data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
  57. data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -40
  58. data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
  59. data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
  60. data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
  61. data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
  62. data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
  63. data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
  64. data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
  65. data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
  66. data/app/models/spree_cm_commissioner/show.rb +0 -159
  67. data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
  68. data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
  69. data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
  70. data/app/models/spree_cm_commissioner/show_episode.rb +0 -135
  71. data/app/models/spree_cm_commissioner/show_person.rb +0 -15
  72. data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -20
  73. data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
  74. data/app/models/spree_cm_commissioner/vote.rb +0 -16
  75. data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -19
  76. data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -46
  77. data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
  78. data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
  79. data/app/models/spree_cm_commissioner/voting_session.rb +0 -223
  80. data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
  81. data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
  82. data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
  83. data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
  84. data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -17
  85. data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
  86. data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
  87. data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -26
  88. data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
  89. data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
  90. data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -22
  91. data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
  92. data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
  93. data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -18
  94. data/app/services/spree_cm_commissioner/fraud_check.rb +0 -279
  95. data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
  96. data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
  97. data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
  98. data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
  99. data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
  100. data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
  101. data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
  102. data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
  103. data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
  104. data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
  105. data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
  106. data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
  107. data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -334
  108. data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -32
  109. data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
  110. data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
  111. data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
  112. data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
  113. data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
  114. data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -74
  115. data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -66
  116. data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
  117. data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
  118. data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
  119. data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
  120. data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
  121. data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
  122. data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
  123. data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
  124. data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
  125. data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
  126. data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
  127. data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
  128. data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
  129. data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
  130. data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
  131. data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
  132. data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
  133. data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
  134. data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
  135. data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
  136. data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
  137. data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
  138. data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
  139. data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
  140. data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
  141. data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
  142. data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
  143. data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
  144. data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
  145. data/docs/sql/jsonb_query_guide.md +0 -57
  146. data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
  147. data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
  148. data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
  149. data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
  150. data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
  151. 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: 595e82de2ef3a0ab170476a3ad96ab5d25d3d501916fa7b740d4d3d50f11193f
4
- data.tar.gz: fb43eb4f67c1dc65ea1833f90f51624595122a6555c5099ac153a6abf20a1d3b
3
+ metadata.gz: cc101fbc1fb46a184c311e3cdf1827cd6515ae3b0399d77ca67c48560b3417bc
4
+ data.tar.gz: 5437f4e82b8c48ce55753432d2ce529935b0c63d472946f03153e817ba3c3038
5
5
  SHA512:
6
- metadata.gz: a63ca4741ece801cadde290f28f810bcc7143a320201af0d1a074b2a9ae380b7307807d06eac856d01d062eb27b149efaf9e70e87c6853008d2bf667d852d3d1
7
- data.tar.gz: d6cbf032196337ad97649cc72a4f2d1a7a0426224498cd0e2df492e4251a67ed00a7876e9719a66296b8ff9f168be7fa4c991e91a7d318f71eeab08802ae377f
6
+ metadata.gz: 74c7a8c0fbb21ae704c905b4f14b8d878b701adf82fc569a0db9d3bb780cae702eb93303c29db6bd08f602e9270fb89caed7bf5ebdb3a21d474057cef17d2157
7
+ data.tar.gz: 981dc574b4b68c1fec6ed7a665ec47ef52bfb60ef89476ab119e72da1311c9e2ae01e78a69436a8663ba185b460df46c6fd5836ccc52531c5e4a13eeaa5c3209
data/.gitignore CHANGED
@@ -34,7 +34,3 @@ vendor/bundle/
34
34
  # Cursor
35
35
  .cursor
36
36
  dump.rdb
37
- # Added by code-review-graph
38
- .code-review-graph/
39
- .cursorrules
40
- .claude
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.8.2.pre.pre.1)
37
+ spree_cm_commissioner (2.8.2)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -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
@@ -19,7 +19,6 @@ module Spree
19
19
  @collection ||= model_class.filter_by_segment(params[:homepage_id] || :general)
20
20
  .active
21
21
  .where(tenant_id: nil)
22
- .where(preview: false)
23
22
  .order(position: :asc)
24
23
  end
25
24
  end
@@ -16,10 +16,6 @@ module Spree
16
16
  set_current_tenant(@tenant)
17
17
  end
18
18
 
19
- def current_vendor
20
- @current_vendor ||= @tenant.active_vendor
21
- end
22
-
23
19
  def render_serialized_payload(status = 200)
24
20
  render json: yield, status: status, content_type: content_type
25
21
  end
@@ -5,7 +5,6 @@ module Spree
5
5
  class HomepageSectionsController < BaseController
6
6
  def collection
7
7
  @collection ||= scope.filter_by_segment(params[:homepage_id] || :general)
8
- .where(preview: false)
9
8
  .active
10
9
  .order(position: :asc)
11
10
  end
@@ -21,7 +21,7 @@ module Spree
21
21
 
22
22
  def scope
23
23
  MultiTenant.with(@tenant) do
24
- model_class.where(tenant_id: MultiTenant.current_tenant_id, preview: false)
24
+ model_class.where(tenant_id: MultiTenant.current_tenant_id)
25
25
  end
26
26
  end
27
27
 
@@ -31,7 +31,7 @@ module Spree
31
31
 
32
32
  def scope
33
33
  MultiTenant.with(@tenant) do
34
- model_class.where(preview: false)
34
+ model_class
35
35
  end
36
36
  end
37
37
 
@@ -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
 
@@ -7,7 +7,6 @@ module SpreeCmCommissioner
7
7
  def execute
8
8
  scope.joins(:integration_mappings).where(
9
9
  kind: :event,
10
- preview: false,
11
10
  integration_mappings: { status: :active }
12
11
  ).distinct
13
12
  end
@@ -15,8 +15,6 @@ module SpreeCmCommissioner
15
15
  'badge badge-success text-uppercase'
16
16
  when :football
17
17
  'badge badge-dark text-uppercase'
18
- when :show
19
- 'badge badge-danger text-uppercase'
20
18
  else
21
19
  'badge'
22
20
  end
@@ -8,8 +8,7 @@ module SpreeCmCommissioner
8
8
  tour: 0b00100,
9
9
  accommodation: 0b01000,
10
10
  things_to_do: 0b10000,
11
- football: 0b100000,
12
- show: 0b1000000
11
+ football: 0b100000
13
12
  }.freeze
14
13
 
15
14
  BIT_SEGMENT.each do |segment, bit_value|
@@ -45,8 +45,7 @@ module SpreeCmCommissioner
45
45
  'color' => 'color',
46
46
  'ticket-type' => 'string',
47
47
  'seat-type' => 'string',
48
- 'intercity-taxi' => 'string',
49
- 'vote-package' => 'integer'
48
+ 'intercity-taxi' => 'string'
50
49
  }.freeze
51
50
 
52
51
  included do
@@ -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 show_episode vote_package].freeze
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, preview: 2 }
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) # rubocop:disable Metrics/MethodLength
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, :preview, :created_at, :updated_at
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, :preview
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),
@@ -2,7 +2,7 @@ module Spree
2
2
  module V2
3
3
  module Storefront
4
4
  class RoleSerializer < BaseSerializer
5
- attributes :name, :role_type
5
+ attributes :name
6
6
  end
7
7
  end
8
8
  end
@@ -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, :preview, :created_at, :updated_at
6
+ :active, :position, :created_at, :updated_at
7
7
 
8
8
  has_many :homepage_section_relatables, serializer: ::Spree::V2::Tenant::HomepageSectionRelatableSerializer
9
9
  end
@@ -2,7 +2,7 @@ module Spree
2
2
  module V2
3
3
  module Tenant
4
4
  class RoleSerializer < BaseSerializer
5
- attributes :name, :presentation, :role_type
5
+ attributes :name
6
6
  end
7
7
  end
8
8
  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
@@ -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
 
@@ -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