spree_cm_commissioner 2.8.3.pre.pre8 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test_and_build_gem.yml +1 -2
- data/.gitignore +0 -6
- data/Gemfile.lock +1 -1
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +0 -2
- data/app/controllers/spree/admin/guests_controller.rb +1 -1
- data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
- data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
- data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/products_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -11
- data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +3 -7
- data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
- data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
- data/app/helpers/spree_cm_commissioner/admin/guest_helper.rb +0 -10
- data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb +0 -5
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/taxon_kind.rb +1 -3
- data/app/models/spree_cm_commissioner/guest.rb +0 -20
- data/app/models/spree_cm_commissioner/import.rb +1 -1
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +0 -7
- data/app/models/spree_cm_commissioner/notification.rb +1 -10
- data/app/models/spree_cm_commissioner/order_decorator.rb +3 -13
- data/app/models/spree_cm_commissioner/payment_decorator.rb +0 -19
- data/app/models/spree_cm_commissioner/payment_method_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/product_decorator.rb +0 -50
- data/app/models/spree_cm_commissioner/reserved_block.rb +0 -2
- data/app/models/spree_cm_commissioner/role_decorator.rb +1 -4
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -3
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -22
- data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -19
- data/app/models/spree_cm_commissioner/tenant.rb +0 -9
- data/app/models/spree_cm_commissioner/trip.rb +0 -31
- data/app/models/spree_cm_commissioner/user_decorator.rb +0 -6
- data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/variant_options.rb +0 -4
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -4
- data/app/queries/spree_cm_commissioner/multi_leg_trips_query.rb +8 -31
- data/app/queries/spree_cm_commissioner/single_leg_trips_query.rb +2 -33
- data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +2 -4
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +2 -3
- data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
- data/app/serializers/spree/v2/tenant/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb +1 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +0 -1
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +0 -12
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +5 -11
- data/app/services/spree_cm_commissioner/inventory_items/reset.rb +1 -1
- data/app/services/spree_cm_commissioner/reserved_blocks/reserve.rb +1 -2
- data/app/views/spree/admin/guests/_table.html.erb +87 -82
- data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
- data/config/initializers/spree_permitted_attributes.rb +0 -8
- data/config/locales/en.yml +1 -105
- data/config/locales/km.yml +0 -133
- data/config/routes.rb +0 -48
- data/lib/spree_cm_commissioner/trip_query_result.rb +0 -9
- data/lib/spree_cm_commissioner/trip_result.rb +2 -5
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -7
- data/spree_cm_commissioner.gemspec +1 -1
- metadata +4 -202
- data/app/controllers/spree/admin/order_ticket_transfers_controller.rb +0 -25
- data/app/controllers/spree/admin/ticket_transfer_rules_controller.rb +0 -47
- data/app/controllers/spree/admin/ticket_transfers_controller.rb +0 -61
- data/app/controllers/spree/api/v2/storefront/account/recipients_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
- data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
- data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
- data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/storefront/ticket_transfer_acceptances_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/ticket_transfers_controller.rb +0 -117
- data/app/controllers/spree/api/v2/tenant/advertisements_controller.rb +0 -24
- data/app/controllers/spree/api/v2/tenant/episodes_controller.rb +0 -38
- data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
- data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
- data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
- data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
- data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
- data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
- data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
- data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -43
- data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
- data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
- data/app/helpers/spree_cm_commissioner/admin/ticket_transfers_helper.rb +0 -32
- data/app/jobs/spree_cm_commissioner/expire_ticket_transfer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/show_contestants/import_job.rb +0 -9
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count_job.rb +0 -17
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/increase_trip_count_job.rb +0 -14
- data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
- data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/ticket_transferable.rb +0 -15
- data/app/models/concerns/spree_cm_commissioner/voting_session_live_stream_concern.rb +0 -41
- data/app/models/spree_cm_commissioner/imports/import_contestant.rb +0 -7
- data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
- data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
- data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/show.rb +0 -163
- data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
- data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
- data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
- data/app/models/spree_cm_commissioner/show_episode.rb +0 -108
- data/app/models/spree_cm_commissioner/show_person.rb +0 -15
- data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -21
- data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
- data/app/models/spree_cm_commissioner/ticket_transfer.rb +0 -191
- data/app/models/spree_cm_commissioner/ticket_transfer_rule.rb +0 -88
- data/app/models/spree_cm_commissioner/vendor_route_metric.rb +0 -25
- data/app/models/spree_cm_commissioner/vote.rb +0 -16
- data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -20
- data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -100
- data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
- data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
- data/app/models/spree_cm_commissioner/voting_session.rb +0 -216
- data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
- data/app/notifications/spree_cm_commissioner/ticket_transfer_accepted_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_completed_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_expired_notification.rb +0 -46
- data/app/notifications/spree_cm_commissioner/ticket_transfer_received_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_rejected_notification.rb +0 -48
- data/app/overrides/spree/admin/products/_form/allow_gift_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/products/_form/allow_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
- data/app/overrides/spree/admin/shared/_order_tabs/ticket_transfers.html.erb.deface +0 -10
- data/app/overrides/spree/admin/shared/sub_menu/_product/ticket_transfers_tab.html.erb.deface +0 -3
- data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
- data/app/queries/spree_cm_commissioner/recipient_searcher_query.rb +0 -14
- data/app/serializers/spree/v2/tenant/advertisement_serializer.rb +0 -11
- data/app/serializers/spree/v2/tenant/campaign_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -20
- data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
- data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_package_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -23
- data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
- data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -21
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_minimal_serializer.rb +0 -30
- data/app/serializers/spree_cm_commissioner/v2/storefront/line_item_minimal_serializer.rb +0 -57
- data/app/serializers/spree_cm_commissioner/v2/storefront/recipient_serializer.rb +0 -13
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_minimal_serializer.rb +0 -17
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_serializer.rb +0 -20
- data/app/services/spree_cm_commissioner/advertisements/sorted_advertisements.rb +0 -61
- data/app/services/spree_cm_commissioner/advertisements/update_campaign_sorted_ads_ids.rb +0 -33
- data/app/services/spree_cm_commissioner/checkout/complete_decorator.rb +0 -22
- data/app/services/spree_cm_commissioner/fraud_check.rb +0 -299
- data/app/services/spree_cm_commissioner/imports/contestants/create.rb +0 -153
- data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
- data/app/services/spree_cm_commissioner/show_persons/contestant_assigner.rb +0 -51
- data/app/services/spree_cm_commissioner/ticket_transfers/accept.rb +0 -132
- data/app/services/spree_cm_commissioner/ticket_transfers/cancel.rb +0 -54
- data/app/services/spree_cm_commissioner/ticket_transfers/complete.rb +0 -68
- data/app/services/spree_cm_commissioner/ticket_transfers/eligibility_checker.rb +0 -99
- data/app/services/spree_cm_commissioner/ticket_transfers/expire.rb +0 -47
- data/app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb +0 -57
- data/app/services/spree_cm_commissioner/ticket_transfers/initiate.rb +0 -98
- data/app/services/spree_cm_commissioner/ticket_transfers/preview_rule.rb +0 -38
- data/app/services/spree_cm_commissioner/ticket_transfers/reject.rb +0 -55
- data/app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb +0 -29
- data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
- data/app/services/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count.rb +0 -19
- data/app/services/spree_cm_commissioner/vendor_route_metrics/increase_trip_count.rb +0 -24
- data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
- data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
- data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
- data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
- data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
- data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
- data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
- data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
- data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -335
- data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -40
- data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
- data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
- data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
- data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
- data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
- data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -67
- data/app/services/spree_cm_commissioner/voting_leaderboards/combined_result.rb +0 -190
- data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -106
- data/app/views/spree/admin/order_ticket_transfers/show.html.erb +0 -7
- data/app/views/spree/admin/shared/_ticket_transfer_details.html.erb +0 -226
- data/app/views/spree/admin/shared/_ticket_transfer_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfer_rules/_form.html.erb +0 -193
- data/app/views/spree/admin/ticket_transfer_rules/edit.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfer_rules/index.html.erb +0 -79
- data/app/views/spree/admin/ticket_transfer_rules/new.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfers/_search_form.html.erb +0 -70
- data/app/views/spree/admin/ticket_transfers/_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfers/index.html.erb +0 -74
- data/app/views/spree/admin/ticket_transfers/show.html.erb +0 -13
- data/app/views/spree/admin/ticket_transfers/state_changes.html.erb +0 -47
- data/db/migrate/20260303101440_add_allow_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260303101907_create_cm_ticket_transfers.rb +0 -32
- data/db/migrate/20260303102316_add_state_to_cm_guests.rb +0 -7
- data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
- data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
- data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
- data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
- data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
- data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
- data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
- data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
- data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
- data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
- data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
- data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
- data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
- data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
- data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
- data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
- data/db/migrate/20260408100000_create_cm_ticket_transfer_rules.rb +0 -28
- data/db/migrate/20260410120000_add_transfer_type_to_cm_ticket_transfers.rb +0 -5
- data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
- data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
- data/db/migrate/20260422120000_add_settlement_status_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
- data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
- data/db/migrate/20260507000000_add_index_to_cm_ticket_transfers_completed_at.rb +0 -5
- data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
- data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
- data/db/migrate/20260520000000_add_number_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
- data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
- data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
- data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
- data/db/migrate/20260603063652_add_parent_to_voting_sessions.rb +0 -9
- data/db/migrate/20260603090000_add_session_type_to_cm_voting_sessions.rb +0 -6
- data/db/migrate/20260605120908_add_description_to_cm_dynamic_fields.rb +0 -5
- data/db/migrate/20260608000000_add_allow_gift_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260608000000_add_display_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260608000000_create_cm_vendor_route_metrics.rb +0 -25
- data/db/migrate/20260608152251_add_gender_to_cm_reserved_blocks.rb +0 -5
- data/docs/sql/jsonb_query_guide.md +0 -57
- data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
- data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
- data/lib/spree_cm_commissioner/test_helper/factories/ticket_transfer_factory.rb +0 -18
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_metric_factory.rb +0 -10
- data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
- data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
- data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
- data/lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb +0 -11
- data/lib/tasks/backfill_route_metrics.rake +0 -21
- data/lib/tasks/backfill_vendor_route_metrics.rake +0 -23
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
module RoleDecorator
|
|
3
3
|
def self.prepended(base)
|
|
4
|
-
base.enum role_type: { internal: 0, external: 1
|
|
4
|
+
base.enum role_type: { internal: 0, external: 1 }
|
|
5
5
|
|
|
6
6
|
base.has_many :role_permissions, class_name: 'SpreeCmCommissioner::RolePermission'
|
|
7
7
|
base.has_many :permissions, through: :role_permissions, class_name: 'SpreeCmCommissioner::Permission'
|
|
8
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole'
|
|
9
8
|
|
|
10
9
|
base.belongs_to :vendor, optional: true
|
|
11
10
|
|
|
@@ -14,8 +13,6 @@ module SpreeCmCommissioner
|
|
|
14
13
|
where(vendor_id: vendor)
|
|
15
14
|
}
|
|
16
15
|
base.scope :filter_external, -> { where(role_type: :external) }
|
|
17
|
-
base.scope :filter_internal, -> { where(role_type: :internal) }
|
|
18
|
-
base.scope :filter_preview, -> { where(role_type: :preview) }
|
|
19
16
|
|
|
20
17
|
base.accepts_nested_attributes_for :role_permissions, allow_destroy: true
|
|
21
18
|
|
|
@@ -3,10 +3,6 @@ module SpreeCmCommissioner
|
|
|
3
3
|
module AvailabilityValidatorDecorator
|
|
4
4
|
# override
|
|
5
5
|
def item_available?(line_item, quantity)
|
|
6
|
-
# Ticket-transfer orders move existing inventory between guests rather than
|
|
7
|
-
# purchasing new stock, so they must not be gated by the live stock check.
|
|
8
|
-
return true if line_item.order&.ticket_transfer?
|
|
9
|
-
|
|
10
6
|
SpreeCmCommissioner::Stock::LineItemAvailabilityChecker.new(line_item)
|
|
11
7
|
.can_supply?(quantity)
|
|
12
8
|
end
|
|
@@ -32,9 +32,6 @@ module SpreeCmCommissioner
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def sufficient_stock_for?(line_item, cached_inventory_items)
|
|
35
|
-
# Ticket transfer orders move an already-owned stock between users,
|
|
36
|
-
# so they must skip stock checks even when the event is sold out.
|
|
37
|
-
return true if order.ticket_transfer?
|
|
38
35
|
return false unless line_item.variant.available?
|
|
39
36
|
return true unless line_item.variant.should_track_inventory?
|
|
40
37
|
return true if line_item.variant.backorderable?
|
|
@@ -83,28 +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
|
-
base.scope :campaigns, -> { where(taxonomy_id: Spree::Taxonomy.ads.id, depth: 1) }
|
|
89
|
-
|
|
90
|
-
base.store_public_metadata :sorted_ads_ids, :array, default: []
|
|
91
|
-
|
|
92
|
-
base.has_many :advertisements, lambda {
|
|
93
|
-
advertisement.where(deleted_at: nil)
|
|
94
|
-
}, through: :classifications, class_name: 'Spree::Product', source: :product
|
|
95
86
|
base.has_many :agencies, class_name: 'SpreeCmCommissioner::Agency', foreign_key: :agency_category_id
|
|
96
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole', as: :previewable
|
|
97
|
-
|
|
98
|
-
base.scope :visible_to, lambda { |user|
|
|
99
|
-
publicly_available = where(preview: false)
|
|
100
|
-
|
|
101
|
-
if user
|
|
102
|
-
allowed_ids = user.preview_roles.where(previewable_type: polymorphic_name).select(:previewable_id)
|
|
103
|
-
publicly_available.or(where(preview: true, id: allowed_ids))
|
|
104
|
-
else
|
|
105
|
-
publicly_available
|
|
106
|
-
end
|
|
107
|
-
}
|
|
108
87
|
|
|
109
88
|
# Create maintaining task to purge taxon related caches
|
|
110
89
|
base.after_save { SpreeCmCommissioner::MaintenanceTasks::CacheInvalidation.pending.create_or_find_by(maintainable: self) }
|
|
@@ -117,7 +96,6 @@ module SpreeCmCommissioner
|
|
|
117
96
|
.joins('INNER JOIN cm_homepage_sections ON cm_homepage_section_relatables.homepage_section_id = cm_homepage_sections.id')
|
|
118
97
|
.where(cm_homepage_sections: { tenant_id: nil, active: true })
|
|
119
98
|
.where(kind: :event)
|
|
120
|
-
.where(preview: false)
|
|
121
99
|
end
|
|
122
100
|
|
|
123
101
|
def base.find_event(id)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
module TaxonomyDecorator
|
|
3
|
-
def self.prepended(base)
|
|
3
|
+
def self.prepended(base)
|
|
4
4
|
base.include SpreeCmCommissioner::TaxonKind
|
|
5
5
|
|
|
6
6
|
base.belongs_to :vendor, class_name: 'Spree::Vendor', optional: true
|
|
@@ -15,15 +15,6 @@ module SpreeCmCommissioner
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def base.shows
|
|
19
|
-
ActiveRecord::Base.connected_to(role: :writing) do
|
|
20
|
-
shows = Spree::Taxonomy.find_or_create_by(name: 'Shows', store: Spree::Store.default)
|
|
21
|
-
shows.kind = :event
|
|
22
|
-
shows.save if shows.changed?
|
|
23
|
-
shows
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def base.businesses
|
|
28
19
|
ActiveRecord::Base.connected_to(role: :writing) do
|
|
29
20
|
businesses = Spree::Taxonomy.find_or_create_by(name: 'Businesses', store: Spree::Store.default)
|
|
@@ -41,15 +32,6 @@ module SpreeCmCommissioner
|
|
|
41
32
|
agency_categories
|
|
42
33
|
end
|
|
43
34
|
end
|
|
44
|
-
|
|
45
|
-
def base.ads
|
|
46
|
-
ActiveRecord::Base.connected_to(role: :writing) do
|
|
47
|
-
ads = Spree::Taxonomy.find_or_create_by(name: 'Ads', store: Spree::Store.default)
|
|
48
|
-
ads.kind = :ads
|
|
49
|
-
ads.save if ads.changed?
|
|
50
|
-
ads
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
35
|
end
|
|
54
36
|
end
|
|
55
37
|
end
|
|
@@ -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
|
|
@@ -21,13 +21,8 @@ module SpreeCmCommissioner
|
|
|
21
21
|
|
|
22
22
|
# before create, duplicate seat layout from vehicle_type if present
|
|
23
23
|
before_validation :duplicate_seat_layout_from_vehicle, if: -> { seat_layout.nil? && vehicle_type&.seat_layout.present? }
|
|
24
|
-
|
|
25
24
|
after_create :increment_route_metric_trip_count
|
|
26
|
-
after_create :increment_vendor_route_metric_trip_count
|
|
27
|
-
|
|
28
25
|
before_destroy :decrement_route_metric_trip_count
|
|
29
|
-
before_destroy :decrement_vendor_route_metric_trip_count
|
|
30
|
-
|
|
31
26
|
after_commit :update_route_price_range, on: %i[create update]
|
|
32
27
|
|
|
33
28
|
belongs_to :vendor, class_name: 'Spree::Vendor', inverse_of: :trips, optional: false
|
|
@@ -167,8 +162,6 @@ module SpreeCmCommissioner
|
|
|
167
162
|
end
|
|
168
163
|
|
|
169
164
|
def increment_route_metric_trip_count
|
|
170
|
-
return if route_type.nil?
|
|
171
|
-
|
|
172
165
|
SpreeCmCommissioner::RouteMetrics::IncreaseTripCountJob.perform_later(
|
|
173
166
|
origin_place_id: origin_place_id,
|
|
174
167
|
destination_place_id: destination_place_id,
|
|
@@ -177,8 +170,6 @@ module SpreeCmCommissioner
|
|
|
177
170
|
end
|
|
178
171
|
|
|
179
172
|
def decrement_route_metric_trip_count
|
|
180
|
-
return if route_type.nil?
|
|
181
|
-
|
|
182
173
|
SpreeCmCommissioner::RouteMetrics::DecreaseTripCountJob.perform_later(
|
|
183
174
|
origin_place_id: origin_place_id,
|
|
184
175
|
destination_place_id: destination_place_id,
|
|
@@ -186,28 +177,6 @@ module SpreeCmCommissioner
|
|
|
186
177
|
)
|
|
187
178
|
end
|
|
188
179
|
|
|
189
|
-
def increment_vendor_route_metric_trip_count
|
|
190
|
-
return if vendor_id.nil? || route_type.nil?
|
|
191
|
-
|
|
192
|
-
SpreeCmCommissioner::VendorRouteMetrics::IncreaseTripCountJob.perform_later(
|
|
193
|
-
vendor_id: vendor_id,
|
|
194
|
-
origin_place_id: origin_place_id,
|
|
195
|
-
destination_place_id: destination_place_id,
|
|
196
|
-
route_type: route_type
|
|
197
|
-
)
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def decrement_vendor_route_metric_trip_count
|
|
201
|
-
return if vendor_id.nil? || route_type.nil?
|
|
202
|
-
|
|
203
|
-
SpreeCmCommissioner::VendorRouteMetrics::DecreaseTripCountJob.perform_later(
|
|
204
|
-
vendor_id: vendor_id,
|
|
205
|
-
origin_place_id: origin_place_id,
|
|
206
|
-
destination_place_id: destination_place_id,
|
|
207
|
-
route_type: route_type
|
|
208
|
-
)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
180
|
def update_route_price_range
|
|
212
181
|
return unless route_id.present? && product_id.present?
|
|
213
182
|
|
|
@@ -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'
|
|
@@ -164,7 +159,6 @@ module SpreeCmCommissioner
|
|
|
164
159
|
return first_name if first_name.present?
|
|
165
160
|
return last_name if last_name.present?
|
|
166
161
|
return email if email.present?
|
|
167
|
-
return login if login.present?
|
|
168
162
|
|
|
169
163
|
phone_number
|
|
170
164
|
end
|
|
@@ -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
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# @return [Array<TripQueryResult>] Multi-leg trip results with pricing and inventory
|
|
17
17
|
#
|
|
18
18
|
module SpreeCmCommissioner
|
|
19
|
-
class MultiLegTripsQuery
|
|
19
|
+
class MultiLegTripsQuery
|
|
20
20
|
include SpreeCmCommissioner::Transit::TripHelper
|
|
21
21
|
|
|
22
22
|
attr_reader :origin_id,
|
|
@@ -71,10 +71,7 @@ module SpreeCmCommissioner
|
|
|
71
71
|
id: leg.parent_trip_id,
|
|
72
72
|
origin_place_id: leg.parent_origin_place_id,
|
|
73
73
|
destination_place_id: leg.parent_destination_place_id,
|
|
74
|
-
|
|
75
|
-
vendor_id: leg.parent_vendor_id,
|
|
76
|
-
has_return_trip_globally: leg.has_return_trip_globally,
|
|
77
|
-
has_return_trip_in_vendor: leg.has_return_trip_in_vendor
|
|
74
|
+
vendor_id: leg.parent_vendor_id
|
|
78
75
|
}
|
|
79
76
|
end
|
|
80
77
|
|
|
@@ -117,17 +114,6 @@ module SpreeCmCommissioner
|
|
|
117
114
|
LEFT JOIN spree_prices AS date_prices
|
|
118
115
|
ON date_prices.inventory_item_id = cm_inventory_items.id
|
|
119
116
|
AND date_prices.deleted_at IS NULL
|
|
120
|
-
|
|
121
|
-
LEFT JOIN cm_route_metrics AS global_return_metric
|
|
122
|
-
ON global_return_metric.origin_place_id = parent.destination_place_id
|
|
123
|
-
AND global_return_metric.destination_place_id = parent.origin_place_id
|
|
124
|
-
AND global_return_metric.route_type = parent.route_type
|
|
125
|
-
|
|
126
|
-
LEFT JOIN cm_vendor_route_metrics AS vendor_return_metric
|
|
127
|
-
ON vendor_return_metric.vendor_id = parent.vendor_id
|
|
128
|
-
AND vendor_return_metric.origin_place_id = parent.destination_place_id
|
|
129
|
-
AND vendor_return_metric.destination_place_id = parent.origin_place_id
|
|
130
|
-
AND vendor_return_metric.route_type = parent.route_type
|
|
131
117
|
SQL
|
|
132
118
|
.where(parent: { origin_place_id: origin_id, destination_place_id: destination_id })
|
|
133
119
|
|
|
@@ -146,7 +132,6 @@ module SpreeCmCommissioner
|
|
|
146
132
|
parent.origin_place_id AS parent_origin_place_id,
|
|
147
133
|
parent.destination_place_id AS parent_destination_place_id,
|
|
148
134
|
parent.vendor_id AS parent_vendor_id,
|
|
149
|
-
parent.route_type AS parent_route_type,
|
|
150
135
|
cm_trips.id AS leg_id,
|
|
151
136
|
stop_legs.offset_days AS offset_days,
|
|
152
137
|
stop_legs.sequence AS sequence,
|
|
@@ -156,10 +141,7 @@ module SpreeCmCommissioner
|
|
|
156
141
|
|
|
157
142
|
COALESCE(MIN(date_prices.amount), MIN(prices.amount)) AS price,
|
|
158
143
|
COALESCE(MIN(date_prices.compare_at_amount), MIN(prices.compare_at_amount)) AS compare_at_price,
|
|
159
|
-
MIN(COALESCE(date_prices.currency, prices.currency)) AS currency
|
|
160
|
-
|
|
161
|
-
COALESCE(MAX(global_return_metric.trip_count), 0) > 0 AS has_return_trip_globally,
|
|
162
|
-
COALESCE(MAX(vendor_return_metric.trip_count), 0) > 0 AS has_return_trip_in_vendor
|
|
144
|
+
MIN(COALESCE(date_prices.currency, prices.currency)) AS currency
|
|
163
145
|
SQL
|
|
164
146
|
# GROUP BY ensures one result row per parent+leg combination, and SUM aggregates inventory
|
|
165
147
|
# across all variants for that leg. Without aggregation, the single JOIN on spree_variants
|
|
@@ -173,7 +155,6 @@ module SpreeCmCommissioner
|
|
|
173
155
|
parent.origin_place_id,
|
|
174
156
|
parent.destination_place_id,
|
|
175
157
|
parent.vendor_id,
|
|
176
|
-
parent.route_type,
|
|
177
158
|
stop_legs.sequence,
|
|
178
159
|
stop_legs.offset_days
|
|
179
160
|
SQL
|
|
@@ -214,7 +195,7 @@ module SpreeCmCommissioner
|
|
|
214
195
|
:destination_place,
|
|
215
196
|
:vendor,
|
|
216
197
|
{ vehicle_type: { option_values: :option_type } },
|
|
217
|
-
{ trip_stops:
|
|
198
|
+
{ trip_stops: :stop_place },
|
|
218
199
|
{ product: { variants: :prices } }
|
|
219
200
|
)
|
|
220
201
|
.index_by(&:id)
|
|
@@ -235,14 +216,14 @@ module SpreeCmCommissioner
|
|
|
235
216
|
parent_trip: parent_trip,
|
|
236
217
|
trips: legs.map do |trip|
|
|
237
218
|
row = inventory_map[[parent_id, trip.id]]
|
|
238
|
-
build_trip_result(trip: trip, trip_row: row
|
|
219
|
+
build_trip_result(trip: trip, trip_row: row)
|
|
239
220
|
end
|
|
240
221
|
)
|
|
241
222
|
end
|
|
242
223
|
end
|
|
243
224
|
|
|
244
225
|
# @return [TripResult] Single leg with pricing and inventory
|
|
245
|
-
def build_trip_result(trip:, trip_row
|
|
226
|
+
def build_trip_result(trip:, trip_row:)
|
|
246
227
|
SpreeCmCommissioner::TripResult.new(
|
|
247
228
|
id: trip.id,
|
|
248
229
|
departure_time: trip.departure_time,
|
|
@@ -278,10 +259,7 @@ module SpreeCmCommissioner
|
|
|
278
259
|
|
|
279
260
|
stops: build_stops_from_record(trip),
|
|
280
261
|
|
|
281
|
-
amenities: trip.vehicle_type&.option_values || []
|
|
282
|
-
|
|
283
|
-
has_return_trip_globally: parent_trip[:has_return_trip_globally] || false,
|
|
284
|
-
has_return_trip_in_vendor: parent_trip[:has_return_trip_in_vendor] || false
|
|
262
|
+
amenities: trip.vehicle_type&.option_values || []
|
|
285
263
|
)
|
|
286
264
|
end
|
|
287
265
|
|
|
@@ -296,8 +274,7 @@ module SpreeCmCommissioner
|
|
|
296
274
|
departure_time: stop.departure_time,
|
|
297
275
|
arrival_time: stop.arrival_time,
|
|
298
276
|
lat: stop.stop_place&.lat,
|
|
299
|
-
lon: stop.stop_place&.lon
|
|
300
|
-
location_name: stop.location_place&.name
|
|
277
|
+
lon: stop.stop_place&.lon
|
|
301
278
|
}
|
|
302
279
|
end
|
|
303
280
|
end
|
|
@@ -78,7 +78,6 @@ module SpreeCmCommissioner
|
|
|
78
78
|
LEFT JOIN cm_inventory_items AS date_iv ON date_iv.variant_id = trip_variant.id AND date_iv.inventory_date = '#{date.to_date}' AND date_iv.quantity_available >= #{number_of_guests}
|
|
79
79
|
LEFT JOIN spree_prices AS date_prices ON date_prices.inventory_item_id = date_iv.id AND date_prices.deleted_at IS NULL
|
|
80
80
|
LEFT JOIN (#{stops_subquery_sql}) all_stops ON all_stops.trip_id = cm_trips.id
|
|
81
|
-
#{return_metric_joins_sql}
|
|
82
81
|
SQL
|
|
83
82
|
)
|
|
84
83
|
.where(<<~SQL.squish, origin: origin_id, destination: destination_id)
|
|
@@ -110,35 +109,7 @@ module SpreeCmCommissioner
|
|
|
110
109
|
COALESCE(date_prices.amount, prices.amount) AS price,
|
|
111
110
|
COALESCE(date_prices.compare_at_amount, prices.compare_at_amount) AS compare_at_price,
|
|
112
111
|
COALESCE(date_prices.currency, prices.currency) AS currency,
|
|
113
|
-
all_stops.stops AS stops
|
|
114
|
-
#{return_columns_sql}
|
|
115
|
-
SQL
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Expose whether a return (reverse-direction) trip exists, in two scopes, by reading the
|
|
119
|
-
# reverse-pair counters. Always computed (no return_date needed) so the response — and therefore
|
|
120
|
-
# the CDN/cache key — stays the same regardless of round-trip intent; the client filters by these
|
|
121
|
-
# flags locally when a return date is chosen. Date-agnostic by design (answers "a reverse route
|
|
122
|
-
# exists", not "a reverse trip runs on a specific date");
|
|
123
|
-
def return_columns_sql
|
|
124
|
-
<<~SQL.squish
|
|
125
|
-
COALESCE(global_return_metric.trip_count, 0) > 0 AS has_return_trip_globally,
|
|
126
|
-
COALESCE(vendor_return_metric.trip_count, 0) > 0 AS has_return_trip_in_vendor
|
|
127
|
-
SQL
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
# Reverse lookup: a trip A -> B has a return when a B -> A metric row has trips.
|
|
131
|
-
def return_metric_joins_sql
|
|
132
|
-
<<~SQL.squish
|
|
133
|
-
LEFT JOIN cm_route_metrics AS global_return_metric
|
|
134
|
-
ON global_return_metric.origin_place_id = cm_trips.destination_place_id
|
|
135
|
-
AND global_return_metric.destination_place_id = cm_trips.origin_place_id
|
|
136
|
-
AND global_return_metric.route_type = cm_trips.route_type
|
|
137
|
-
LEFT JOIN cm_vendor_route_metrics AS vendor_return_metric
|
|
138
|
-
ON vendor_return_metric.vendor_id = cm_trips.vendor_id
|
|
139
|
-
AND vendor_return_metric.origin_place_id = cm_trips.destination_place_id
|
|
140
|
-
AND vendor_return_metric.destination_place_id = cm_trips.origin_place_id
|
|
141
|
-
AND vendor_return_metric.route_type = cm_trips.route_type
|
|
112
|
+
all_stops.stops AS stops
|
|
142
113
|
SQL
|
|
143
114
|
end
|
|
144
115
|
|
|
@@ -157,13 +128,11 @@ module SpreeCmCommissioner
|
|
|
157
128
|
'departure_time', ts.departure_time AT TIME ZONE 'UTC',
|
|
158
129
|
'arrival_time', ts.arrival_time AT TIME ZONE 'UTC',
|
|
159
130
|
'lat', p.lat,
|
|
160
|
-
'lon', p.lon
|
|
161
|
-
'location_name', lp.name
|
|
131
|
+
'lon', p.lon
|
|
162
132
|
) ORDER BY ts.sequence
|
|
163
133
|
) AS stops
|
|
164
134
|
FROM cm_trip_stops ts
|
|
165
135
|
LEFT JOIN cm_places p ON p.id = ts.stop_place_id
|
|
166
|
-
LEFT JOIN cm_places lp ON lp.id = ts.location_place_id
|
|
167
136
|
GROUP BY ts.trip_id
|
|
168
137
|
SQL
|
|
169
138
|
end
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module V2
|
|
3
3
|
module Storefront
|
|
4
4
|
class HomepageSectionSerializer < BaseSerializer
|
|
5
|
-
attributes :id, :title, :segments, :description, :active, :position, :
|
|
5
|
+
attributes :id, :title, :segments, :description, :active, :position, :created_at, :updated_at
|
|
6
6
|
has_many :homepage_section_relatables
|
|
7
7
|
end
|
|
8
8
|
end
|
|
@@ -35,16 +35,14 @@ module Spree
|
|
|
35
35
|
|
|
36
36
|
base.has_one :google_wallet, serializer: SpreeCmCommissioner::V2::Storefront::GoogleWalletSerializer
|
|
37
37
|
|
|
38
|
-
base.has_many :guests, serializer: SpreeCmCommissioner::V2::Storefront::
|
|
38
|
+
base.has_many :guests, serializer: SpreeCmCommissioner::V2::Storefront::GuestSerializer
|
|
39
39
|
|
|
40
40
|
base.has_many :saved_guests, serializer: SpreeCmCommissioner::V2::Storefront::SavedGuestSerializer
|
|
41
41
|
|
|
42
|
-
base.has_many :pending_guests, serializer: SpreeCmCommissioner::V2::Storefront::
|
|
42
|
+
base.has_many :pending_guests, serializer: SpreeCmCommissioner::V2::Storefront::GuestSerializer
|
|
43
43
|
|
|
44
44
|
base.has_one :product, serializer: Spree::V2::Storefront::ProductSerializer
|
|
45
45
|
|
|
46
|
-
base.has_one :event, serializer: Spree::V2::Storefront::TaxonSerializer
|
|
47
|
-
|
|
48
46
|
# completion_steps updates frequently
|
|
49
47
|
base.cache_options store: nil
|
|
50
48
|
end
|
|
@@ -12,9 +12,8 @@ module Spree
|
|
|
12
12
|
base.has_one :default_state, serializer: :state
|
|
13
13
|
base.has_one :venue, serializer: ::SpreeCmCommissioner::V2::Storefront::ProductPlaceSerializer
|
|
14
14
|
|
|
15
|
-
base.attributes :need_confirmation, :product_type, :kyc, :kyc_fields, :allowed_upload_later, :allow_anonymous_booking,
|
|
16
|
-
|
|
17
|
-
base.attributes :reveal_description, :discontinue_on, :public_metadata, :purchasable_on, :preview
|
|
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
|
|
18
17
|
|
|
19
18
|
# Expose only the `event_id` here instead of the full event object.
|
|
20
19
|
# This lets the client fetch event details separately (usually already cached),
|
|
@@ -15,8 +15,7 @@ module Spree
|
|
|
15
15
|
|
|
16
16
|
base.attributes :custom_redirect_url, :kind, :subtitle, :from_date, :to_date,
|
|
17
17
|
:background_color, :foreground_color, :show_badge_status,
|
|
18
|
-
:purchasable_on, :vendor_id, :available_on, :hide_video_banner
|
|
19
|
-
:preview
|
|
18
|
+
:purchasable_on, :vendor_id, :available_on, :hide_video_banner
|
|
20
19
|
|
|
21
20
|
# To get full seat layout details, call the seat_layouts API with this ID.
|
|
22
21
|
base.attribute :seat_layout_ids, &:preload_seat_layout_ids
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module V2
|
|
3
3
|
module Tenant
|
|
4
4
|
class DynamicFieldSerializer < BaseSerializer
|
|
5
|
-
attributes :id, :label, :
|
|
5
|
+
attributes :id, :label, :data_type, :vendor_id, :multiple_select, :position, :data_fill_stage
|
|
6
6
|
|
|
7
7
|
has_many :dynamic_field_options, serializer: Spree::V2::Tenant::DynamicFieldOptionSerializer
|
|
8
8
|
end
|
|
@@ -3,7 +3,7 @@ module Spree
|
|
|
3
3
|
module Tenant
|
|
4
4
|
class HomepageSectionSerializer < BaseSerializer
|
|
5
5
|
attributes :id, :title, :segments, :description,
|
|
6
|
-
:active, :position, :
|
|
6
|
+
:active, :position, :created_at, :updated_at
|
|
7
7
|
|
|
8
8
|
has_many :homepage_section_relatables, serializer: ::Spree::V2::Tenant::HomepageSectionRelatableSerializer
|
|
9
9
|
end
|
|
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
|
|
|
2
2
|
module V2
|
|
3
3
|
module Storefront
|
|
4
4
|
class DynamicFieldSerializer < BaseSerializer
|
|
5
|
-
attributes :id, :label, :
|
|
5
|
+
attributes :id, :label, :data_type, :vendor_id, :multiple_select, :created_at, :updated_at, :position, :data_fill_stage
|
|
6
6
|
|
|
7
7
|
has_many :dynamic_field_options, serializer: SpreeCmCommissioner::V2::Storefront::DynamicFieldOptionSerializer
|
|
8
8
|
end
|
|
@@ -8,7 +8,7 @@ module SpreeCmCommissioner
|
|
|
8
8
|
:qr_data, :social_contact_platform, :social_contact, :available_social_contact_platforms,
|
|
9
9
|
:age, :emergency_contact, :other_organization, :expectation, :upload_later, :address, :formatted_bib_number, :phone_number,
|
|
10
10
|
:token, :country_code, :contact, :data_fill_stage_phase,
|
|
11
|
-
:saved_guest_id
|
|
11
|
+
:saved_guest_id
|
|
12
12
|
|
|
13
13
|
# temporary, once app release after cm-app v1.9.1, we no longer need this.
|
|
14
14
|
attribute :seat_number do |object|
|
|
@@ -30,8 +30,6 @@ module SpreeCmCommissioner
|
|
|
30
30
|
|
|
31
31
|
has_many :check_ins, serializer: SpreeCmCommissioner::V2::Storefront::CheckInSerializer
|
|
32
32
|
|
|
33
|
-
has_many :ticket_transfers, serializer: SpreeCmCommissioner::V2::Storefront::TicketTransferMinimalSerializer
|
|
34
|
-
|
|
35
33
|
# allowed_checkout updates frequently
|
|
36
34
|
cache_options store: nil
|
|
37
35
|
end
|
|
@@ -4,8 +4,7 @@ module SpreeCmCommissioner
|
|
|
4
4
|
class TripQueryResultSerializer < BaseSerializer
|
|
5
5
|
set_type :trip_query_result
|
|
6
6
|
|
|
7
|
-
attributes :quantity_available, :max_capacity, :price, :compare_at_price, :currency, :display_price, :display_compare_at_price
|
|
8
|
-
:has_return_trip_globally, :has_return_trip_in_vendor
|
|
7
|
+
attributes :quantity_available, :max_capacity, :price, :compare_at_price, :currency, :display_price, :display_compare_at_price
|
|
9
8
|
|
|
10
9
|
attribute :direct, &:direct?
|
|
11
10
|
has_many :trips, serializer: ::SpreeCmCommissioner::V2::Storefront::TripResultSerializer
|
|
@@ -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/*',
|