spree_cm_commissioner 2.9.4 → 2.9.5

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/concerns/spree_cm_commissioner/turnstile_protectable.rb +9 -7
  4. data/app/controllers/spree/api/v2/operator/event_charts_controller.rb +1 -0
  5. data/app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb +14 -4
  6. data/app/controllers/spree/api/v2/storefront/account_checker_controller.rb +4 -0
  7. data/app/controllers/spree/api/v2/tenant/account/orders_controller.rb +1 -1
  8. data/app/controllers/spree/api/v2/tenant/my_votes_controller.rb +51 -0
  9. data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +1 -4
  10. data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +4 -1
  11. data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +6 -2
  12. data/app/interactors/spree_cm_commissioner/host_matcher.rb +6 -5
  13. data/app/interactors/spree_cm_commissioner/turnstile_token_validator.rb +43 -13
  14. data/app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb +39 -0
  15. data/app/models/concerns/spree_cm_commissioner/order_scopes.rb +5 -0
  16. data/app/models/spree_cm_commissioner/check_in_session.rb +36 -0
  17. data/app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb +26 -1
  18. data/app/models/spree_cm_commissioner/guest.rb +4 -0
  19. data/app/models/spree_cm_commissioner/maintenance_tasks/event.rb +9 -1
  20. data/app/models/spree_cm_commissioner/order_decorator.rb +2 -37
  21. data/app/models/spree_cm_commissioner/role_decorator.rb +41 -4
  22. data/app/models/spree_cm_commissioner/role_user_decorator.rb +11 -0
  23. data/app/models/spree_cm_commissioner/show_person.rb +5 -1
  24. data/app/models/spree_cm_commissioner/show_person_assignment.rb +1 -1
  25. data/app/models/spree_cm_commissioner/taxon_decorator.rb +2 -0
  26. data/app/models/spree_cm_commissioner/tenant.rb +17 -6
  27. data/app/models/spree_cm_commissioner/user_decorator.rb +32 -0
  28. data/app/models/spree_cm_commissioner/voting_contestant.rb +2 -0
  29. data/app/queries/spree_cm_commissioner/event_chart_queries.rb +23 -7
  30. data/app/queries/spree_cm_commissioner/guest_searcher_query.rb +16 -3
  31. data/app/queries/spree_cm_commissioner/pie_chart_event_aggregator_queries.rb +1 -0
  32. data/app/queries/spree_cm_commissioner/user_votes_per_contestant_query.rb +48 -0
  33. data/app/serializers/spree/v2/tenant/my_vote_serializer.rb +19 -0
  34. data/app/serializers/spree/v2/tenant/show_serializer.rb +2 -1
  35. data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +2 -0
  36. data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +10 -6
  37. data/app/services/spree_cm_commissioner/imports/contestants/create.rb +19 -1
  38. data/app/services/spree_cm_commissioner/operator_guest_json_gzips/create.rb +14 -7
  39. data/app/services/spree_cm_commissioner/organizer/export_guest_csv_service.rb +12 -11
  40. data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +5 -1
  41. data/app/views/spree/admin/tenants/_form.html.erb +13 -1
  42. data/config/locales/en.yml +12 -7
  43. data/config/locales/km.yml +12 -4
  44. data/config/routes.rb +1 -0
  45. data/db/migrate/20260720000001_add_check_in_fields_to_spree_roles.rb +11 -0
  46. data/db/migrate/20260723000000_add_payment_host_to_cm_tenants.rb +6 -0
  47. data/db/migrate/20260723000001_add_metadata_to_spree_roles.rb +11 -0
  48. data/db/migrate/20260728074153_add_role_to_cm_exports.rb +5 -0
  49. data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +1 -1
  50. data/lib/spree_cm_commissioner/version.rb +1 -1
  51. metadata +10 -2
@@ -26,6 +26,10 @@ km:
26
26
  already_checked_in: "ភ្ញៀវបានចូលរួចហើយ"
27
27
  check_in_session_required: "ត្រូវតែមានវគ្គចុះឈ្មោះចូល"
28
28
  check_in_session_is_not_allowed_or_invalid: "វគ្គចុះឈ្មោះនេះមិនត្រឹមត្រូវ សម្រាប់ភ្ញៀវ ឬសំបុត្រនេះទេ"
29
+ check_in_group_not_allowed: "សំបុត្រនេះមិនស្ថិតក្នុងក្រុមចុះឈ្មោះចូលរបស់អ្នកទេ"
30
+ order_canceled: "មិនអាចចុះឈ្មោះចូលភ្ញៀវពីការបញ្ជាទិញដែលបានលុបចោលបានទេ"
31
+ guest_locked: "ភ្ញៀវត្រូវបានចាក់សោ មិនអាចចុះឈ្មោះចូលបានទេ"
32
+ guest_transferred: "ភ្ញៀវត្រូវបានផ្ទេរ មិនអាចចុះឈ្មោះចូលបានទេ"
29
33
 
30
34
  sms:
31
35
  to:
@@ -200,11 +204,14 @@ km:
200
204
  riel: "៛"
201
205
 
202
206
  spree:
207
+ check_in_session:
208
+ end_time_after_start_time: "កាលបរិច្ឆេទបញ្ចប់ត្រូវតែក្រោយកាលបរិច្ឆេទចាប់ផ្តើម"
203
209
  internal_note: "ចំណាំផ្ទៃក្នុង"
204
210
  add_internal_note: "បន្ថែមចំណាំ"
205
211
  no_internal_note: "គ្មានចំណាំ"
206
212
  save_internal_note: "រក្សាទុកចំណាំ"
207
213
  internal_note_updated: "បានរក្សាទុកចំណាំផ្ទៃក្នុង"
214
+ payment_host: "ម៉ាស៊ីនមេទូទាត់ប្រាក់"
208
215
  voting_contestant_advancer:
209
216
  reversion_error: "មិនអាចដកចេញនៅវគ្គនេះបានទេ។ បេក្ខជននេះមាននៅវគ្គបោះឆ្នោតក្រោយ។"
210
217
  registered_by:
@@ -441,9 +448,7 @@ km:
441
448
  paid_votes_amount:
442
449
  less_than_used: "មិនអាចតូចជាងចំនួនសំឡេងបង់ប្រាក់ដែលបានប្រើ (%{used})"
443
450
  spree_cm_commissioner/tenant:
444
- attributes:
445
- host:
446
- format: "មិនអនុញ្ញាតឱ្យបញ្ចូលឈ្មោះដែលភ្ជាប់ជាមួយ (http:// ឬ https://)"
451
+ format: "មិនអនុញ្ញាតឱ្យបញ្ចូលឈ្មោះដែលភ្ជាប់ជាមួយ (http:// ឬ https://)"
447
452
 
448
453
  mail:
449
454
  order_mailer:
@@ -665,7 +670,10 @@ km:
665
670
 
666
671
  turnstile:
667
672
  token_missing: "សញ្ញាណផ្ទៀងផ្ទាត់គឺបាត់"
668
- service_unavailable: "សេវាកម្មពេលនេះមិនមានការផ្ទៀងផ្ទាត់"
673
+ verification_failed: "ការផ្ទៀងផ្ទាត់មនុស្សបានបរាជ័យ។ សូមព្យាយាមម្តងទៀត។"
674
+ token_expired: "ការផ្ទៀងផ្ទាត់បានផុតកំណត់។ សូមព្យាយាមម្តងទៀត។"
675
+ invalid_token: "សញ្ញាណផ្ទៀងផ្ទាត់មិនត្រឹមត្រូវ។ សូមព្យាយាមម្តងទៀត។"
676
+ service_unavailable: "សេវាកម្មផ្ទៀងផ្ទាត់បច្ចុប្បន្នមិនអាចប្រើបានទេ។ សូមព្យាយាមម្តងទៀតក្នុងពេលឆាប់ៗនេះ។"
669
677
 
670
678
  spree_cm_commissioner:
671
679
  draft_order:
data/config/routes.rb CHANGED
@@ -642,6 +642,7 @@ Spree::Core::Engine.add_routes do
642
642
  resources :voting_contestants, only: :index
643
643
  resources :voting_credits, only: :index
644
644
  resources :votes, only: %i[create index]
645
+ resource :my_votes, only: :show, controller: :my_votes
645
646
  end
646
647
 
647
648
  resources :voting_credit_transactions, only: :index
@@ -0,0 +1,11 @@
1
+ class AddCheckInFieldsToSpreeRoles < ActiveRecord::Migration[7.0]
2
+ def change
3
+ # A check-in group is a Spree::Role (role_type :check_in) scoped to one event via event_id.
4
+ add_column :spree_roles, :event_id, :bigint, if_not_exists: true
5
+ add_index :spree_roles, :event_id, if_not_exists: true
6
+
7
+ # 0 = all (check in every ticket, the default), 1 = include (only the group's listed tickets),
8
+ # 2 = exclude (all except them).
9
+ add_column :spree_roles, :check_in_mode, :integer, default: 0, null: false, if_not_exists: true
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ class AddPaymentHostToCmTenants < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :cm_tenants, :payment_host, :string, if_not_exists: true
4
+ add_index :cm_tenants, :payment_host, if_not_exists: true
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ class AddMetadataToSpreeRoles < ActiveRecord::Migration[7.0]
2
+ def up
3
+ add_column :spree_roles, :public_metadata, :jsonb, default: '{}', if_not_exists: true
4
+ add_column :spree_roles, :private_metadata, :jsonb, default: '{}', if_not_exists: true
5
+ end
6
+
7
+ def down
8
+ remove_column :spree_roles, :public_metadata, if_exists: true
9
+ remove_column :spree_roles, :private_metadata, if_exists: true
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddRoleToCmExports < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_reference :cm_exports, :role, foreign_key: { to_table: :spree_roles }, index: true, if_not_exists: true
4
+ end
5
+ end
@@ -3,7 +3,7 @@ FactoryBot.define do
3
3
  sequence(:name) { |n| "vehicle_#{n}" }
4
4
  sequence(:license_plate) { |n| "2KH-#{'%04d' % (n % 10000)}" }
5
5
  kind { :air_bus }
6
- association :vendor, factory: :vendor
6
+ vendor { |v| v.association(:cm_vendor) }
7
7
  association :vehicle_type, factory: :cm_vehicle_type
8
8
  end
9
9
  end
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.9.4'.freeze
2
+ VERSION = '2.9.5'.freeze
3
3
 
4
4
  module_function
5
5
 
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.9.4
4
+ version: 2.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-22 00:00:00.000000000 Z
11
+ date: 2026-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -1071,6 +1071,7 @@ files:
1071
1071
  - app/controllers/spree/api/v2/tenant/intercity_taxi/distance_calculator_controller.rb
1072
1072
  - app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb
1073
1073
  - app/controllers/spree/api/v2/tenant/line_items_controller.rb
1074
+ - app/controllers/spree/api/v2/tenant/my_votes_controller.rb
1074
1075
  - app/controllers/spree/api/v2/tenant/notifications_controller.rb
1075
1076
  - app/controllers/spree/api/v2/tenant/order_histories_controller.rb
1076
1077
  - app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
@@ -1472,6 +1473,7 @@ files:
1472
1473
  - app/models/concerns/spree_cm_commissioner/option_value_attr_type.rb
1473
1474
  - app/models/concerns/spree_cm_commissioner/order_holdable.rb
1474
1475
  - app/models/concerns/spree_cm_commissioner/order_integration.rb
1476
+ - app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb
1475
1477
  - app/models/concerns/spree_cm_commissioner/order_scopes.rb
1476
1478
  - app/models/concerns/spree_cm_commissioner/order_state_machine.rb
1477
1479
  - app/models/concerns/spree_cm_commissioner/parameterize_name.rb
@@ -1958,6 +1960,7 @@ files:
1958
1960
  - app/queries/spree_cm_commissioner/tickets_searcher_query.rb
1959
1961
  - app/queries/spree_cm_commissioner/trip_query.rb
1960
1962
  - app/queries/spree_cm_commissioner/trip_seat_layout_query.rb
1963
+ - app/queries/spree_cm_commissioner/user_votes_per_contestant_query.rb
1961
1964
  - app/queries/spree_cm_commissioner/users_by_event_fetcher_query.rb
1962
1965
  - app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb
1963
1966
  - app/request_schemas/spree_cm_commissioner/application_request_schema.rb
@@ -2040,6 +2043,7 @@ files:
2040
2043
  - app/serializers/spree/v2/tenant/image_serializer.rb
2041
2044
  - app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb
2042
2045
  - app/serializers/spree/v2/tenant/line_item_serializer.rb
2046
+ - app/serializers/spree/v2/tenant/my_vote_serializer.rb
2043
2047
  - app/serializers/spree/v2/tenant/notification_serializer.rb
2044
2048
  - app/serializers/spree/v2/tenant/option_type_serializer.rb
2045
2049
  - app/serializers/spree/v2/tenant/option_value_serializer.rb
@@ -3450,6 +3454,10 @@ files:
3450
3454
  - db/migrate/20260708150000_add_name_and_short_name_to_cm_trips.rb
3451
3455
  - db/migrate/20260713022227_add_advanced_to_episode_id_to_cm_voting_contestants.rb
3452
3456
  - db/migrate/20260714002626_rename_data_fill_stage_phase_on_cm_guests.rb
3457
+ - db/migrate/20260720000001_add_check_in_fields_to_spree_roles.rb
3458
+ - db/migrate/20260723000000_add_payment_host_to_cm_tenants.rb
3459
+ - db/migrate/20260723000001_add_metadata_to_spree_roles.rb
3460
+ - db/migrate/20260728074153_add_role_to_cm_exports.rb
3453
3461
  - docker-compose.yml
3454
3462
  - docs/api/scoped-access-token-endpoints.md
3455
3463
  - docs/option_types/attr_types.md