spree_cm_commissioner 2.8.7.pre.pre2 → 2.8.7

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -6
  3. data/Gemfile.lock +1 -1
  4. data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +0 -2
  5. data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
  6. data/app/controllers/spree/admin/inventory_holds_controller.rb +1 -20
  7. data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
  8. data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
  9. data/app/controllers/spree/api/v2/storefront/order_histories_controller.rb +2 -7
  10. data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
  11. data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
  12. data/app/controllers/spree/api/v2/tenant/order_histories_controller.rb +2 -7
  13. data/app/controllers/spree/api/v2/tenant/products_controller.rb +1 -1
  14. data/app/controllers/spree/api/v2/tenant/taxons_controller.rb +1 -1
  15. data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
  16. data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
  17. data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
  18. data/app/mailers/spree/order_mailer_decorator.rb +0 -2
  19. data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
  20. data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +1 -2
  21. data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +1 -33
  22. data/app/models/concerns/spree_cm_commissioner/product_delegation.rb +0 -2
  23. data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
  24. data/app/models/concerns/spree_cm_commissioner/taxon_kind.rb +1 -3
  25. data/app/models/spree_cm_commissioner/import.rb +1 -2
  26. data/app/models/spree_cm_commissioner/product_decorator.rb +0 -53
  27. data/app/models/spree_cm_commissioner/role_decorator.rb +1 -4
  28. data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -23
  29. data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -19
  30. data/app/models/spree_cm_commissioner/tenant.rb +0 -9
  31. data/app/models/spree_cm_commissioner/user_decorator.rb +0 -5
  32. data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -4
  33. data/app/models/spree_cm_commissioner/variant_options.rb +0 -4
  34. data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -4
  35. data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
  36. data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -2
  37. data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
  38. data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
  39. data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
  40. data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
  41. data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +0 -12
  42. data/app/services/spree_cm_commissioner/cart/add_guest.rb +2 -16
  43. data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
  44. data/app/views/spree_cm_commissioner/order_mailer/purchased_items/_items.html.erb +9 -12
  45. data/config/initializers/spree_permitted_attributes.rb +0 -11
  46. data/config/locales/en.yml +4 -50
  47. data/config/locales/km.yml +2 -34
  48. data/config/routes.rb +0 -28
  49. data/lib/spree_cm_commissioner/version.rb +1 -1
  50. data/lib/spree_cm_commissioner.rb +1 -7
  51. data/spree_cm_commissioner.gemspec +1 -1
  52. metadata +3 -132
  53. data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
  54. data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
  55. data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
  56. data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
  57. data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
  58. data/app/controllers/spree/api/v2/tenant/ad_campaigns_controller.rb +0 -25
  59. data/app/controllers/spree/api/v2/tenant/episodes_controller.rb +0 -38
  60. data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
  61. data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
  62. data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
  63. data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
  64. data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
  65. data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
  66. data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
  67. data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
  68. data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
  69. data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -36
  70. data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
  71. data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -43
  72. data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
  73. data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
  74. data/app/jobs/spree_cm_commissioner/show_contestants/import_job.rb +0 -9
  75. data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
  76. data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
  77. data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
  78. data/app/models/concerns/spree_cm_commissioner/voting_session_live_stream_concern.rb +0 -41
  79. data/app/models/spree_cm_commissioner/imports/import_contestant.rb +0 -7
  80. data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
  81. data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
  82. data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
  83. data/app/models/spree_cm_commissioner/show.rb +0 -163
  84. data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
  85. data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
  86. data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
  87. data/app/models/spree_cm_commissioner/show_episode.rb +0 -108
  88. data/app/models/spree_cm_commissioner/show_person.rb +0 -15
  89. data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -21
  90. data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
  91. data/app/models/spree_cm_commissioner/vote.rb +0 -16
  92. data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -20
  93. data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -100
  94. data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
  95. data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
  96. data/app/models/spree_cm_commissioner/voting_session.rb +0 -216
  97. data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
  98. data/app/overrides/spree/admin/orders/_search/payment_number_search_field.html.erb.deface +0 -8
  99. data/app/overrides/spree/admin/products/_form/enable_telegram_alert.html.erb.deface +0 -14
  100. data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
  101. data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
  102. data/app/serializers/spree/v2/tenant/ad_campaign_serializer.rb +0 -13
  103. data/app/serializers/spree/v2/tenant/advertisement_serializer.rb +0 -11
  104. data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
  105. data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -20
  106. data/app/serializers/spree/v2/tenant/show_parent_serializer.rb +0 -13
  107. data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
  108. data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
  109. data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -23
  110. data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
  111. data/app/serializers/spree/v2/tenant/vote_package_serializer.rb +0 -9
  112. data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
  113. data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -23
  114. data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
  115. data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
  116. data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -21
  117. data/app/services/spree_cm_commissioner/fraud_check.rb +0 -299
  118. data/app/services/spree_cm_commissioner/imports/contestants/create.rb +0 -153
  119. data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
  120. data/app/services/spree_cm_commissioner/show_persons/contestant_assigner.rb +0 -51
  121. data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
  122. data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
  123. data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
  124. data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
  125. data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
  126. data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
  127. data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
  128. data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
  129. data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
  130. data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
  131. data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
  132. data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -335
  133. data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -40
  134. data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
  135. data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
  136. data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
  137. data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
  138. data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
  139. data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -67
  140. data/app/services/spree_cm_commissioner/voting_leaderboards/combined_result.rb +0 -190
  141. data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -105
  142. data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
  143. data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
  144. data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
  145. data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
  146. data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
  147. data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
  148. data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
  149. data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
  150. data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
  151. data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
  152. data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
  153. data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
  154. data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
  155. data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
  156. data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
  157. data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
  158. data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
  159. data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
  160. data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
  161. data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
  162. data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
  163. data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
  164. data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
  165. data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
  166. data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
  167. data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
  168. data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
  169. data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
  170. data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
  171. data/db/migrate/20260603063652_add_parent_to_voting_sessions.rb +0 -9
  172. data/db/migrate/20260603090000_add_session_type_to_cm_voting_sessions.rb +0 -6
  173. data/db/migrate/20260608000000_add_display_to_cm_voting_sessions.rb +0 -5
  174. data/docs/sql/jsonb_query_guide.md +0 -57
  175. data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
  176. data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
  177. data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
  178. data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
  179. data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
  180. data/lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb +0 -11
@@ -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'
@@ -48,10 +48,6 @@ module SpreeCmCommissioner
48
48
  public_metadata[:preload_options_text].presence || Spree::Variants::VisibleOptionsPresenter.new(self).to_sentence
49
49
  end
50
50
 
51
- def vote_credits
52
- options.vote_package_amount
53
- end
54
-
55
51
  def delivery_required?
56
52
  delivery_option == 'delivery'
57
53
  end
@@ -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
@@ -14,8 +14,7 @@ module Spree
14
14
 
15
15
  base.attributes :need_confirmation, :product_type, :kyc, :kyc_fields, :allowed_upload_later, :allow_anonymous_booking,
16
16
  :use_video_as_default, :allow_transfer, :allow_gift_transfer
17
-
18
- base.attributes :reveal_description, :discontinue_on, :public_metadata, :purchasable_on, :preview,
17
+ base.attributes :reveal_description, :discontinue_on, :public_metadata, :purchasable_on,
19
18
  :enable_inventory_hold
20
19
 
21
20
  # Expose only the `event_id` here instead of the full event object.
@@ -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
@@ -17,8 +17,7 @@ module Spree
17
17
 
18
18
  base.attributes :custom_redirect_url, :kind, :subtitle, :from_date, :to_date,
19
19
  :background_color, :foreground_color, :show_badge_status,
20
- :purchasable_on, :vendor_id, :available_on, :hide_video_banner,
21
- :preview
20
+ :purchasable_on, :vendor_id, :available_on, :hide_video_banner
22
21
 
23
22
  # To get full seat layout details, call the seat_layouts API with this ID.
24
23
  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
@@ -66,19 +66,12 @@ module SpreeCmCommissioner
66
66
  '/api/v2/storefront/homepage_data*'
67
67
  ],
68
68
  'Spree::Taxon' => ['/api/v2/storefront/taxons/:id*'],
69
- 'SpreeCmCommissioner::Show' => ['/api/v2/storefront/taxons/:id*'],
70
69
  'Spree::Product' => [
71
70
  '/api/v2/tenant/products/:id*',
72
71
  '/api/v2/tenant/products/:slug*',
73
72
  '/api/v2/storefront/products/:id*',
74
73
  '/api/v2/storefront/products/:slug*'
75
74
  ],
76
- 'SpreeCmCommissioner::ShowEpisode' => [
77
- '/api/v2/tenant/products/:id*',
78
- '/api/v2/tenant/products/:slug*',
79
- '/api/v2/storefront/products/:id*',
80
- '/api/v2/storefront/products/:slug*'
81
- ],
82
75
  'Spree::Vendor' => [
83
76
  '/api/v2/tenant/vendors/:id*',
84
77
  '/api/v2/storefront/vendors/:id*',
@@ -94,15 +87,10 @@ module SpreeCmCommissioner
94
87
  'SpreeCmCommissioner::HomepageBackground' => homepage_background_patterns,
95
88
  'Spree::Menu' => ['/api/v2/storefront/menus/*'],
96
89
  'Spree::Taxon' => ['/api/v2/storefront/taxons/*'],
97
- 'SpreeCmCommissioner::Show' => ['/api/v2/storefront/taxons/*'],
98
90
  'Spree::Product' => [
99
91
  '/api/v2/tenant/products/*',
100
92
  '/api/v2/storefront/products/*'
101
93
  ],
102
- 'SpreeCmCommissioner::ShowEpisode' => [
103
- '/api/v2/tenant/products/*',
104
- '/api/v2/storefront/products/*'
105
- ],
106
94
  'Spree::Vendor' => [
107
95
  '/api/v2/tenant/vendors/*',
108
96
  '/api/v2/storefront/vendors/*',
@@ -13,23 +13,9 @@ module SpreeCmCommissioner
13
13
  create_blank_guest(line_item)
14
14
  increase_quantity(line_item) if should_increase_quantity?(line_item)
15
15
  recalculate_cart(order, line_item)
16
- end
17
-
18
- success(order: order, line_item: line_item)
19
- rescue ActiveRecord::RecordInvalid => e
20
- # Convert ONLY the out-of-stock failure into a failure result. The stock validator
21
- # tags its error with the type :selected_quantity_not_available (see
22
- # Spree::Stock::AvailabilityValidator), so we match on that type rather than on any
23
- # RecordInvalid. The raise rolls back the lock transaction (so the blank guest is
24
- # not persisted); returning it as a failure lets the caller render the overridden
25
- # availability message instead of a 500.
26
- #
27
- # Anything else a different line item validation, or an invalid order/shipment
28
- # raised by recalculate_cart is re-raised so genuine backend errors are not
29
- # masked behind an empty quantity error.
30
- raise unless e.record == line_item && e.record.errors.of_kind?(:quantity, :selected_quantity_not_available)
31
16
 
32
- failure(e.record)
17
+ success(order: order, line_item: line_item)
18
+ end
33
19
  end
34
20
 
35
21
  private
@@ -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>
@@ -61,18 +61,15 @@
61
61
  <% end %>
62
62
  </td>
63
63
  </tr>
64
- <%# In the email only, hide the ticket link for app-only products. %>
65
- <% unless @is_email && line_item&.product&.purchasable_on_app? %>
66
- <tr>
67
- <td></td>
68
- <td align="left" style="padding-top:6px;">
69
- <%= link_to(
70
- raw('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: inline-block; vertical-align: middle; margin-right: 8px;"><rect width="5" height="5" x="3" y="3" rx="1"/><rect width="5" height="5" x="16" y="3" rx="1"/><rect width="5" height="5" x="3" y="16" rx="1"/><path d="M21 16h-3a2 2 0 0 0-2 2v3"/><path d="M21 21v.01"/><path d="M12 7v3a2 2 0 0 1-2 2H7"/><path d="M3 12h.01"/><path d="M12 3h.01"/><path d="M12 16v.01"/><path d="M16 12h1"/><path d="M21 12v.01"/><path d="M12 21v-1"/></svg> View Your Digital Ticket'),
71
- custom_product_line_item_url(line_item), class: "btn-primary", target: :_blank
72
- ) %>
73
- </td>
74
- </tr>
75
- <% end %>
64
+ <tr>
65
+ <td></td>
66
+ <td align="left" style="padding-top:6px;">
67
+ <%= link_to(
68
+ raw('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: inline-block; vertical-align: middle; margin-right: 8px;"><rect width="5" height="5" x="3" y="3" rx="1"/><rect width="5" height="5" x="16" y="3" rx="1"/><rect width="5" height="5" x="3" y="16" rx="1"/><path d="M21 16h-3a2 2 0 0 0-2 2v3"/><path d="M21 21v.01"/><path d="M12 7v3a2 2 0 0 1-2 2H7"/><path d="M3 12h.01"/><path d="M12 3h.01"/><path d="M12 16v.01"/><path d="M16 12h1"/><path d="M21 12v.01"/><path d="M12 21v-1"/></svg> View Your Digital Ticket'),
69
+ custom_product_line_item_url(line_item), class: "btn-primary", target: :_blank
70
+ ) %>
71
+ </td>
72
+ </tr>
76
73
  </table>
77
74
  </td>
78
75
  </tr>
@@ -6,9 +6,6 @@ module Spree
6
6
  @@vendor_attributes << :logo
7
7
  @@vendor_attributes << :service_origin_id
8
8
 
9
- # store_accessor key (public_metadata), not a DB column, so it must be permitted explicitly
10
- @@product_attributes << :enable_telegram_alert unless @@product_attributes.include?(:enable_telegram_alert)
11
-
12
9
  # Permitted all guest attributes for now as permitting only some guest attributes is not working by design
13
10
  # of spree add_item service, if we want to only permit some guest attributes,
14
11
  # we need to override most part of add_item service.
@@ -50,10 +47,6 @@ module Spree
50
47
  available_on
51
48
  hide_video_banner
52
49
  vendor_id
53
- type
54
- voting_config
55
- fraud_config
56
- preview
57
50
  ]
58
51
 
59
52
  @@store_attributes += [
@@ -111,9 +104,5 @@ module Spree
111
104
  route_stops
112
105
  terms_and_conditions
113
106
  ]
114
-
115
- @@product_attributes += %i[
116
- preview
117
- ]
118
107
  end
119
108
  end
@@ -216,11 +216,7 @@ en:
216
216
  riel: "៛"
217
217
 
218
218
  spree:
219
- voting_contestant_advancer:
220
- reversion_error: "Cannot eliminate here yet. This contestant appears in a later session."
221
- is_open_dated: "Is Open Dated Trip?"
222
- description: "Description"
223
- enable_telegram_alert: Enable Telegram Alert
219
+ description: Description
224
220
  registered_by:
225
221
  system_registered: "System Registered"
226
222
  self_registered: "Self Registered"
@@ -418,9 +414,6 @@ en:
418
414
  zero: "Rooms are not available on %{date}"
419
415
  one: "Only 1 room available on %{date}"
420
416
  other: "Only %{count} rooms available on %{date}"
421
- # Overrides Spree core's "selected of %{item} is not available." Must stay under
422
- # `spree:` -- Spree::Stock::AvailabilityValidator looks it up as Spree.t(:selected_quantity_not_available).
423
- selected_quantity_not_available: "Not enough %{item} are available for the quantity you selected. Please try again."
424
417
  auto_apply: "Auto apply"
425
418
  auto_apply_info: "Path & code will be removed"
426
419
  transit:
@@ -538,10 +531,6 @@ en:
538
531
  attributes:
539
532
  exception_rules:
540
533
  invalid_json: "is not a valid format"
541
- spree_cm_commissioner/show_contestant:
542
- attributes:
543
- video_highlights:
544
- invalid_json: "is not a valid format"
545
534
  spree_cm_commissioner/customer:
546
535
  attributes:
547
536
  base:
@@ -553,20 +542,6 @@ en:
553
542
  attributes:
554
543
  place_id:
555
544
  taken: "has already existed with this place type"
556
- spree_cm_commissioner/voting_session:
557
- attributes:
558
- closes_at:
559
- must_be_after_opens_at: "must be after opens_at"
560
- must_not_exceed_parent: "cannot be after parent session closes_at"
561
- parent_id:
562
- must_have_contestants: '"%{name}" must have contestants assigned'
563
- spree_cm_commissioner/voting_contestant:
564
- attributes:
565
- base:
566
- last_contestant_in_parent_session: 'cannot remove the last contestant from "%{session_name}" because child sessions depend on it'
567
- advanced_from_session: 'was advanced from a previous session and cannot be removed directly. Clear the advancement in the source session instead.'
568
- pre_vote_session: 'cannot be removed from a pre-vote session.'
569
- has_advanced_to_session: 'has been assigned to advance to another session. Clear the advancement first before removing this contestant.'
570
545
  spree_cm_commissioner/tenant:
571
546
  attributes:
572
547
  host:
@@ -726,10 +701,6 @@ en:
726
701
  FPS_TWEENTY_FOUR: "24 (Cinematic Mode)"
727
702
  FPS_THIRTY: "30 (TV Show or Online Video)"
728
703
  FPS_SIXTY: "60 (Sport and Gaming)"
729
- import_contestants:
730
- missing_file: "Please select a file to import."
731
- queued: "Import queued. Contestants will be created in the background."
732
-
733
704
  import_orders:
734
705
  invalid_file: "Invalid File upload"
735
706
  invalid_json_format: "Invalid JSON format for orders"
@@ -744,7 +715,7 @@ en:
744
715
  inventory_hold:
745
716
  acquire:
746
717
  success: "Item reserved for %{minutes} minutes"
747
- insufficient_stock: "Some items in your cart are currently held by another customer or no longer available. Please update your cart or try again shortly."
718
+ insufficient_stock: "Sorry, this item is no longer available."
748
719
  limit_exceeded: "You have too many pending reservations. Please complete or cancel a reservation before trying another."
749
720
  system_error: "We encountered an issue reserving this item. Please try again."
750
721
  lock_timeout: "Another reservation is in progress for this order. Please wait and try again."
@@ -806,25 +777,7 @@ en:
806
777
  token_missing: "Verification token is missing"
807
778
  verification_failed: "Human verification failed"
808
779
  service_unavailable: "Verification service is temporarily unavailable"
809
- spree_cm_commissioner:
810
- voting_contestants:
811
- assigner:
812
- not_eliminated: "Only eliminated contestants can be added to a Save Contestants session. %{name} is %{status}."
813
- voting_leaderboards:
814
- combined_result:
815
- pre_vote_not_finalized: "Cannot combine results: Pre-Vote sessions not yet finalized: %{names}"
816
-
817
- voting:
818
- errors:
819
- rate_limit_user: "You're voting too fast. Please wait a moment before voting again."
820
- rate_limit_ip: "Too many votes from your network. Please try again shortly."
821
- device_account_limit: "This device has been used by too many accounts."
822
- vpn_blocked: "Voting is not allowed from VPN or proxy connections."
823
- contestant_vote_cap_exceeded: "You have reached the maximum number of votes allowed for this contestant."
824
- no_winners_confirmed: "No winners confirmed"
825
- all_contestants_must_be_ranked: "All non-eliminated contestants must be ranked"
826
- save_advance_to_session_required: "A target voting session must be selected to advance saved contestants"
827
- advance_to_session_not_found: "The selected target session could not be found"
780
+
828
781
  ticket_transfer:
829
782
  rules:
830
783
  rule_already_exists_for_scope: "An active transfer fee rule already exists for %{scope_type} with currency %{currency}"
@@ -870,3 +823,4 @@ en:
870
823
  cooldown_active: "Please wait %{hours_remaining} hour(s) before attempting another transfer"
871
824
  max_transfers_reached: "This ticket has reached the maximum number of transfers (%{limit})"
872
825
  event_cutoff_reached: "Transfers are no longer allowed less than %{hours} hour(s) before the event starts"
826
+
@@ -200,8 +200,6 @@ km:
200
200
  riel: "៛"
201
201
 
202
202
  spree:
203
- voting_contestant_advancer:
204
- reversion_error: "មិនអាចដកចេញនៅវគ្គនេះបានទេ។ បេក្ខជននេះមាននៅវគ្គបោះឆ្នោតក្រោយ។"
205
203
  registered_by:
206
204
  system_registered: "ចុះឈ្មោះដោយប្រព័ន្ធ"
207
205
  self_registered: "ចុះឈ្មោះដោយខ្លួនឯង"
@@ -359,7 +357,6 @@ km:
359
357
  unknown: "មិនស្គាល់"
360
358
  upsupported_payment: "មិនស្គាល់ការបង់ប្រាក់"
361
359
  selected_item_not_available_on_date: "Selected item not available on %{date}"
362
- selected_quantity_not_available: "%{item} នៅសល់តិចជាងការអ្នកស្នើសុំរបស់អ្នក ឬអស់ពីស្តុក សូមព្យាយាមម្ដងទៀត។"
363
360
  auto_apply: "ដាក់ប្រើដោយស្វ័យប្រវត្តិ"
364
361
  auto_apply_info: "Path & code will be removed"
365
362
  device_tokens: "Device Tokens"
@@ -409,24 +406,6 @@ km:
409
406
  attributes:
410
407
  exception_rules:
411
408
  invalid_json: "Format មិនត្រឹមត្រូវ"
412
- spree_cm_commissioner/show_contestant:
413
- attributes:
414
- video_highlights:
415
- invalid_json: "Format មិនត្រឹមត្រូវ"
416
- spree_cm_commissioner/voting_session:
417
- attributes:
418
- closes_at:
419
- must_be_after_opens_at: "ត្រូវតែក្រោយ opens_at"
420
- must_not_exceed_parent: "មិនអាចក្រោយ closes_at របស់ session មេ"
421
- parent_id:
422
- must_have_contestants: '"%{name}" ត្រូវតែមានអ្នកចូលប្រកួត'
423
- spree_cm_commissioner/voting_contestant:
424
- attributes:
425
- base:
426
- last_contestant_in_parent_session: 'មិនអាចដកអ្នកចូលប្រកួតចុងក្រោយពី "%{session_name}" ព្រោះ session កូនពឹងផ្អែកលើវា'
427
- advanced_from_session: 'ត្រូវបានដំឡើងពី session មុន ហើយមិនអាចដកចេញដោយផ្ទាល់បានទេ។ សូមលុបការដំឡើងនៅក្នុង session ប្រភពជំនួសវិញ។'
428
- pre_vote_session: 'មិនអាចដកចេញពី pre-vote session បានទេ។'
429
- has_advanced_to_session: 'ត្រូវបានកំណត់ឱ្យដំឡើងទៅ session មួយទៀត។ សូមលុបការដំឡើងជាមុនសិន មុននឹងដកអ្នកចូលប្រកួតនេះចេញ។'
430
409
  spree_cm_commissioner/tenant:
431
410
  attributes:
432
411
  host:
@@ -539,7 +518,7 @@ km:
539
518
  inventory_hold:
540
519
  acquire:
541
520
  success: "ទំនិញត្រូវបានកក់រយៈពេល %{minutes} នាទី"
542
- insufficient_stock: "ទំនិញមួយចំនួននៅក្នុងកន្ត្រករបស់អ្នកកំពុងត្រូវបានកក់ដោយអតិថិជនផ្សេងទៀត ឬលែងមានស្តុក។ សូមកែប្រែកន្ត្រករបស់អ្នក ឬព្យាយាមម្តងទៀតក្នុងពេលបន្តិចទៀត។"
521
+ insufficient_stock: "សុំទោស! ទំនិញមិនមានស្តុកគ្រប់គ្រាន់សម្រាប់ការកក់របស់អ្នកទេ។"
543
522
  limit_exceeded: "អ្នកមានការកក់ដែលរង់ចាំច្រើនពេក។ សូមបញ្ចប់ ឬលុបការកក់មួយមុនពេលព្យាយាមវិញ។"
544
523
  system_error: "មានបញ្ហាក្នុងការកក់ទំនិញនេះ។ សូមព្យាយាមម្តងទៀត។"
545
524
  lock_timeout: "កំពុងកក់សម្រាប់ការបញ្ជាទិញនេះ។ សូមរង់ចាំ ហើយព្យាយាមម្តងទៀត។"
@@ -653,17 +632,7 @@ km:
653
632
  turnstile:
654
633
  token_missing: "សញ្ញាណផ្ទៀងផ្ទាត់គឺបាត់"
655
634
  service_unavailable: "សេវាកម្មពេលនេះមិនមានការផ្ទៀងផ្ទាត់"
656
-
657
- spree_cm_commissioner:
658
- voting_contestants:
659
- assigner:
660
- not_eliminated: "តែអ្នកចូលប្រកួតដែលត្រូវបានលុបចោលប៉ុណ្ណោះអាចបន្ថែមទៅ Save Contestants session បាន។ %{name} មានស្ថានភាព %{status}។"
661
- voting:
662
- errors:
663
- no_winners_confirmed: "មិនមានអ្នកឈ្នះត្រូវបានបញ្ជាក់"
664
- all_contestants_must_be_ranked: "អ្នកចូលរួមទាំងអស់ដែលមិនត្រូវបានលុបចោលត្រូវតែមានចំណាត់ថ្នាក់"
665
- save_advance_to_session_required: "ត្រូវតែជ្រើសរើសសម័យបោះឆ្នោតគោលដៅដើម្បីជំរុញអ្នកចូលរួមដែលបានជ្រើស"
666
- advance_to_session_not_found: "រកមិនឃើញសម័យគោលដៅដែលបានជ្រើស"
635
+ verification_failed: "ការផ្ទៀងផ្ទាត់មនុស្សបានបរាជ័យ។ សូមព្យាយាមម្តងទៀត។"
667
636
 
668
637
  ticket_transfer:
669
638
  transfer_not_found: "រកមិនឃើញការផ្ទេរ"
@@ -707,4 +676,3 @@ km:
707
676
  cooldown_active: "សូមរង់ចាំ %{hours_remaining} ម៉ោងមុនពេលព្យាយាមផ្ទេរម្តងទៀត"
708
677
  max_transfers_reached: "សំបុត្រនេះបានឈានដល់ចំនួនផ្ទេរអតិបរមា (%{limit})"
709
678
  event_cutoff_reached: "ការផ្ទេរមិនត្រូវបានអនុញ្ញាតឡើយក្នុងរយៈពេល %{hours} ម៉ោងមុនពេលព្រឹត្តិការណ៍ចាប់ផ្តើម"
710
- verification_failed: "ការផ្ទៀងផ្ទាត់មនុស្សបានបរាជ័យ។ សូមព្យាយាមម្តងទៀត។"
data/config/routes.rb CHANGED
@@ -511,7 +511,6 @@ Spree::Core::Engine.add_routes do
511
511
  resources :vendors
512
512
  resources :products
513
513
  resources :taxons, only: %i[index show], id: /.+/
514
- resources :ad_campaigns, only: [:index]
515
514
 
516
515
  resources :account_checker
517
516
  resource :pin_code_checkers, only: [:update]
@@ -521,7 +520,6 @@ Spree::Core::Engine.add_routes do
521
520
 
522
521
  resources :homepage, only: [] do
523
522
  resources :homepage_sections, only: [:index]
524
- resources :preview_sections, only: %i[index]
525
523
  end
526
524
 
527
525
  resource :account, controller: :account, only: %i[show update]
@@ -600,29 +598,6 @@ Spree::Core::Engine.add_routes do
600
598
  resources :cms_pages, only: %i[index show]
601
599
  resources :waiting_room_sessions, only: :create
602
600
 
603
- resources :shows, only: [:show] do
604
- resources :episodes, only: %i[index show]
605
- resources :people, controller: :show_people, only: %i[index] do
606
- resources :assignments, controller: :show_person_assignments, only: %i[index]
607
- end
608
- resources :contestants, controller: :show_contestants, only: %i[show]
609
- resources :elimination_sessions, controller: :show_elimination_sessions, only: %i[index]
610
- resources :free_vote_claims, only: :create
611
- end
612
-
613
- resources :voting_sessions, only: [] do
614
- resources :voting_contestants, only: :index
615
- resources :voting_credits, only: :index
616
- resources :votes, only: %i[create index]
617
- end
618
-
619
- resources :voting_credit_transactions, only: :index
620
- resources :votes, only: :index
621
-
622
- resources :preview_taxons, only: %i[index show], id: /.+/
623
- resources :preview_products, only: %i[index show]
624
- resources :preview_shows, only: %i[show]
625
-
626
601
  resources :order_histories, only: %i[index] do
627
602
  member do
628
603
  patch :archive
@@ -734,7 +709,6 @@ Spree::Core::Engine.add_routes do
734
709
  resources :homepage, only: [] do
735
710
  resources :homepage_sections, only: [:index]
736
711
  resource :homepage_background, controller: :homepage_background, only: [:show]
737
- resources :preview_sections, only: %i[index]
738
712
  end
739
713
  resources :active_homepage_events, only: [:index]
740
714
 
@@ -758,8 +732,6 @@ Spree::Core::Engine.add_routes do
758
732
  resources :inventory_items, only: %i[index]
759
733
  resources :event_matches, only: %i[index]
760
734
  resources :invite_guests, only: %i[show update]
761
- resources :preview_taxons, only: %i[index show], id: /.+/
762
- resources :preview_products, only: %i[index show]
763
735
  resources :ticket_transfers do
764
736
  collection do
765
737
  get :preview_rule
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.8.7.pre.pre2'.freeze
2
+ VERSION = '2.8.7'.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'