spree_cm_commissioner 2.5.1.pre.pre2 → 2.5.1.pre.pre3
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/Gemfile.lock +1 -1
- data/app/controllers/spree/api/chatrace/guests_controller.rb +37 -20
- data/app/controllers/spree/api/v2/operator/check_in_bulks_controller.rb +9 -0
- data/app/controllers/spree/api/v2/storefront/account/qr_data_controller.rb +30 -0
- data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +1 -1
- data/app/controllers/spree/api/v2/storefront/transit/draft_orders_controller.rb +4 -4
- data/app/controllers/spree/transit/trips_controller.rb +3 -3
- data/app/finders/spree_cm_commissioner/places/find_with_route.rb +12 -12
- data/app/finders/spree_cm_commissioner/routes/find_popular.rb +35 -20
- data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +4 -11
- data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +1 -10
- data/app/{services/spree_cm_commissioner/transit_order/create.rb → interactors/spree_cm_commissioner/transit/draft_order_creator.rb} +16 -13
- data/app/interactors/spree_cm_commissioner/trip_clone_creator.rb +3 -4
- data/app/interactors/spree_cm_commissioner/trip_stops_creator.rb +2 -2
- data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +2 -2
- data/app/jobs/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/transit/route_order_count_incrementer_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_job.rb +13 -0
- data/app/jobs/spree_cm_commissioner/transit/route_trip_count_decrementer_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb +10 -0
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +16 -11
- data/app/models/concerns/spree_cm_commissioner/route_order_countable.rb +2 -2
- data/app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb +48 -0
- data/app/models/concerns/spree_cm_commissioner/user_identity.rb +0 -6
- data/app/models/concerns/spree_cm_commissioner/variant_options_concern.rb +4 -0
- data/app/models/spree_cm_commissioner/guest.rb +4 -4
- data/app/models/spree_cm_commissioner/place.rb +8 -5
- data/app/models/spree_cm_commissioner/product_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/route.rb +5 -46
- data/app/models/spree_cm_commissioner/trip.rb +33 -8
- data/app/models/spree_cm_commissioner/trip_connection.rb +36 -0
- data/app/models/spree_cm_commissioner/trip_stop.rb +2 -16
- data/app/models/spree_cm_commissioner/user_decorator.rb +30 -18
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +1 -3
- data/app/models/spree_cm_commissioner/vendor_route.rb +9 -0
- data/app/queries/spree_cm_commissioner/guest_searcher_query.rb +25 -2
- data/app/queries/spree_cm_commissioner/trip_query.rb +2 -2
- data/app/serializers/spree/v2/storefront/user_serializer_decorator.rb +2 -1
- data/app/serializers/spree_cm_commissioner/v2/operator/guest_serializer.rb +1 -0
- data/app/serializers/spree_cm_commissioner/v2/operator/line_item_serializer.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/operator/{line_item_order_serializer.rb → order_serializer.rb} +1 -2
- data/app/serializers/spree_cm_commissioner/v2/operator/user_serializer.rb +11 -0
- data/app/serializers/spree_cm_commissioner/v2/operator/variant_serializer.rb +9 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +1 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +1 -1
- data/app/services/spree_cm_commissioner/{route_metrics/update_route_metrics.rb → routes/base_update_order_metrics.rb} +16 -11
- data/app/services/spree_cm_commissioner/routes/decrement_previous_trip_count.rb +30 -0
- data/app/services/spree_cm_commissioner/routes/decrement_trip_count.rb +33 -0
- data/app/services/spree_cm_commissioner/{route_metrics/increase_fulfilled_order_count.rb → routes/increment_fulfilled_order_count.rb} +3 -3
- data/app/services/spree_cm_commissioner/{route_metrics/increase_order_count.rb → routes/increment_order_count.rb} +3 -3
- data/app/services/spree_cm_commissioner/routes/increment_trip_count.rb +33 -0
- data/app/services/spree_cm_commissioner/seeds/user_usernames.rb +86 -0
- data/app/services/spree_cm_commissioner/users/qr_data/extract_login.rb +18 -0
- data/app/services/spree_cm_commissioner/users/qr_data/generate.rb +14 -0
- data/app/services/spree_cm_commissioner/users/qr_data/invalidate.rb +19 -0
- data/app/services/spree_cm_commissioner/users/qr_data/verify.rb +33 -0
- data/app/services/spree_cm_commissioner/users/username/generate.rb +68 -0
- data/app/views/spree/transit/trip_stops/index.html.erb +2 -4
- data/app/views/spree_cm_commissioner/guest_mailer/send_ticket_to_guest.html.erb +1 -0
- data/config/initializers/spree_permitted_attributes.rb +1 -11
- data/config/routes.rb +2 -6
- data/db/migrate/20260126110528_seed_user_initial_usernames.rb +5 -0
- data/lib/spree_cm_commissioner/test_helper/factories/route_factory.rb +6 -7
- data/lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb +6 -0
- data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +1 -4
- data/lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb +1 -3
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +1 -2
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb +0 -22
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +0 -4
- metadata +29 -38
- data/app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb +0 -60
- data/app/controllers/spree/api/v2/tenant/routes_controller.rb +0 -50
- data/app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb +0 -46
- data/app/finders/spree_cm_commissioner/route_metrics/find_popular.rb +0 -44
- data/app/finders/spree_cm_commissioner/routes/find.rb +0 -94
- data/app/jobs/spree_cm_commissioner/route_metrics/decrease_trip_count_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_fulfilled_order_count_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_order_count_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_trip_count_job.rb +0 -10
- data/app/models/spree_cm_commissioner/route_metric.rb +0 -21
- data/app/models/spree_cm_commissioner/route_photo.rb +0 -12
- data/app/serializers/spree/v2/tenant/transit_cart_serializer.rb +0 -11
- data/app/serializers/spree_cm_commissioner/v2/storefront/transit_line_item_serializer.rb +0 -17
- data/app/services/spree_cm_commissioner/route_metrics/decrease_trip_count.rb +0 -31
- data/app/services/spree_cm_commissioner/route_metrics/increase_trip_count.rb +0 -31
- data/app/services/spree_cm_commissioner/routes/create.rb +0 -51
- data/app/services/spree_cm_commissioner/routes/update.rb +0 -25
- data/app/services/spree_cm_commissioner/trips/create_single_leg.rb +0 -123
- data/app/services/spree_cm_commissioner/trips/service_calendars/create_or_update.rb +0 -54
- data/app/services/spree_cm_commissioner/trips/update_single_leg.rb +0 -88
- data/app/services/spree_cm_commissioner/trips/variants/create.rb +0 -103
- data/db/migrate/20251224033103_migrate_cm_routes_to_cm_route_metrics.rb +0 -17
- data/db/migrate/20251224033910_migrate_cm_vendor_routes_to_cm_routes.rb +0 -30
- data/db/migrate/20260105072450_migrate_cm_trip_stops_to_support_trip_connection.rb +0 -12
- data/db/migrate/20260108101406_add_allow_booking_to_cm_trips.rb +0 -5
- data/lib/spree_cm_commissioner/test_helper/factories/route_metric_factory.rb +0 -12
- data/lib/spree_cm_commissioner/test_helper/factories/route_photo_factory.rb +0 -5
- data/lib/spree_cm_commissioner/transit/route_stop.rb +0 -61
- data/lib/spree_cm_commissioner/transit/route_stop_collection.rb +0 -175
- data/lib/spree_cm_commissioner/transit/trip_form.rb +0 -81
- data/lib/spree_cm_commissioner/transit/trip_stop_form.rb +0 -61
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.5.1.pre.
|
|
4
|
+
version: 2.5.1.pre.pre3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-01-
|
|
11
|
+
date: 2026-01-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -937,6 +937,7 @@ files:
|
|
|
937
937
|
- app/controllers/spree/api/v2/storefront/account/mark_guest_info_complete_controller.rb
|
|
938
938
|
- app/controllers/spree/api/v2/storefront/account/orders_controller_decorator.rb
|
|
939
939
|
- app/controllers/spree/api/v2/storefront/account/preferred_payment_method_controller.rb
|
|
940
|
+
- app/controllers/spree/api/v2/storefront/account/qr_data_controller.rb
|
|
940
941
|
- app/controllers/spree/api/v2/storefront/account_checker_controller.rb
|
|
941
942
|
- app/controllers/spree/api/v2/storefront/account_deletions_controller.rb
|
|
942
943
|
- app/controllers/spree/api/v2/storefront/account_recovers_controller.rb
|
|
@@ -1032,16 +1033,13 @@ files:
|
|
|
1032
1033
|
- app/controllers/spree/api/v2/tenant/order_histories_controller.rb
|
|
1033
1034
|
- app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
|
|
1034
1035
|
- app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb
|
|
1035
|
-
- app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb
|
|
1036
1036
|
- app/controllers/spree/api/v2/tenant/product_dynamic_fields_controller.rb
|
|
1037
1037
|
- app/controllers/spree/api/v2/tenant/products_controller.rb
|
|
1038
1038
|
- app/controllers/spree/api/v2/tenant/profile_images_controller.rb
|
|
1039
1039
|
- app/controllers/spree/api/v2/tenant/reset_passwords_controller.rb
|
|
1040
|
-
- app/controllers/spree/api/v2/tenant/routes_controller.rb
|
|
1041
1040
|
- app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
|
|
1042
1041
|
- app/controllers/spree/api/v2/tenant/taxons_controller.rb
|
|
1043
1042
|
- app/controllers/spree/api/v2/tenant/tickets_controller.rb
|
|
1044
|
-
- app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb
|
|
1045
1043
|
- app/controllers/spree/api/v2/tenant/trip_places_controller.rb
|
|
1046
1044
|
- app/controllers/spree/api/v2/tenant/trip_search_controller.rb
|
|
1047
1045
|
- app/controllers/spree/api/v2/tenant/trips_controller.rb
|
|
@@ -1149,8 +1147,6 @@ files:
|
|
|
1149
1147
|
- app/finders/spree_cm_commissioner/payment_methods/group_by_bank.rb
|
|
1150
1148
|
- app/finders/spree_cm_commissioner/places/find_with_route.rb
|
|
1151
1149
|
- app/finders/spree_cm_commissioner/products/find_decorator.rb
|
|
1152
|
-
- app/finders/spree_cm_commissioner/route_metrics/find_popular.rb
|
|
1153
|
-
- app/finders/spree_cm_commissioner/routes/find.rb
|
|
1154
1150
|
- app/finders/spree_cm_commissioner/routes/find_popular.rb
|
|
1155
1151
|
- app/helpers/spree/admin/base_helper_decorator.rb
|
|
1156
1152
|
- app/helpers/spree/admin/google_wallets_helper.rb
|
|
@@ -1277,6 +1273,7 @@ files:
|
|
|
1277
1273
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_authorizer.rb
|
|
1278
1274
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_checker.rb
|
|
1279
1275
|
- app/interactors/spree_cm_commissioner/transactional_email_sender.rb
|
|
1276
|
+
- app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb
|
|
1280
1277
|
- app/interactors/spree_cm_commissioner/trip_clone_creator.rb
|
|
1281
1278
|
- app/interactors/spree_cm_commissioner/trip_stops_creator.rb
|
|
1282
1279
|
- app/interactors/spree_cm_commissioner/unique_device_token_cron_executor.rb
|
|
@@ -1345,10 +1342,6 @@ files:
|
|
|
1345
1342
|
- app/jobs/spree_cm_commissioner/product_event_id_to_children_syncer_job.rb
|
|
1346
1343
|
- app/jobs/spree_cm_commissioner/queue_order_webhooks_requests_job.rb
|
|
1347
1344
|
- app/jobs/spree_cm_commissioner/reports_assigner_job.rb
|
|
1348
|
-
- app/jobs/spree_cm_commissioner/route_metrics/decrease_trip_count_job.rb
|
|
1349
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_fulfilled_order_count_job.rb
|
|
1350
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_order_count_job.rb
|
|
1351
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_trip_count_job.rb
|
|
1352
1345
|
- app/jobs/spree_cm_commissioner/seats/bulk_release_on_hold_blocks_job.rb
|
|
1353
1346
|
- app/jobs/spree_cm_commissioner/seats/release_expired_blocks_job.rb
|
|
1354
1347
|
- app/jobs/spree_cm_commissioner/sms_job.rb
|
|
@@ -1362,6 +1355,11 @@ files:
|
|
|
1362
1355
|
- app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb
|
|
1363
1356
|
- app/jobs/spree_cm_commissioner/telegram_notification_sender_job.rb
|
|
1364
1357
|
- app/jobs/spree_cm_commissioner/telegram_start_message_sender_job.rb
|
|
1358
|
+
- app/jobs/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_job.rb
|
|
1359
|
+
- app/jobs/spree_cm_commissioner/transit/route_order_count_incrementer_job.rb
|
|
1360
|
+
- app/jobs/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_job.rb
|
|
1361
|
+
- app/jobs/spree_cm_commissioner/transit/route_trip_count_decrementer_job.rb
|
|
1362
|
+
- app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb
|
|
1365
1363
|
- app/jobs/spree_cm_commissioner/unique_device_token_cron_job.rb
|
|
1366
1364
|
- app/jobs/spree_cm_commissioner/variants_public_metadata_updater_job.rb
|
|
1367
1365
|
- app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb
|
|
@@ -1402,6 +1400,7 @@ files:
|
|
|
1402
1400
|
- app/models/concerns/spree_cm_commissioner/product_delegation.rb
|
|
1403
1401
|
- app/models/concerns/spree_cm_commissioner/product_type.rb
|
|
1404
1402
|
- app/models/concerns/spree_cm_commissioner/route_order_countable.rb
|
|
1403
|
+
- app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb
|
|
1405
1404
|
- app/models/concerns/spree_cm_commissioner/route_type.rb
|
|
1406
1405
|
- app/models/concerns/spree_cm_commissioner/service_calendar_type.rb
|
|
1407
1406
|
- app/models/concerns/spree_cm_commissioner/service_recommendations.rb
|
|
@@ -1564,8 +1563,6 @@ files:
|
|
|
1564
1563
|
- app/models/spree_cm_commissioner/role_decorator.rb
|
|
1565
1564
|
- app/models/spree_cm_commissioner/role_permission.rb
|
|
1566
1565
|
- app/models/spree_cm_commissioner/route.rb
|
|
1567
|
-
- app/models/spree_cm_commissioner/route_metric.rb
|
|
1568
|
-
- app/models/spree_cm_commissioner/route_photo.rb
|
|
1569
1566
|
- app/models/spree_cm_commissioner/s3_presigned_url.rb
|
|
1570
1567
|
- app/models/spree_cm_commissioner/s3_presigned_url_builder.rb
|
|
1571
1568
|
- app/models/spree_cm_commissioner/saved_guest.rb
|
|
@@ -1604,6 +1601,7 @@ files:
|
|
|
1604
1601
|
- app/models/spree_cm_commissioner/tenant.rb
|
|
1605
1602
|
- app/models/spree_cm_commissioner/transactional_email.rb
|
|
1606
1603
|
- app/models/spree_cm_commissioner/trip.rb
|
|
1604
|
+
- app/models/spree_cm_commissioner/trip_connection.rb
|
|
1607
1605
|
- app/models/spree_cm_commissioner/trip_stop.rb
|
|
1608
1606
|
- app/models/spree_cm_commissioner/user_decorator.rb
|
|
1609
1607
|
- app/models/spree_cm_commissioner/user_deletion_survey.rb
|
|
@@ -1629,6 +1627,7 @@ files:
|
|
|
1629
1627
|
- app/models/spree_cm_commissioner/vendor_photo.rb
|
|
1630
1628
|
- app/models/spree_cm_commissioner/vendor_place.rb
|
|
1631
1629
|
- app/models/spree_cm_commissioner/vendor_promotion_rule.rb
|
|
1630
|
+
- app/models/spree_cm_commissioner/vendor_route.rb
|
|
1632
1631
|
- app/models/spree_cm_commissioner/vendor_web_promotion_banner.rb
|
|
1633
1632
|
- app/models/spree_cm_commissioner/video.rb
|
|
1634
1633
|
- app/models/spree_cm_commissioner/video_on_demand.rb
|
|
@@ -1894,7 +1893,6 @@ files:
|
|
|
1894
1893
|
- app/serializers/spree/v2/tenant/taxon_serializer.rb
|
|
1895
1894
|
- app/serializers/spree/v2/tenant/taxonomy_serializer.rb
|
|
1896
1895
|
- app/serializers/spree/v2/tenant/ticket_serializer.rb
|
|
1897
|
-
- app/serializers/spree/v2/tenant/transit_cart_serializer.rb
|
|
1898
1896
|
- app/serializers/spree/v2/tenant/trip_place_serializer.rb
|
|
1899
1897
|
- app/serializers/spree/v2/tenant/trip_query_result_serializer.rb
|
|
1900
1898
|
- app/serializers/spree/v2/tenant/trip_serializer.rb
|
|
@@ -1922,11 +1920,13 @@ files:
|
|
|
1922
1920
|
- app/serializers/spree_cm_commissioner/v2/operator/event_qr_serializer.rb
|
|
1923
1921
|
- app/serializers/spree_cm_commissioner/v2/operator/event_ticket_aggregator_serializer.rb
|
|
1924
1922
|
- app/serializers/spree_cm_commissioner/v2/operator/guest_serializer.rb
|
|
1925
|
-
- app/serializers/spree_cm_commissioner/v2/operator/line_item_order_serializer.rb
|
|
1926
1923
|
- app/serializers/spree_cm_commissioner/v2/operator/line_item_serializer.rb
|
|
1924
|
+
- app/serializers/spree_cm_commissioner/v2/operator/order_serializer.rb
|
|
1927
1925
|
- app/serializers/spree_cm_commissioner/v2/operator/pie_chart_event_aggregator_serializer.rb
|
|
1928
1926
|
- app/serializers/spree_cm_commissioner/v2/operator/product_serializer.rb
|
|
1929
1927
|
- app/serializers/spree_cm_commissioner/v2/operator/taxon_serializer.rb
|
|
1928
|
+
- app/serializers/spree_cm_commissioner/v2/operator/user_serializer.rb
|
|
1929
|
+
- app/serializers/spree_cm_commissioner/v2/operator/variant_serializer.rb
|
|
1930
1930
|
- app/serializers/spree_cm_commissioner/v2/storefront/amenity_serializer.rb
|
|
1931
1931
|
- app/serializers/spree_cm_commissioner/v2/storefront/asset_serializer.rb
|
|
1932
1932
|
- app/serializers/spree_cm_commissioner/v2/storefront/base_serializer.rb
|
|
@@ -1971,7 +1971,6 @@ files:
|
|
|
1971
1971
|
- app/serializers/spree_cm_commissioner/v2/storefront/self_check_in_serializer.rb
|
|
1972
1972
|
- app/serializers/spree_cm_commissioner/v2/storefront/stock_item_serializer.rb
|
|
1973
1973
|
- app/serializers/spree_cm_commissioner/v2/storefront/taxon_include_product_serializer.rb
|
|
1974
|
-
- app/serializers/spree_cm_commissioner/v2/storefront/transit_line_item_serializer.rb
|
|
1975
1974
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_place_serializer.rb
|
|
1976
1975
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb
|
|
1977
1976
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb
|
|
@@ -2066,32 +2065,32 @@ files:
|
|
|
2066
2065
|
- app/services/spree_cm_commissioner/pricing_rules/update.rb
|
|
2067
2066
|
- app/services/spree_cm_commissioner/role_permissions_constructor.rb
|
|
2068
2067
|
- app/services/spree_cm_commissioner/role_permissions_loader.rb
|
|
2069
|
-
- app/services/spree_cm_commissioner/
|
|
2070
|
-
- app/services/spree_cm_commissioner/
|
|
2071
|
-
- app/services/spree_cm_commissioner/
|
|
2072
|
-
- app/services/spree_cm_commissioner/
|
|
2073
|
-
- app/services/spree_cm_commissioner/
|
|
2074
|
-
- app/services/spree_cm_commissioner/routes/
|
|
2075
|
-
- app/services/spree_cm_commissioner/routes/update.rb
|
|
2068
|
+
- app/services/spree_cm_commissioner/routes/base_update_order_metrics.rb
|
|
2069
|
+
- app/services/spree_cm_commissioner/routes/decrement_previous_trip_count.rb
|
|
2070
|
+
- app/services/spree_cm_commissioner/routes/decrement_trip_count.rb
|
|
2071
|
+
- app/services/spree_cm_commissioner/routes/increment_fulfilled_order_count.rb
|
|
2072
|
+
- app/services/spree_cm_commissioner/routes/increment_order_count.rb
|
|
2073
|
+
- app/services/spree_cm_commissioner/routes/increment_trip_count.rb
|
|
2076
2074
|
- app/services/spree_cm_commissioner/rsa_service.rb
|
|
2077
2075
|
- app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
|
|
2078
2076
|
- app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
|
|
2079
2077
|
- app/services/spree_cm_commissioner/seeds/roles_decorator.rb
|
|
2078
|
+
- app/services/spree_cm_commissioner/seeds/user_usernames.rb
|
|
2080
2079
|
- app/services/spree_cm_commissioner/signing/sign_data.rb
|
|
2081
2080
|
- app/services/spree_cm_commissioner/signing/verify_signature.rb
|
|
2082
2081
|
- app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb
|
|
2083
2082
|
- app/services/spree_cm_commissioner/transit/export_order.rb
|
|
2084
2083
|
- app/services/spree_cm_commissioner/transit/legs_builder_service.rb
|
|
2085
|
-
- app/services/spree_cm_commissioner/transit_order/create.rb
|
|
2086
|
-
- app/services/spree_cm_commissioner/trips/create_single_leg.rb
|
|
2087
2084
|
- app/services/spree_cm_commissioner/trips/search.rb
|
|
2088
|
-
- app/services/spree_cm_commissioner/trips/service_calendars/create_or_update.rb
|
|
2089
|
-
- app/services/spree_cm_commissioner/trips/update_single_leg.rb
|
|
2090
|
-
- app/services/spree_cm_commissioner/trips/variants/create.rb
|
|
2091
2085
|
- app/services/spree_cm_commissioner/update_guest_service.rb
|
|
2092
2086
|
- app/services/spree_cm_commissioner/user_authenticator.rb
|
|
2093
2087
|
- app/services/spree_cm_commissioner/user_roles_assigner.rb
|
|
2094
2088
|
- app/services/spree_cm_commissioner/users/incomplete_guest_checker_service.rb
|
|
2089
|
+
- app/services/spree_cm_commissioner/users/qr_data/extract_login.rb
|
|
2090
|
+
- app/services/spree_cm_commissioner/users/qr_data/generate.rb
|
|
2091
|
+
- app/services/spree_cm_commissioner/users/qr_data/invalidate.rb
|
|
2092
|
+
- app/services/spree_cm_commissioner/users/qr_data/verify.rb
|
|
2093
|
+
- app/services/spree_cm_commissioner/users/username/generate.rb
|
|
2095
2094
|
- app/services/spree_cm_commissioner/vendor_places/base.rb
|
|
2096
2095
|
- app/services/spree_cm_commissioner/vendor_places/bulk_create.rb
|
|
2097
2096
|
- app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb
|
|
@@ -2999,15 +2998,12 @@ files:
|
|
|
2999
2998
|
- db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb
|
|
3000
2999
|
- db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb
|
|
3001
3000
|
- db/migrate/20251219035243_add_migrations_to_support_vehicle_types.rb
|
|
3002
|
-
- db/migrate/20251224033103_migrate_cm_routes_to_cm_route_metrics.rb
|
|
3003
|
-
- db/migrate/20251224033910_migrate_cm_vendor_routes_to_cm_routes.rb
|
|
3004
3001
|
- db/migrate/20251225100000_add_age_group_to_cm_guests.rb
|
|
3005
3002
|
- db/migrate/20260105024742_add_type_to_cm_pricing_actions.rb
|
|
3006
3003
|
- db/migrate/20260105072146_add_nationality_group_and_age_group_to_cm_saved_guests.rb
|
|
3007
|
-
- db/migrate/20260105072450_migrate_cm_trip_stops_to_support_trip_connection.rb
|
|
3008
3004
|
- db/migrate/20260106093359_add_contact_phone_to_cm_vendor_places.rb
|
|
3009
|
-
- db/migrate/20260108101406_add_allow_booking_to_cm_trips.rb
|
|
3010
3005
|
- db/migrate/20260121024645_add_nationality_group_to_cm_guests.rb
|
|
3006
|
+
- db/migrate/20260126110528_seed_user_initial_usernames.rb
|
|
3011
3007
|
- docker-compose.yml
|
|
3012
3008
|
- docs/api/scoped-access-token-endpoints.md
|
|
3013
3009
|
- docs/option_types/attr_types.md
|
|
@@ -3101,8 +3097,6 @@ files:
|
|
|
3101
3097
|
- lib/spree_cm_commissioner/test_helper/factories/role.rb
|
|
3102
3098
|
- lib/spree_cm_commissioner/test_helper/factories/role_permission_factory.rb
|
|
3103
3099
|
- lib/spree_cm_commissioner/test_helper/factories/route_factory.rb
|
|
3104
|
-
- lib/spree_cm_commissioner/test_helper/factories/route_metric_factory.rb
|
|
3105
|
-
- lib/spree_cm_commissioner/test_helper/factories/route_photo_factory.rb
|
|
3106
3100
|
- lib/spree_cm_commissioner/test_helper/factories/saved_guest_factory.rb
|
|
3107
3101
|
- lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb
|
|
3108
3102
|
- lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb
|
|
@@ -3119,6 +3113,7 @@ files:
|
|
|
3119
3113
|
- lib/spree_cm_commissioner/test_helper/factories/telegram_bot_factory.rb
|
|
3120
3114
|
- lib/spree_cm_commissioner/test_helper/factories/tenant_factory.rb
|
|
3121
3115
|
- lib/spree_cm_commissioner/test_helper/factories/transactional_email_factory.rb
|
|
3116
|
+
- lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb
|
|
3122
3117
|
- lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb
|
|
3123
3118
|
- lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb
|
|
3124
3119
|
- lib/spree_cm_commissioner/test_helper/factories/user_deletion_reasons_factory.rb
|
|
@@ -3136,11 +3131,7 @@ files:
|
|
|
3136
3131
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_factory.rb
|
|
3137
3132
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_rule_factory.rb
|
|
3138
3133
|
- lib/spree_cm_commissioner/transit/leg.rb
|
|
3139
|
-
- lib/spree_cm_commissioner/transit/route_stop.rb
|
|
3140
|
-
- lib/spree_cm_commissioner/transit/route_stop_collection.rb
|
|
3141
3134
|
- lib/spree_cm_commissioner/transit/seat_selection.rb
|
|
3142
|
-
- lib/spree_cm_commissioner/transit/trip_form.rb
|
|
3143
|
-
- lib/spree_cm_commissioner/transit/trip_stop_form.rb
|
|
3144
3135
|
- lib/spree_cm_commissioner/trip_query_result.rb
|
|
3145
3136
|
- lib/spree_cm_commissioner/trip_result.rb
|
|
3146
3137
|
- lib/spree_cm_commissioner/user_session_jwt_token.rb
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V2
|
|
4
|
-
module Tenant
|
|
5
|
-
class PopularRoutePlacesController < BaseController
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
# override
|
|
9
|
-
def collection
|
|
10
|
-
@collection ||= collection_finder.new(
|
|
11
|
-
tenant: @tenant,
|
|
12
|
-
route_type: params[:route_type]
|
|
13
|
-
).execute
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# override
|
|
17
|
-
def default_resource_includes
|
|
18
|
-
%w[origin_place destination_place]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# override
|
|
22
|
-
def collection_finder
|
|
23
|
-
SpreeCmCommissioner::Routes::FindPopular
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# override
|
|
27
|
-
def collection_serializer
|
|
28
|
-
resource_serializer
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# override
|
|
32
|
-
def resource_serializer
|
|
33
|
-
SpreeCmCommissioner::V2::Storefront::RouteSerializer
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# override
|
|
37
|
-
def serializer_params
|
|
38
|
-
super.merge(
|
|
39
|
-
include_vendors: include_vendors?,
|
|
40
|
-
include_nearby_places: include_nearby_places?
|
|
41
|
-
)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# override
|
|
45
|
-
def required_schema
|
|
46
|
-
SpreeCmCommissioner::PopularRoutePlacesRequestSchema
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def include_vendors?
|
|
50
|
-
resource_includes.include?(:vendors) || false
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def include_nearby_places?
|
|
54
|
-
resource_includes.include?(:nearby_places) || false
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V2
|
|
4
|
-
module Tenant
|
|
5
|
-
class RoutesController < BaseController
|
|
6
|
-
private
|
|
7
|
-
|
|
8
|
-
# override
|
|
9
|
-
def collection
|
|
10
|
-
@collection ||= collection_finder.new(
|
|
11
|
-
tenant: @tenant,
|
|
12
|
-
params: params
|
|
13
|
-
).execute
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# override
|
|
17
|
-
def collection_finder
|
|
18
|
-
SpreeCmCommissioner::Routes::Find
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# override
|
|
22
|
-
def collection_serializer
|
|
23
|
-
SpreeCmCommissioner::V2::Storefront::RouteSerializer
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# override
|
|
27
|
-
def serializer_params
|
|
28
|
-
super.merge(
|
|
29
|
-
include_vendors: include_vendors?,
|
|
30
|
-
include_nearby_places: include_nearby_places?
|
|
31
|
-
)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# override
|
|
35
|
-
def required_schema
|
|
36
|
-
SpreeCmCommissioner::PopularRoutePlacesRequestSchema
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def include_vendors?
|
|
40
|
-
resource_includes.include?(:vendors) || false
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def include_nearby_places?
|
|
44
|
-
resource_includes.include?(:nearby_places) || false
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V2
|
|
4
|
-
module Tenant
|
|
5
|
-
module Transit
|
|
6
|
-
class DraftOrdersController < BaseController
|
|
7
|
-
# Creates a draft transit order for tenant.
|
|
8
|
-
# Endpoint: POST /api/v2/tenant/transit/draft_orders
|
|
9
|
-
# Params:
|
|
10
|
-
# - outbound_date: Date of outbound transit (optional)
|
|
11
|
-
# - inbound_date: Date of inbound transit (optional)
|
|
12
|
-
# - outbound_legs: Array of outbound leg details (required)
|
|
13
|
-
# - inbound_legs: Array of inbound leg details (optional)
|
|
14
|
-
def create
|
|
15
|
-
@outbound_legs = params[:outbound_legs].is_a?(Array) && params[:outbound_legs].any? ? build_legs(:outbound, params[:outbound_legs]) : []
|
|
16
|
-
@inbound_legs = params[:inbound_legs].is_a?(Array) && params[:inbound_legs].any? ? build_legs(:inbound, params[:inbound_legs]) : []
|
|
17
|
-
|
|
18
|
-
result = SpreeCmCommissioner::TransitOrder::Create.call(
|
|
19
|
-
outbound_date: params[:outbound_date]&.to_date,
|
|
20
|
-
inbound_date: params[:inbound_date]&.to_date,
|
|
21
|
-
outbound_legs: @outbound_legs,
|
|
22
|
-
inbound_legs: @inbound_legs,
|
|
23
|
-
user: spree_current_user
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
if result.success?
|
|
27
|
-
render_serialized_payload { serialize_resource(result.value[:order]) }
|
|
28
|
-
else
|
|
29
|
-
render_error_payload(result.error)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def build_legs(direction, legs_params)
|
|
34
|
-
SpreeCmCommissioner::Transit::LegsBuilderService.new(direction: direction, legs_params: legs_params).call
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# override
|
|
38
|
-
def resource_serializer
|
|
39
|
-
Spree::V2::Tenant::TransitCartSerializer
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Finds route metrics ordered by popularity based on order metrics.
|
|
2
|
-
#
|
|
3
|
-
# Route metrics are sorted by:
|
|
4
|
-
# 1. fulfilled_order_count (completed orders) - DESC
|
|
5
|
-
# 2. order_count (total orders including incomplete) - DESC
|
|
6
|
-
#
|
|
7
|
-
# @param route_type [Symbol, String] Optional. Filter by route type (e.g., :ferry, :bus)
|
|
8
|
-
#
|
|
9
|
-
# @return [ActiveRecord::Relation<SpreeCmCommissioner::RouteMetric>] Route metrics with origin and destination places loaded,
|
|
10
|
-
# ordered from most to least popular
|
|
11
|
-
#
|
|
12
|
-
# @example Get all popular route metrics
|
|
13
|
-
# finder = SpreeCmCommissioner::RouteMetrics::FindPopular.new
|
|
14
|
-
# finder.execute # => Returns all route metrics sorted by fulfillment and order counts
|
|
15
|
-
#
|
|
16
|
-
# @example Get popular ferry route metrics
|
|
17
|
-
# finder = SpreeCmCommissioner::RouteMetrics::FindPopular.new
|
|
18
|
-
# finder.execute(route_type: :ferry) # => Returns ferry route metrics sorted by popularity
|
|
19
|
-
#
|
|
20
|
-
# @example Get popular bus route metrics
|
|
21
|
-
# finder = SpreeCmCommissioner::RouteMetrics::FindPopular.new
|
|
22
|
-
# finder.execute(route_type: :bus) # => Returns bus route metrics sorted by popularity
|
|
23
|
-
|
|
24
|
-
module SpreeCmCommissioner
|
|
25
|
-
module RouteMetrics
|
|
26
|
-
class FindPopular
|
|
27
|
-
def execute(route_type: nil, query: nil)
|
|
28
|
-
scope(route_type: route_type, query: query)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
def scope(route_type:, query:)
|
|
34
|
-
result = SpreeCmCommissioner::RouteMetric.all
|
|
35
|
-
|
|
36
|
-
result = result.where(route_type: route_type.to_sym) if route_type.present?
|
|
37
|
-
result = result.where('cm_route_metrics.route_name ILIKE ?', "%#{query}%") if query.present?
|
|
38
|
-
|
|
39
|
-
result.includes(:origin_place, :destination_place)
|
|
40
|
-
.order(fulfilled_order_count: :desc, order_count: :desc)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Finder for Route records with common filtering options.
|
|
2
|
-
# Usage:
|
|
3
|
-
# finder = SpreeCmCommissioner::Routes::Find.new(vendor: vendor, params: params)
|
|
4
|
-
# finder = SpreeCmCommissioner::Routes::Find.new(tenant: tenant, params: params)
|
|
5
|
-
# finder.execute
|
|
6
|
-
# returns ActiveRecord::Relation of SpreeCmCommissioner::Route
|
|
7
|
-
|
|
8
|
-
module SpreeCmCommissioner
|
|
9
|
-
module Routes
|
|
10
|
-
class Find
|
|
11
|
-
def initialize(vendor: nil, tenant: nil, params: {})
|
|
12
|
-
@vendor = vendor
|
|
13
|
-
@tenant = tenant
|
|
14
|
-
@params = params || {}
|
|
15
|
-
|
|
16
|
-
@ids = Array(@params[:ids]).map(&:to_s)
|
|
17
|
-
@name = @params.dig(:filter, :name) || @params[:name]
|
|
18
|
-
@route_type = @params.dig(:filter, :route_type) || @params[:route_type]
|
|
19
|
-
@origin_place_id = @params.dig(:filter, :origin_place_id)
|
|
20
|
-
@destination_place_id = @params.dig(:filter, :destination_place_id)
|
|
21
|
-
@query = @params.dig(:filter, :query) || @params[:query]
|
|
22
|
-
@limit = (@params[:limit] || @params.dig(:page, :limit) || 50).to_i
|
|
23
|
-
@order = @params[:order] || 'created_at DESC'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def execute
|
|
27
|
-
results = base_scope
|
|
28
|
-
results = by_ids(results) if ids?
|
|
29
|
-
results = by_name(results) if name?
|
|
30
|
-
results = by_route_type(results) if route_type?
|
|
31
|
-
results = by_origin_place(results) if origin_place_id.present?
|
|
32
|
-
results = by_destination_place(results) if destination_place_id.present?
|
|
33
|
-
results = by_query(results) if query?
|
|
34
|
-
|
|
35
|
-
results.order(order_clause).limit(limit)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
attr_reader :vendor, :tenant, :params, :ids, :name, :route_type, :origin_place_id, :destination_place_id, :query, :limit, :order
|
|
41
|
-
|
|
42
|
-
def base_scope
|
|
43
|
-
scope = SpreeCmCommissioner::Route.includes(:origin_place, :destination_place, :route_photos)
|
|
44
|
-
scope = scope.where(vendor_id: vendor.id) if vendor.present?
|
|
45
|
-
scope = scope.where(tenant_id: tenant.id) if tenant.present?
|
|
46
|
-
scope
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def ids?
|
|
50
|
-
ids.present?
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def name?
|
|
54
|
-
name.present?
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def route_type?
|
|
58
|
-
route_type.present?
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def query?
|
|
62
|
-
query.present?
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def by_ids(scope)
|
|
66
|
-
scope.where(id: ids)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def by_name(scope)
|
|
70
|
-
scope.where('cm_routes.route_name ILIKE ?', "%#{name}%")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def by_route_type(scope)
|
|
74
|
-
scope.where(route_type: route_type.to_s)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def by_origin_place(scope)
|
|
78
|
-
scope.where(origin_place_id: origin_place_id)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def by_destination_place(scope)
|
|
82
|
-
scope.where(destination_place_id: destination_place_id)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def by_query(scope)
|
|
86
|
-
scope.where('cm_routes.route_name ILIKE :q OR cm_routes.short_name ILIKE :q', q: "%#{query}%")
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def order_clause
|
|
90
|
-
order
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteMetrics
|
|
3
|
-
class DecreaseTripCountJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
trip = SpreeCmCommissioner::Trip.find(options[:trip_id])
|
|
6
|
-
SpreeCmCommissioner::RouteMetrics::DecreaseTripCount.call(trip: trip)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteMetrics
|
|
3
|
-
class IncreaseFulfilledOrderCountJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
order = Spree::Order.find(options[:order_id])
|
|
6
|
-
SpreeCmCommissioner::RouteMetrics::IncreaseFulfilledOrderCount.call(order: order)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteMetrics
|
|
3
|
-
class IncreaseOrderCountJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
order = Spree::Order.find(options[:order_id])
|
|
6
|
-
SpreeCmCommissioner::RouteMetrics::IncreaseOrderCount.call(order: order)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteMetrics
|
|
3
|
-
class IncreaseTripCountJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
trip = SpreeCmCommissioner::Trip.find(options[:trip_id])
|
|
6
|
-
SpreeCmCommissioner::RouteMetrics::IncreaseTripCount.call(trip: trip)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class RouteMetric < Base
|
|
3
|
-
include SpreeCmCommissioner::RouteType
|
|
4
|
-
|
|
5
|
-
belongs_to :origin_place, class_name: 'SpreeCmCommissioner::Place', optional: false
|
|
6
|
-
belongs_to :destination_place, class_name: 'SpreeCmCommissioner::Place', optional: false
|
|
7
|
-
|
|
8
|
-
validates :route_type, presence: true
|
|
9
|
-
validates :route_type, uniqueness: { scope: %i[origin_place_id destination_place_id] }
|
|
10
|
-
|
|
11
|
-
validate :origin_and_destination_cannot_be_the_same
|
|
12
|
-
|
|
13
|
-
private
|
|
14
|
-
|
|
15
|
-
def origin_and_destination_cannot_be_the_same
|
|
16
|
-
return unless origin_place_id == destination_place_id
|
|
17
|
-
|
|
18
|
-
errors.add(:base, 'Origin and destination cannot be the same')
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module V2
|
|
3
|
-
module Storefront
|
|
4
|
-
class TransitLineItemSerializer < BaseSerializer
|
|
5
|
-
# Nested-only API shape
|
|
6
|
-
attributes :from_date,
|
|
7
|
-
:to_date,
|
|
8
|
-
:trip_id,
|
|
9
|
-
:direction,
|
|
10
|
-
:boarding_trip_stop_id,
|
|
11
|
-
:drop_off_trip_stop_id
|
|
12
|
-
|
|
13
|
-
cache_options store: nil
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|