spree_cm_commissioner 2.5.1.pre.pre5 → 2.5.1
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 +2 -2
- data/Gemfile.lock +1 -1
- data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +2 -2
- 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 -19
- 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/route_order_countable.rb +2 -2
- data/app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb +48 -0
- 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 -45
- 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/vendor_decorator.rb +1 -3
- data/app/models/spree_cm_commissioner/vendor_route.rb +9 -0
- data/app/queries/spree_cm_commissioner/trip_query.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +1 -2
- 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/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 +0 -11
- data/config/routes.rb +0 -6
- 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/vendor_factory.rb +0 -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 +19 -39
- 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/route_metric_serializer.rb +0 -13
- 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 -128
- 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 -203
- data/lib/spree_cm_commissioner/transit/trip_form.rb +0 -105
- data/lib/spree_cm_commissioner/transit/trip_stop_form.rb +0 -67
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_cm_commissioner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.1
|
|
4
|
+
version: 2.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
@@ -1033,16 +1033,13 @@ files:
|
|
|
1033
1033
|
- app/controllers/spree/api/v2/tenant/order_histories_controller.rb
|
|
1034
1034
|
- app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
|
|
1035
1035
|
- app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb
|
|
1036
|
-
- app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb
|
|
1037
1036
|
- app/controllers/spree/api/v2/tenant/product_dynamic_fields_controller.rb
|
|
1038
1037
|
- app/controllers/spree/api/v2/tenant/products_controller.rb
|
|
1039
1038
|
- app/controllers/spree/api/v2/tenant/profile_images_controller.rb
|
|
1040
1039
|
- app/controllers/spree/api/v2/tenant/reset_passwords_controller.rb
|
|
1041
|
-
- app/controllers/spree/api/v2/tenant/routes_controller.rb
|
|
1042
1040
|
- app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
|
|
1043
1041
|
- app/controllers/spree/api/v2/tenant/taxons_controller.rb
|
|
1044
1042
|
- app/controllers/spree/api/v2/tenant/tickets_controller.rb
|
|
1045
|
-
- app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb
|
|
1046
1043
|
- app/controllers/spree/api/v2/tenant/trip_places_controller.rb
|
|
1047
1044
|
- app/controllers/spree/api/v2/tenant/trip_search_controller.rb
|
|
1048
1045
|
- app/controllers/spree/api/v2/tenant/trips_controller.rb
|
|
@@ -1150,8 +1147,6 @@ files:
|
|
|
1150
1147
|
- app/finders/spree_cm_commissioner/payment_methods/group_by_bank.rb
|
|
1151
1148
|
- app/finders/spree_cm_commissioner/places/find_with_route.rb
|
|
1152
1149
|
- app/finders/spree_cm_commissioner/products/find_decorator.rb
|
|
1153
|
-
- app/finders/spree_cm_commissioner/route_metrics/find_popular.rb
|
|
1154
|
-
- app/finders/spree_cm_commissioner/routes/find.rb
|
|
1155
1150
|
- app/finders/spree_cm_commissioner/routes/find_popular.rb
|
|
1156
1151
|
- app/helpers/spree/admin/base_helper_decorator.rb
|
|
1157
1152
|
- app/helpers/spree/admin/google_wallets_helper.rb
|
|
@@ -1278,6 +1273,7 @@ files:
|
|
|
1278
1273
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_authorizer.rb
|
|
1279
1274
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_checker.rb
|
|
1280
1275
|
- app/interactors/spree_cm_commissioner/transactional_email_sender.rb
|
|
1276
|
+
- app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb
|
|
1281
1277
|
- app/interactors/spree_cm_commissioner/trip_clone_creator.rb
|
|
1282
1278
|
- app/interactors/spree_cm_commissioner/trip_stops_creator.rb
|
|
1283
1279
|
- app/interactors/spree_cm_commissioner/unique_device_token_cron_executor.rb
|
|
@@ -1346,10 +1342,6 @@ files:
|
|
|
1346
1342
|
- app/jobs/spree_cm_commissioner/product_event_id_to_children_syncer_job.rb
|
|
1347
1343
|
- app/jobs/spree_cm_commissioner/queue_order_webhooks_requests_job.rb
|
|
1348
1344
|
- app/jobs/spree_cm_commissioner/reports_assigner_job.rb
|
|
1349
|
-
- app/jobs/spree_cm_commissioner/route_metrics/decrease_trip_count_job.rb
|
|
1350
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_fulfilled_order_count_job.rb
|
|
1351
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_order_count_job.rb
|
|
1352
|
-
- app/jobs/spree_cm_commissioner/route_metrics/increase_trip_count_job.rb
|
|
1353
1345
|
- app/jobs/spree_cm_commissioner/seats/bulk_release_on_hold_blocks_job.rb
|
|
1354
1346
|
- app/jobs/spree_cm_commissioner/seats/release_expired_blocks_job.rb
|
|
1355
1347
|
- app/jobs/spree_cm_commissioner/sms_job.rb
|
|
@@ -1363,6 +1355,11 @@ files:
|
|
|
1363
1355
|
- app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb
|
|
1364
1356
|
- app/jobs/spree_cm_commissioner/telegram_notification_sender_job.rb
|
|
1365
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
|
|
1366
1363
|
- app/jobs/spree_cm_commissioner/unique_device_token_cron_job.rb
|
|
1367
1364
|
- app/jobs/spree_cm_commissioner/variants_public_metadata_updater_job.rb
|
|
1368
1365
|
- app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb
|
|
@@ -1403,6 +1400,7 @@ files:
|
|
|
1403
1400
|
- app/models/concerns/spree_cm_commissioner/product_delegation.rb
|
|
1404
1401
|
- app/models/concerns/spree_cm_commissioner/product_type.rb
|
|
1405
1402
|
- app/models/concerns/spree_cm_commissioner/route_order_countable.rb
|
|
1403
|
+
- app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb
|
|
1406
1404
|
- app/models/concerns/spree_cm_commissioner/route_type.rb
|
|
1407
1405
|
- app/models/concerns/spree_cm_commissioner/service_calendar_type.rb
|
|
1408
1406
|
- app/models/concerns/spree_cm_commissioner/service_recommendations.rb
|
|
@@ -1565,8 +1563,6 @@ files:
|
|
|
1565
1563
|
- app/models/spree_cm_commissioner/role_decorator.rb
|
|
1566
1564
|
- app/models/spree_cm_commissioner/role_permission.rb
|
|
1567
1565
|
- app/models/spree_cm_commissioner/route.rb
|
|
1568
|
-
- app/models/spree_cm_commissioner/route_metric.rb
|
|
1569
|
-
- app/models/spree_cm_commissioner/route_photo.rb
|
|
1570
1566
|
- app/models/spree_cm_commissioner/s3_presigned_url.rb
|
|
1571
1567
|
- app/models/spree_cm_commissioner/s3_presigned_url_builder.rb
|
|
1572
1568
|
- app/models/spree_cm_commissioner/saved_guest.rb
|
|
@@ -1605,6 +1601,7 @@ files:
|
|
|
1605
1601
|
- app/models/spree_cm_commissioner/tenant.rb
|
|
1606
1602
|
- app/models/spree_cm_commissioner/transactional_email.rb
|
|
1607
1603
|
- app/models/spree_cm_commissioner/trip.rb
|
|
1604
|
+
- app/models/spree_cm_commissioner/trip_connection.rb
|
|
1608
1605
|
- app/models/spree_cm_commissioner/trip_stop.rb
|
|
1609
1606
|
- app/models/spree_cm_commissioner/user_decorator.rb
|
|
1610
1607
|
- app/models/spree_cm_commissioner/user_deletion_survey.rb
|
|
@@ -1630,6 +1627,7 @@ files:
|
|
|
1630
1627
|
- app/models/spree_cm_commissioner/vendor_photo.rb
|
|
1631
1628
|
- app/models/spree_cm_commissioner/vendor_place.rb
|
|
1632
1629
|
- app/models/spree_cm_commissioner/vendor_promotion_rule.rb
|
|
1630
|
+
- app/models/spree_cm_commissioner/vendor_route.rb
|
|
1633
1631
|
- app/models/spree_cm_commissioner/vendor_web_promotion_banner.rb
|
|
1634
1632
|
- app/models/spree_cm_commissioner/video.rb
|
|
1635
1633
|
- app/models/spree_cm_commissioner/video_on_demand.rb
|
|
@@ -1895,7 +1893,6 @@ files:
|
|
|
1895
1893
|
- app/serializers/spree/v2/tenant/taxon_serializer.rb
|
|
1896
1894
|
- app/serializers/spree/v2/tenant/taxonomy_serializer.rb
|
|
1897
1895
|
- app/serializers/spree/v2/tenant/ticket_serializer.rb
|
|
1898
|
-
- app/serializers/spree/v2/tenant/transit_cart_serializer.rb
|
|
1899
1896
|
- app/serializers/spree/v2/tenant/trip_place_serializer.rb
|
|
1900
1897
|
- app/serializers/spree/v2/tenant/trip_query_result_serializer.rb
|
|
1901
1898
|
- app/serializers/spree/v2/tenant/trip_serializer.rb
|
|
@@ -1967,7 +1964,6 @@ files:
|
|
|
1967
1964
|
- app/serializers/spree_cm_commissioner/v2/storefront/qr_url_serializer.rb
|
|
1968
1965
|
- app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb
|
|
1969
1966
|
- app/serializers/spree_cm_commissioner/v2/storefront/reset_password_serializer.rb
|
|
1970
|
-
- app/serializers/spree_cm_commissioner/v2/storefront/route_metric_serializer.rb
|
|
1971
1967
|
- app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb
|
|
1972
1968
|
- app/serializers/spree_cm_commissioner/v2/storefront/saved_guest_serializer.rb
|
|
1973
1969
|
- app/serializers/spree_cm_commissioner/v2/storefront/seat_layout_serializer.rb
|
|
@@ -1975,7 +1971,6 @@ files:
|
|
|
1975
1971
|
- app/serializers/spree_cm_commissioner/v2/storefront/self_check_in_serializer.rb
|
|
1976
1972
|
- app/serializers/spree_cm_commissioner/v2/storefront/stock_item_serializer.rb
|
|
1977
1973
|
- app/serializers/spree_cm_commissioner/v2/storefront/taxon_include_product_serializer.rb
|
|
1978
|
-
- app/serializers/spree_cm_commissioner/v2/storefront/transit_line_item_serializer.rb
|
|
1979
1974
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_place_serializer.rb
|
|
1980
1975
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb
|
|
1981
1976
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb
|
|
@@ -2070,13 +2065,12 @@ files:
|
|
|
2070
2065
|
- app/services/spree_cm_commissioner/pricing_rules/update.rb
|
|
2071
2066
|
- app/services/spree_cm_commissioner/role_permissions_constructor.rb
|
|
2072
2067
|
- app/services/spree_cm_commissioner/role_permissions_loader.rb
|
|
2073
|
-
- app/services/spree_cm_commissioner/
|
|
2074
|
-
- app/services/spree_cm_commissioner/
|
|
2075
|
-
- app/services/spree_cm_commissioner/
|
|
2076
|
-
- app/services/spree_cm_commissioner/
|
|
2077
|
-
- app/services/spree_cm_commissioner/
|
|
2078
|
-
- app/services/spree_cm_commissioner/routes/
|
|
2079
|
-
- 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
|
|
2080
2074
|
- app/services/spree_cm_commissioner/rsa_service.rb
|
|
2081
2075
|
- app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
|
|
2082
2076
|
- app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
|
|
@@ -2087,12 +2081,7 @@ files:
|
|
|
2087
2081
|
- app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb
|
|
2088
2082
|
- app/services/spree_cm_commissioner/transit/export_order.rb
|
|
2089
2083
|
- app/services/spree_cm_commissioner/transit/legs_builder_service.rb
|
|
2090
|
-
- app/services/spree_cm_commissioner/transit_order/create.rb
|
|
2091
|
-
- app/services/spree_cm_commissioner/trips/create_single_leg.rb
|
|
2092
2084
|
- app/services/spree_cm_commissioner/trips/search.rb
|
|
2093
|
-
- app/services/spree_cm_commissioner/trips/service_calendars/create_or_update.rb
|
|
2094
|
-
- app/services/spree_cm_commissioner/trips/update_single_leg.rb
|
|
2095
|
-
- app/services/spree_cm_commissioner/trips/variants/create.rb
|
|
2096
2085
|
- app/services/spree_cm_commissioner/update_guest_service.rb
|
|
2097
2086
|
- app/services/spree_cm_commissioner/user_authenticator.rb
|
|
2098
2087
|
- app/services/spree_cm_commissioner/user_roles_assigner.rb
|
|
@@ -3009,14 +2998,10 @@ files:
|
|
|
3009
2998
|
- db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb
|
|
3010
2999
|
- db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb
|
|
3011
3000
|
- db/migrate/20251219035243_add_migrations_to_support_vehicle_types.rb
|
|
3012
|
-
- db/migrate/20251224033103_migrate_cm_routes_to_cm_route_metrics.rb
|
|
3013
|
-
- db/migrate/20251224033910_migrate_cm_vendor_routes_to_cm_routes.rb
|
|
3014
3001
|
- db/migrate/20251225100000_add_age_group_to_cm_guests.rb
|
|
3015
3002
|
- db/migrate/20260105024742_add_type_to_cm_pricing_actions.rb
|
|
3016
3003
|
- db/migrate/20260105072146_add_nationality_group_and_age_group_to_cm_saved_guests.rb
|
|
3017
|
-
- db/migrate/20260105072450_migrate_cm_trip_stops_to_support_trip_connection.rb
|
|
3018
3004
|
- db/migrate/20260106093359_add_contact_phone_to_cm_vendor_places.rb
|
|
3019
|
-
- db/migrate/20260108101406_add_allow_booking_to_cm_trips.rb
|
|
3020
3005
|
- db/migrate/20260121024645_add_nationality_group_to_cm_guests.rb
|
|
3021
3006
|
- db/migrate/20260126110528_seed_user_initial_usernames.rb
|
|
3022
3007
|
- docker-compose.yml
|
|
@@ -3112,8 +3097,6 @@ files:
|
|
|
3112
3097
|
- lib/spree_cm_commissioner/test_helper/factories/role.rb
|
|
3113
3098
|
- lib/spree_cm_commissioner/test_helper/factories/role_permission_factory.rb
|
|
3114
3099
|
- lib/spree_cm_commissioner/test_helper/factories/route_factory.rb
|
|
3115
|
-
- lib/spree_cm_commissioner/test_helper/factories/route_metric_factory.rb
|
|
3116
|
-
- lib/spree_cm_commissioner/test_helper/factories/route_photo_factory.rb
|
|
3117
3100
|
- lib/spree_cm_commissioner/test_helper/factories/saved_guest_factory.rb
|
|
3118
3101
|
- lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb
|
|
3119
3102
|
- lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb
|
|
@@ -3130,6 +3113,7 @@ files:
|
|
|
3130
3113
|
- lib/spree_cm_commissioner/test_helper/factories/telegram_bot_factory.rb
|
|
3131
3114
|
- lib/spree_cm_commissioner/test_helper/factories/tenant_factory.rb
|
|
3132
3115
|
- lib/spree_cm_commissioner/test_helper/factories/transactional_email_factory.rb
|
|
3116
|
+
- lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb
|
|
3133
3117
|
- lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb
|
|
3134
3118
|
- lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb
|
|
3135
3119
|
- lib/spree_cm_commissioner/test_helper/factories/user_deletion_reasons_factory.rb
|
|
@@ -3147,11 +3131,7 @@ files:
|
|
|
3147
3131
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_factory.rb
|
|
3148
3132
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_rule_factory.rb
|
|
3149
3133
|
- lib/spree_cm_commissioner/transit/leg.rb
|
|
3150
|
-
- lib/spree_cm_commissioner/transit/route_stop.rb
|
|
3151
|
-
- lib/spree_cm_commissioner/transit/route_stop_collection.rb
|
|
3152
3134
|
- lib/spree_cm_commissioner/transit/seat_selection.rb
|
|
3153
|
-
- lib/spree_cm_commissioner/transit/trip_form.rb
|
|
3154
|
-
- lib/spree_cm_commissioner/transit/trip_stop_form.rb
|
|
3155
3135
|
- lib/spree_cm_commissioner/trip_query_result.rb
|
|
3156
3136
|
- lib/spree_cm_commissioner/trip_result.rb
|
|
3157
3137
|
- lib/spree_cm_commissioner/user_session_jwt_token.rb
|
|
@@ -3200,9 +3180,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
3200
3180
|
version: '2.7'
|
|
3201
3181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
3202
3182
|
requirements:
|
|
3203
|
-
- - "
|
|
3183
|
+
- - ">="
|
|
3204
3184
|
- !ruby/object:Gem::Version
|
|
3205
|
-
version:
|
|
3185
|
+
version: '0'
|
|
3206
3186
|
requirements:
|
|
3207
3187
|
- none
|
|
3208
3188
|
rubygems_version: 3.4.1
|
|
@@ -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,13 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module V2
|
|
3
|
-
module Storefront
|
|
4
|
-
class RouteMetricSerializer < BaseSerializer
|
|
5
|
-
set_type :route
|
|
6
|
-
attributes :route_name
|
|
7
|
-
|
|
8
|
-
has_one :origin_place, serializer: ::Spree::V2::Storefront::PlaceSerializer
|
|
9
|
-
has_one :destination_place, serializer: ::Spree::V2::Storefront::PlaceSerializer
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
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
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteMetrics
|
|
3
|
-
class DecreaseTripCount
|
|
4
|
-
prepend ::Spree::ServiceModule::Base
|
|
5
|
-
|
|
6
|
-
def call(trip:)
|
|
7
|
-
return failure(nil, 'Trip not found') unless trip
|
|
8
|
-
|
|
9
|
-
route_metric = find_or_create_route_metric(trip)
|
|
10
|
-
|
|
11
|
-
route_metric.with_lock do
|
|
12
|
-
route_metric.update!(trip_count: [route_metric.trip_count - 1, 0].max)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
success(trip: trip)
|
|
16
|
-
rescue StandardError => e
|
|
17
|
-
failure(nil, e.message)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def find_or_create_route_metric(trip)
|
|
23
|
-
SpreeCmCommissioner::RouteMetric.find_or_create_by!(
|
|
24
|
-
origin_place_id: trip.origin_place_id,
|
|
25
|
-
destination_place_id: trip.destination_place_id,
|
|
26
|
-
route_type: trip.route_type
|
|
27
|
-
)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|