spree_cm_commissioner 2.5.1.pre.pre1 → 2.5.1.pre.pre2
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/admin/guests_controller.rb +5 -5
- data/app/controllers/spree/api/chatrace/check_ins_controller.rb +6 -4
- data/app/controllers/spree/api/chatrace/guests_controller.rb +5 -18
- data/app/controllers/spree/api/v2/operator/check_in_bulks_controller.rb +6 -5
- data/app/controllers/spree/api/v2/operator/check_in_sessions_controller.rb +32 -0
- data/app/controllers/spree/api/v2/operator/check_ins_controller.rb +5 -5
- data/app/controllers/spree/api/v2/operator/event_qrs_controller.rb +2 -0
- data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +1 -1
- data/app/controllers/spree/api/v2/storefront/self_check_in_controller.rb +7 -7
- data/app/controllers/spree/api/v2/storefront/transit/draft_orders_controller.rb +4 -4
- data/app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb +60 -0
- data/app/controllers/spree/api/v2/tenant/routes_controller.rb +50 -0
- data/app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb +46 -0
- data/app/controllers/spree/events/guests_controller.rb +9 -10
- 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/route_metrics/find_popular.rb +44 -0
- data/app/finders/spree_cm_commissioner/routes/find.rb +94 -0
- data/app/finders/spree_cm_commissioner/routes/find_popular.rb +20 -35
- data/app/interactors/spree_cm_commissioner/event_qr_generator.rb +2 -1
- data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +11 -4
- data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +10 -1
- data/app/interactors/spree_cm_commissioner/trip_clone_creator.rb +4 -3
- data/app/interactors/spree_cm_commissioner/trip_stops_creator.rb +2 -2
- data/app/jobs/spree_cm_commissioner/guests/preload_check_in_session_ids_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/route_metrics/decrease_trip_count_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_fulfilled_order_count_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_order_count_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/route_metrics/increase_trip_count_job.rb +10 -0
- data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +2 -2
- data/app/models/concerns/spree_cm_commissioner/route_order_countable.rb +2 -2
- data/app/models/spree_cm_commissioner/check_in.rb +34 -7
- data/app/models/spree_cm_commissioner/check_in_session.rb +8 -3
- data/app/models/spree_cm_commissioner/guest.rb +60 -28
- data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +2 -2
- data/app/models/spree_cm_commissioner/place.rb +5 -8
- data/app/models/spree_cm_commissioner/pricing_actions/create_guest_adjustments.rb +52 -0
- data/app/models/spree_cm_commissioner/pricing_actions/create_line_item_adjustments.rb +6 -0
- data/app/models/spree_cm_commissioner/pricing_rule.rb +4 -0
- data/app/models/spree_cm_commissioner/pricing_rules/age_group.rb +45 -0
- data/app/models/spree_cm_commissioner/pricing_rules/nationality.rb +21 -2
- data/app/models/spree_cm_commissioner/pricing_rules/nationality_group.rb +41 -0
- data/app/models/spree_cm_commissioner/product_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/route.rb +46 -5
- data/app/models/spree_cm_commissioner/route_metric.rb +21 -0
- data/app/models/spree_cm_commissioner/route_photo.rb +12 -0
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/trip.rb +8 -33
- data/app/models/spree_cm_commissioner/trip_stop.rb +16 -2
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +3 -1
- data/app/queries/spree_cm_commissioner/trip_query.rb +2 -2
- data/app/serializers/spree/v2/tenant/transit_cart_serializer.rb +11 -0
- data/app/serializers/spree_cm_commissioner/v2/operator/check_in_serializer.rb +1 -2
- data/app/serializers/spree_cm_commissioner/v2/operator/check_in_session_serializer.rb +9 -0
- data/app/serializers/spree_cm_commissioner/v2/operator/guest_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +2 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +3 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/transit_line_item_serializer.rb +17 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +1 -1
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +65 -0
- data/app/services/spree_cm_commissioner/check_ins/destroy_bulk.rb +54 -0
- data/app/services/spree_cm_commissioner/guests/preload_check_in_session_ids.rb +22 -0
- data/app/services/spree_cm_commissioner/pricing_models/create_with_rule_groups.rb +56 -0
- data/app/services/spree_cm_commissioner/pricing_models/update_with_rule_groups.rb +69 -0
- data/app/services/spree_cm_commissioner/pricing_rules/build_params.rb +16 -7
- data/app/services/spree_cm_commissioner/route_metrics/decrease_trip_count.rb +31 -0
- data/app/services/spree_cm_commissioner/{routes/increment_fulfilled_order_count.rb → route_metrics/increase_fulfilled_order_count.rb} +3 -3
- data/app/services/spree_cm_commissioner/{routes/increment_order_count.rb → route_metrics/increase_order_count.rb} +3 -3
- data/app/services/spree_cm_commissioner/route_metrics/increase_trip_count.rb +31 -0
- data/app/services/spree_cm_commissioner/{routes/base_update_order_metrics.rb → route_metrics/update_route_metrics.rb} +11 -16
- data/app/services/spree_cm_commissioner/routes/create.rb +51 -0
- data/app/services/spree_cm_commissioner/routes/update.rb +25 -0
- data/app/{interactors/spree_cm_commissioner/transit/draft_order_creator.rb → services/spree_cm_commissioner/transit_order/create.rb} +13 -16
- data/app/services/spree_cm_commissioner/trips/create_single_leg.rb +123 -0
- data/app/services/spree_cm_commissioner/trips/service_calendars/create_or_update.rb +54 -0
- data/app/services/spree_cm_commissioner/trips/update_single_leg.rb +88 -0
- data/app/services/spree_cm_commissioner/trips/variants/create.rb +103 -0
- data/app/views/spree/transit/trip_stops/index.html.erb +4 -2
- data/app/views/spree_cm_commissioner/guest_mailer/send_ticket_to_guest.html.erb +0 -1
- data/config/initializers/spree_permitted_attributes.rb +11 -0
- data/config/locales/en.yml +2 -0
- data/config/locales/km.yml +2 -0
- data/config/routes.rb +8 -0
- data/db/migrate/20251224033103_migrate_cm_routes_to_cm_route_metrics.rb +17 -0
- data/db/migrate/20251224033910_migrate_cm_vendor_routes_to_cm_routes.rb +30 -0
- data/db/migrate/20251225100000_add_age_group_to_cm_guests.rb +6 -0
- data/db/migrate/20260105024742_add_type_to_cm_pricing_actions.rb +11 -0
- data/db/migrate/20260105072450_migrate_cm_trip_stops_to_support_trip_connection.rb +12 -0
- data/db/migrate/20260108101406_add_allow_booking_to_cm_trips.rb +5 -0
- data/db/migrate/20260121024645_add_nationality_group_to_cm_guests.rb +5 -0
- data/docs/pricing_model/age_group.md +40 -0
- data/docs/pricing_model/nationality_group.md +35 -0
- data/lib/spree_cm_commissioner/test_helper/factories/check_in_factory.rb +3 -1
- data/lib/spree_cm_commissioner/test_helper/factories/check_in_session_factory.rb +26 -0
- data/lib/spree_cm_commissioner/test_helper/factories/guest_factory.rb +4 -0
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb +4 -0
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb +45 -1
- data/lib/spree_cm_commissioner/test_helper/factories/route_factory.rb +7 -6
- data/lib/spree_cm_commissioner/test_helper/factories/route_metric_factory.rb +12 -0
- data/lib/spree_cm_commissioner/test_helper/factories/route_photo_factory.rb +5 -0
- data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +4 -1
- data/lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb +3 -1
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +2 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb +22 -0
- data/lib/spree_cm_commissioner/transit/route_stop.rb +61 -0
- data/lib/spree_cm_commissioner/transit/route_stop_collection.rb +175 -0
- data/lib/spree_cm_commissioner/transit/trip_form.rb +81 -0
- data/lib/spree_cm_commissioner/transit/trip_stop_form.rb +61 -0
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +4 -0
- metadata +54 -20
- data/app/interactors/spree_cm_commissioner/check_in_bulk_creator.rb +0 -71
- data/app/interactors/spree_cm_commissioner/check_in_destroyer.rb +0 -43
- data/app/jobs/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/transit/route_order_count_incrementer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_job.rb +0 -13
- data/app/jobs/spree_cm_commissioner/transit/route_trip_count_decrementer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb +0 -48
- data/app/models/spree_cm_commissioner/trip_connection.rb +0 -36
- data/app/models/spree_cm_commissioner/vendor_route.rb +0 -9
- data/app/services/spree_cm_commissioner/routes/decrement_previous_trip_count.rb +0 -30
- data/app/services/spree_cm_commissioner/routes/decrement_trip_count.rb +0 -33
- data/app/services/spree_cm_commissioner/routes/increment_trip_count.rb +0 -33
- data/lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb +0 -6
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.pre2
|
|
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-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -905,6 +905,7 @@ files:
|
|
|
905
905
|
- app/controllers/spree/api/chatrace/orders_controller.rb
|
|
906
906
|
- app/controllers/spree/api/json_ld/vendors_controller.rb
|
|
907
907
|
- app/controllers/spree/api/v2/operator/check_in_bulks_controller.rb
|
|
908
|
+
- app/controllers/spree/api/v2/operator/check_in_sessions_controller.rb
|
|
908
909
|
- app/controllers/spree/api/v2/operator/check_ins_controller.rb
|
|
909
910
|
- app/controllers/spree/api/v2/operator/dashboard_crew_events_controller.rb
|
|
910
911
|
- app/controllers/spree/api/v2/operator/event_charts_controller.rb
|
|
@@ -1031,13 +1032,16 @@ files:
|
|
|
1031
1032
|
- app/controllers/spree/api/v2/tenant/order_histories_controller.rb
|
|
1032
1033
|
- app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
|
|
1033
1034
|
- app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb
|
|
1035
|
+
- app/controllers/spree/api/v2/tenant/popular_route_places_controller.rb
|
|
1034
1036
|
- app/controllers/spree/api/v2/tenant/product_dynamic_fields_controller.rb
|
|
1035
1037
|
- app/controllers/spree/api/v2/tenant/products_controller.rb
|
|
1036
1038
|
- app/controllers/spree/api/v2/tenant/profile_images_controller.rb
|
|
1037
1039
|
- app/controllers/spree/api/v2/tenant/reset_passwords_controller.rb
|
|
1040
|
+
- app/controllers/spree/api/v2/tenant/routes_controller.rb
|
|
1038
1041
|
- app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
|
|
1039
1042
|
- app/controllers/spree/api/v2/tenant/taxons_controller.rb
|
|
1040
1043
|
- app/controllers/spree/api/v2/tenant/tickets_controller.rb
|
|
1044
|
+
- app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb
|
|
1041
1045
|
- app/controllers/spree/api/v2/tenant/trip_places_controller.rb
|
|
1042
1046
|
- app/controllers/spree/api/v2/tenant/trip_search_controller.rb
|
|
1043
1047
|
- app/controllers/spree/api/v2/tenant/trips_controller.rb
|
|
@@ -1145,6 +1149,8 @@ files:
|
|
|
1145
1149
|
- app/finders/spree_cm_commissioner/payment_methods/group_by_bank.rb
|
|
1146
1150
|
- app/finders/spree_cm_commissioner/places/find_with_route.rb
|
|
1147
1151
|
- 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
|
|
1148
1154
|
- app/finders/spree_cm_commissioner/routes/find_popular.rb
|
|
1149
1155
|
- app/helpers/spree/admin/base_helper_decorator.rb
|
|
1150
1156
|
- app/helpers/spree/admin/google_wallets_helper.rb
|
|
@@ -1180,8 +1186,6 @@ files:
|
|
|
1180
1186
|
- app/interactors/spree_cm_commissioner/bib_number_swapper.rb
|
|
1181
1187
|
- app/interactors/spree_cm_commissioner/billing_address_creator.rb
|
|
1182
1188
|
- app/interactors/spree_cm_commissioner/chatrace_order_creator.rb
|
|
1183
|
-
- app/interactors/spree_cm_commissioner/check_in_bulk_creator.rb
|
|
1184
|
-
- app/interactors/spree_cm_commissioner/check_in_destroyer.rb
|
|
1185
1189
|
- app/interactors/spree_cm_commissioner/confirm_pin_code_checker.rb
|
|
1186
1190
|
- app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb
|
|
1187
1191
|
- app/interactors/spree_cm_commissioner/create_event.rb
|
|
@@ -1273,7 +1277,6 @@ files:
|
|
|
1273
1277
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_authorizer.rb
|
|
1274
1278
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_checker.rb
|
|
1275
1279
|
- app/interactors/spree_cm_commissioner/transactional_email_sender.rb
|
|
1276
|
-
- app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb
|
|
1277
1280
|
- app/interactors/spree_cm_commissioner/trip_clone_creator.rb
|
|
1278
1281
|
- app/interactors/spree_cm_commissioner/trip_stops_creator.rb
|
|
1279
1282
|
- app/interactors/spree_cm_commissioner/unique_device_token_cron_executor.rb
|
|
@@ -1327,6 +1330,7 @@ files:
|
|
|
1327
1330
|
- app/jobs/spree_cm_commissioner/event_line_items_date_syncer_job.rb
|
|
1328
1331
|
- app/jobs/spree_cm_commissioner/export_csv_job.rb
|
|
1329
1332
|
- app/jobs/spree_cm_commissioner/firebase_email_fetcher_job.rb
|
|
1333
|
+
- app/jobs/spree_cm_commissioner/guests/preload_check_in_session_ids_job.rb
|
|
1330
1334
|
- app/jobs/spree_cm_commissioner/import_order_job.rb
|
|
1331
1335
|
- app/jobs/spree_cm_commissioner/integrations/base_job.rb
|
|
1332
1336
|
- app/jobs/spree_cm_commissioner/integrations/polling_job.rb
|
|
@@ -1341,6 +1345,10 @@ files:
|
|
|
1341
1345
|
- app/jobs/spree_cm_commissioner/product_event_id_to_children_syncer_job.rb
|
|
1342
1346
|
- app/jobs/spree_cm_commissioner/queue_order_webhooks_requests_job.rb
|
|
1343
1347
|
- 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
|
|
1344
1352
|
- app/jobs/spree_cm_commissioner/seats/bulk_release_on_hold_blocks_job.rb
|
|
1345
1353
|
- app/jobs/spree_cm_commissioner/seats/release_expired_blocks_job.rb
|
|
1346
1354
|
- app/jobs/spree_cm_commissioner/sms_job.rb
|
|
@@ -1354,11 +1362,6 @@ files:
|
|
|
1354
1362
|
- app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb
|
|
1355
1363
|
- app/jobs/spree_cm_commissioner/telegram_notification_sender_job.rb
|
|
1356
1364
|
- app/jobs/spree_cm_commissioner/telegram_start_message_sender_job.rb
|
|
1357
|
-
- app/jobs/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_job.rb
|
|
1358
|
-
- app/jobs/spree_cm_commissioner/transit/route_order_count_incrementer_job.rb
|
|
1359
|
-
- app/jobs/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_job.rb
|
|
1360
|
-
- app/jobs/spree_cm_commissioner/transit/route_trip_count_decrementer_job.rb
|
|
1361
|
-
- app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb
|
|
1362
1365
|
- app/jobs/spree_cm_commissioner/unique_device_token_cron_job.rb
|
|
1363
1366
|
- app/jobs/spree_cm_commissioner/variants_public_metadata_updater_job.rb
|
|
1364
1367
|
- app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb
|
|
@@ -1399,7 +1402,6 @@ files:
|
|
|
1399
1402
|
- app/models/concerns/spree_cm_commissioner/product_delegation.rb
|
|
1400
1403
|
- app/models/concerns/spree_cm_commissioner/product_type.rb
|
|
1401
1404
|
- app/models/concerns/spree_cm_commissioner/route_order_countable.rb
|
|
1402
|
-
- app/models/concerns/spree_cm_commissioner/route_trip_count_callbacks.rb
|
|
1403
1405
|
- app/models/concerns/spree_cm_commissioner/route_type.rb
|
|
1404
1406
|
- app/models/concerns/spree_cm_commissioner/service_calendar_type.rb
|
|
1405
1407
|
- app/models/concerns/spree_cm_commissioner/service_recommendations.rb
|
|
@@ -1520,13 +1522,17 @@ files:
|
|
|
1520
1522
|
- app/models/spree_cm_commissioner/place.rb
|
|
1521
1523
|
- app/models/spree_cm_commissioner/price_decorator.rb
|
|
1522
1524
|
- app/models/spree_cm_commissioner/pricing_action.rb
|
|
1525
|
+
- app/models/spree_cm_commissioner/pricing_actions/create_guest_adjustments.rb
|
|
1526
|
+
- app/models/spree_cm_commissioner/pricing_actions/create_line_item_adjustments.rb
|
|
1523
1527
|
- app/models/spree_cm_commissioner/pricing_model.rb
|
|
1524
1528
|
- app/models/spree_cm_commissioner/pricing_model_variant.rb
|
|
1525
1529
|
- app/models/spree_cm_commissioner/pricing_rule.rb
|
|
1526
1530
|
- app/models/spree_cm_commissioner/pricing_rule_group.rb
|
|
1531
|
+
- app/models/spree_cm_commissioner/pricing_rules/age_group.rb
|
|
1527
1532
|
- app/models/spree_cm_commissioner/pricing_rules/extra_drop_off_distance.rb
|
|
1528
1533
|
- app/models/spree_cm_commissioner/pricing_rules/extra_pick_up_distance.rb
|
|
1529
1534
|
- app/models/spree_cm_commissioner/pricing_rules/nationality.rb
|
|
1535
|
+
- app/models/spree_cm_commissioner/pricing_rules/nationality_group.rb
|
|
1530
1536
|
- app/models/spree_cm_commissioner/product_completion_step.rb
|
|
1531
1537
|
- app/models/spree_cm_commissioner/product_completion_step_banner.rb
|
|
1532
1538
|
- app/models/spree_cm_commissioner/product_completion_steps/chatrace_telegram.rb
|
|
@@ -1558,6 +1564,8 @@ files:
|
|
|
1558
1564
|
- app/models/spree_cm_commissioner/role_decorator.rb
|
|
1559
1565
|
- app/models/spree_cm_commissioner/role_permission.rb
|
|
1560
1566
|
- 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
|
|
1561
1569
|
- app/models/spree_cm_commissioner/s3_presigned_url.rb
|
|
1562
1570
|
- app/models/spree_cm_commissioner/s3_presigned_url_builder.rb
|
|
1563
1571
|
- app/models/spree_cm_commissioner/saved_guest.rb
|
|
@@ -1596,7 +1604,6 @@ files:
|
|
|
1596
1604
|
- app/models/spree_cm_commissioner/tenant.rb
|
|
1597
1605
|
- app/models/spree_cm_commissioner/transactional_email.rb
|
|
1598
1606
|
- app/models/spree_cm_commissioner/trip.rb
|
|
1599
|
-
- app/models/spree_cm_commissioner/trip_connection.rb
|
|
1600
1607
|
- app/models/spree_cm_commissioner/trip_stop.rb
|
|
1601
1608
|
- app/models/spree_cm_commissioner/user_decorator.rb
|
|
1602
1609
|
- app/models/spree_cm_commissioner/user_deletion_survey.rb
|
|
@@ -1622,7 +1629,6 @@ files:
|
|
|
1622
1629
|
- app/models/spree_cm_commissioner/vendor_photo.rb
|
|
1623
1630
|
- app/models/spree_cm_commissioner/vendor_place.rb
|
|
1624
1631
|
- app/models/spree_cm_commissioner/vendor_promotion_rule.rb
|
|
1625
|
-
- app/models/spree_cm_commissioner/vendor_route.rb
|
|
1626
1632
|
- app/models/spree_cm_commissioner/vendor_web_promotion_banner.rb
|
|
1627
1633
|
- app/models/spree_cm_commissioner/video.rb
|
|
1628
1634
|
- app/models/spree_cm_commissioner/video_on_demand.rb
|
|
@@ -1888,6 +1894,7 @@ files:
|
|
|
1888
1894
|
- app/serializers/spree/v2/tenant/taxon_serializer.rb
|
|
1889
1895
|
- app/serializers/spree/v2/tenant/taxonomy_serializer.rb
|
|
1890
1896
|
- app/serializers/spree/v2/tenant/ticket_serializer.rb
|
|
1897
|
+
- app/serializers/spree/v2/tenant/transit_cart_serializer.rb
|
|
1891
1898
|
- app/serializers/spree/v2/tenant/trip_place_serializer.rb
|
|
1892
1899
|
- app/serializers/spree/v2/tenant/trip_query_result_serializer.rb
|
|
1893
1900
|
- app/serializers/spree/v2/tenant/trip_serializer.rb
|
|
@@ -1909,6 +1916,7 @@ files:
|
|
|
1909
1916
|
- app/serializers/spree_cm_commissioner/json_ld/vendor_serializer.rb
|
|
1910
1917
|
- app/serializers/spree_cm_commissioner/v2/operator/base_serializer.rb
|
|
1911
1918
|
- app/serializers/spree_cm_commissioner/v2/operator/check_in_serializer.rb
|
|
1919
|
+
- app/serializers/spree_cm_commissioner/v2/operator/check_in_session_serializer.rb
|
|
1912
1920
|
- app/serializers/spree_cm_commissioner/v2/operator/classification_serializer.rb
|
|
1913
1921
|
- app/serializers/spree_cm_commissioner/v2/operator/dashboard_crew_event_serializer.rb
|
|
1914
1922
|
- app/serializers/spree_cm_commissioner/v2/operator/event_qr_serializer.rb
|
|
@@ -1963,6 +1971,7 @@ files:
|
|
|
1963
1971
|
- app/serializers/spree_cm_commissioner/v2/storefront/self_check_in_serializer.rb
|
|
1964
1972
|
- app/serializers/spree_cm_commissioner/v2/storefront/stock_item_serializer.rb
|
|
1965
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
|
|
1966
1975
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_place_serializer.rb
|
|
1967
1976
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb
|
|
1968
1977
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb
|
|
@@ -1987,6 +1996,8 @@ files:
|
|
|
1987
1996
|
- app/services/spree_cm_commissioner/cart/destroy_decorator.rb
|
|
1988
1997
|
- app/services/spree_cm_commissioner/cart/recalculate_decorator.rb
|
|
1989
1998
|
- app/services/spree_cm_commissioner/cart/remove_guest.rb
|
|
1999
|
+
- app/services/spree_cm_commissioner/check_ins/create_bulk.rb
|
|
2000
|
+
- app/services/spree_cm_commissioner/check_ins/destroy_bulk.rb
|
|
1990
2001
|
- app/services/spree_cm_commissioner/checkout/advance_decorator.rb
|
|
1991
2002
|
- app/services/spree_cm_commissioner/checkout/update_decorator.rb
|
|
1992
2003
|
- app/services/spree_cm_commissioner/completion_steps/mark_line_item_as_completed.rb
|
|
@@ -2010,6 +2021,7 @@ files:
|
|
|
2010
2021
|
- app/services/spree_cm_commissioner/google_wallets/hotel_class_updater.rb
|
|
2011
2022
|
- app/services/spree_cm_commissioner/google_wallets/hotel_object_builder.rb
|
|
2012
2023
|
- app/services/spree_cm_commissioner/guests/claim_invite_guest_service.rb
|
|
2024
|
+
- app/services/spree_cm_commissioner/guests/preload_check_in_session_ids.rb
|
|
2013
2025
|
- app/services/spree_cm_commissioner/homepage_data_loader.rb
|
|
2014
2026
|
- app/services/spree_cm_commissioner/imports/base_import_order_service.rb
|
|
2015
2027
|
- app/services/spree_cm_commissioner/imports/create_order_service.rb
|
|
@@ -2046,18 +2058,21 @@ files:
|
|
|
2046
2058
|
- app/services/spree_cm_commissioner/payment_method_type_mapper.rb
|
|
2047
2059
|
- app/services/spree_cm_commissioner/penalty_calculator.rb
|
|
2048
2060
|
- app/services/spree_cm_commissioner/pricing_models/apply.rb
|
|
2061
|
+
- app/services/spree_cm_commissioner/pricing_models/create_with_rule_groups.rb
|
|
2062
|
+
- app/services/spree_cm_commissioner/pricing_models/update_with_rule_groups.rb
|
|
2049
2063
|
- app/services/spree_cm_commissioner/pricing_rules/build_params.rb
|
|
2050
2064
|
- app/services/spree_cm_commissioner/pricing_rules/build_template.rb
|
|
2051
2065
|
- app/services/spree_cm_commissioner/pricing_rules/create.rb
|
|
2052
2066
|
- app/services/spree_cm_commissioner/pricing_rules/update.rb
|
|
2053
2067
|
- app/services/spree_cm_commissioner/role_permissions_constructor.rb
|
|
2054
2068
|
- app/services/spree_cm_commissioner/role_permissions_loader.rb
|
|
2055
|
-
- app/services/spree_cm_commissioner/
|
|
2056
|
-
- app/services/spree_cm_commissioner/
|
|
2057
|
-
- app/services/spree_cm_commissioner/
|
|
2058
|
-
- app/services/spree_cm_commissioner/
|
|
2059
|
-
- app/services/spree_cm_commissioner/
|
|
2060
|
-
- app/services/spree_cm_commissioner/routes/
|
|
2069
|
+
- app/services/spree_cm_commissioner/route_metrics/decrease_trip_count.rb
|
|
2070
|
+
- app/services/spree_cm_commissioner/route_metrics/increase_fulfilled_order_count.rb
|
|
2071
|
+
- app/services/spree_cm_commissioner/route_metrics/increase_order_count.rb
|
|
2072
|
+
- app/services/spree_cm_commissioner/route_metrics/increase_trip_count.rb
|
|
2073
|
+
- app/services/spree_cm_commissioner/route_metrics/update_route_metrics.rb
|
|
2074
|
+
- app/services/spree_cm_commissioner/routes/create.rb
|
|
2075
|
+
- app/services/spree_cm_commissioner/routes/update.rb
|
|
2061
2076
|
- app/services/spree_cm_commissioner/rsa_service.rb
|
|
2062
2077
|
- app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
|
|
2063
2078
|
- app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
|
|
@@ -2067,7 +2082,12 @@ files:
|
|
|
2067
2082
|
- app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb
|
|
2068
2083
|
- app/services/spree_cm_commissioner/transit/export_order.rb
|
|
2069
2084
|
- 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
|
|
2070
2087
|
- 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
|
|
2071
2091
|
- app/services/spree_cm_commissioner/update_guest_service.rb
|
|
2072
2092
|
- app/services/spree_cm_commissioner/user_authenticator.rb
|
|
2073
2093
|
- app/services/spree_cm_commissioner/user_roles_assigner.rb
|
|
@@ -2979,11 +2999,20 @@ files:
|
|
|
2979
2999
|
- db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb
|
|
2980
3000
|
- db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb
|
|
2981
3001
|
- 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
|
+
- db/migrate/20251225100000_add_age_group_to_cm_guests.rb
|
|
3005
|
+
- db/migrate/20260105024742_add_type_to_cm_pricing_actions.rb
|
|
2982
3006
|
- 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
|
|
2983
3008
|
- db/migrate/20260106093359_add_contact_phone_to_cm_vendor_places.rb
|
|
3009
|
+
- db/migrate/20260108101406_add_allow_booking_to_cm_trips.rb
|
|
3010
|
+
- db/migrate/20260121024645_add_nationality_group_to_cm_guests.rb
|
|
2984
3011
|
- docker-compose.yml
|
|
2985
3012
|
- docs/api/scoped-access-token-endpoints.md
|
|
2986
3013
|
- docs/option_types/attr_types.md
|
|
3014
|
+
- docs/pricing_model/age_group.md
|
|
3015
|
+
- docs/pricing_model/nationality_group.md
|
|
2987
3016
|
- docs/private_key.pem
|
|
2988
3017
|
- docs/public_key.pem
|
|
2989
3018
|
- docs/spree_core/add_new_promotion.md
|
|
@@ -3072,6 +3101,8 @@ files:
|
|
|
3072
3101
|
- lib/spree_cm_commissioner/test_helper/factories/role.rb
|
|
3073
3102
|
- lib/spree_cm_commissioner/test_helper/factories/role_permission_factory.rb
|
|
3074
3103
|
- 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
|
|
3075
3106
|
- lib/spree_cm_commissioner/test_helper/factories/saved_guest_factory.rb
|
|
3076
3107
|
- lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb
|
|
3077
3108
|
- lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb
|
|
@@ -3088,7 +3119,6 @@ files:
|
|
|
3088
3119
|
- lib/spree_cm_commissioner/test_helper/factories/telegram_bot_factory.rb
|
|
3089
3120
|
- lib/spree_cm_commissioner/test_helper/factories/tenant_factory.rb
|
|
3090
3121
|
- lib/spree_cm_commissioner/test_helper/factories/transactional_email_factory.rb
|
|
3091
|
-
- lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb
|
|
3092
3122
|
- lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb
|
|
3093
3123
|
- lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb
|
|
3094
3124
|
- lib/spree_cm_commissioner/test_helper/factories/user_deletion_reasons_factory.rb
|
|
@@ -3106,7 +3136,11 @@ files:
|
|
|
3106
3136
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_factory.rb
|
|
3107
3137
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_rule_factory.rb
|
|
3108
3138
|
- 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
|
|
3109
3141
|
- 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
|
|
3110
3144
|
- lib/spree_cm_commissioner/trip_query_result.rb
|
|
3111
3145
|
- lib/spree_cm_commissioner/trip_result.rb
|
|
3112
3146
|
- lib/spree_cm_commissioner/user_session_jwt_token.rb
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class CheckInBulkCreator < BaseInteractor
|
|
3
|
-
delegate :check_ins_attributes, :check_in_by, to: :context
|
|
4
|
-
|
|
5
|
-
def call
|
|
6
|
-
context.fail!(message: :guest_ids_must_not_blank) if check_ins_attributes.blank?
|
|
7
|
-
|
|
8
|
-
ActiveRecord::Base.transaction do
|
|
9
|
-
context.check_ins = check_ins_attributes.map do |check_in_attributes|
|
|
10
|
-
create_check_in_for(check_in_attributes)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def confirmed_at
|
|
18
|
-
context.confirmed_at ||= DateTime.current
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def guest_ids
|
|
22
|
-
context.guest_ids ||= check_ins_attributes.pluck(:guest_id)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def guests
|
|
26
|
-
@guests ||= SpreeCmCommissioner::Guest.where(id: guest_ids).index_by(&:id)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def create_check_in_for(check_in_attributes)
|
|
30
|
-
context.fail!(message: :guest_id_must_not_blank) if check_in_attributes[:guest_id].blank?
|
|
31
|
-
|
|
32
|
-
guest = guests[check_in_attributes[:guest_id]]
|
|
33
|
-
|
|
34
|
-
return context.fail!(message: :guest_not_found) if guest.blank?
|
|
35
|
-
return context.fail!(message: :already_check_in) if guest.check_in.present?
|
|
36
|
-
|
|
37
|
-
update_guest_data(guest, check_in_attributes) if guest_data_present?(check_in_attributes)
|
|
38
|
-
|
|
39
|
-
check_in = SpreeCmCommissioner::CheckIn.new(
|
|
40
|
-
guest: guest,
|
|
41
|
-
check_in_by: check_in_by,
|
|
42
|
-
checkinable: guest.event,
|
|
43
|
-
confirmed_at: check_in_attributes[:confirmed_at] || confirmed_at
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
if check_in.save
|
|
47
|
-
guest.state_changes.create!(
|
|
48
|
-
user: check_in_by,
|
|
49
|
-
previous_state: 'unchecked_in',
|
|
50
|
-
next_state: 'checked_in',
|
|
51
|
-
name: 'guest'
|
|
52
|
-
)
|
|
53
|
-
return check_in
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
context.fail!(message: :invalid, errors: check_in.errors.full_messages)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def guest_data_present?(check_in_attributes)
|
|
60
|
-
check_in_attributes[:guest_attributes].present?
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def update_guest_data(guest, check_in_attributes)
|
|
64
|
-
guest_data = check_in_attributes[:guest_attributes]
|
|
65
|
-
|
|
66
|
-
return if guest.update(guest_data)
|
|
67
|
-
|
|
68
|
-
context.fail!(message: :invalid_guest_data, errors: guest.errors.full_messages)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class CheckInDestroyer < BaseInteractor
|
|
3
|
-
delegate :guest_ids, :destroyed_by, to: :context
|
|
4
|
-
|
|
5
|
-
def call
|
|
6
|
-
context.fail!(message: :guest_ids_must_not_blank) if guest_ids.blank?
|
|
7
|
-
|
|
8
|
-
ActiveRecord::Base.transaction do
|
|
9
|
-
context.check_ins = guest_ids.map do |guest_id|
|
|
10
|
-
destroy_check_in_for(guest_id)
|
|
11
|
-
end.compact
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def guests
|
|
18
|
-
@guests ||= SpreeCmCommissioner::Guest.where(id: guest_ids).index_by(&:id)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def destroy_check_in_for(guest_id)
|
|
22
|
-
context.fail!(message: :guest_id_must_not_blank) if guest_id.blank?
|
|
23
|
-
|
|
24
|
-
guest = guests[guest_id.to_i]
|
|
25
|
-
context.fail!(message: :guest_not_found) if guest.blank?
|
|
26
|
-
|
|
27
|
-
return nil if guest.check_in.blank?
|
|
28
|
-
|
|
29
|
-
check_in = guest.check_in
|
|
30
|
-
if check_in.destroy
|
|
31
|
-
guest.state_changes.create!(
|
|
32
|
-
user: destroyed_by,
|
|
33
|
-
previous_state: 'checked_in',
|
|
34
|
-
next_state: 'unchecked_in',
|
|
35
|
-
name: 'guest'
|
|
36
|
-
)
|
|
37
|
-
check_in
|
|
38
|
-
else
|
|
39
|
-
context.fail!(message: :invalid, errors: check_in.errors.full_messages)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Transit
|
|
3
|
-
class RouteFulfilledOrderCountIncrementerJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
order = Spree::Order.find(options[:order_id])
|
|
6
|
-
SpreeCmCommissioner::Routes::IncrementFulfilledOrderCount.call(order: order)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Transit
|
|
3
|
-
class RouteOrderCountIncrementerJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
order = Spree::Order.find(options[:order_id])
|
|
6
|
-
SpreeCmCommissioner::Routes::IncrementOrderCount.call(order: order)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Perform the previous-route decrement outside the Trip transaction.
|
|
2
|
-
|
|
3
|
-
module SpreeCmCommissioner
|
|
4
|
-
module Transit
|
|
5
|
-
class RoutePreviousTripCountDecrementerJob < ApplicationUniqueJob
|
|
6
|
-
queue_as :default
|
|
7
|
-
|
|
8
|
-
def perform(options = {})
|
|
9
|
-
SpreeCmCommissioner::Routes::DecrementPreviousTripCount.call(previous_route_id: options[:previous_route_id])
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Transit
|
|
3
|
-
class RouteTripCountDecrementerJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
trip = SpreeCmCommissioner::Trip.find(options[:trip_id])
|
|
6
|
-
SpreeCmCommissioner::Routes::DecrementTripCount.call(trip: trip)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Transit
|
|
3
|
-
class RouteTripCountIncrementerJob < ApplicationUniqueJob
|
|
4
|
-
def perform(options = {})
|
|
5
|
-
trip = SpreeCmCommissioner::Trip.find(options[:trip_id])
|
|
6
|
-
SpreeCmCommissioner::Routes::IncrementTripCount.call(trip: trip)
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module RouteTripCountCallbacks
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
included do
|
|
6
|
-
after_create :increase_trip_count
|
|
7
|
-
before_destroy :decrease_trip_count
|
|
8
|
-
|
|
9
|
-
# When route context may change, enqueue an async job after commit that
|
|
10
|
-
# reads the previous values from `previous_changes` to decrement counts
|
|
11
|
-
# on the old route/vendor. This avoids keeping in-memory state and keeps
|
|
12
|
-
# the Trip update fast.
|
|
13
|
-
after_commit :enqueue_decrement_previous_route_trip_counts, on: :update
|
|
14
|
-
|
|
15
|
-
after_commit :increment_new_route_trip_counts, on: :update, if: :changed_route_context?
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
def decrease_trip_count
|
|
21
|
-
SpreeCmCommissioner::Transit::RouteTripCountDecrementerJob.perform_now(trip_id: id)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def increase_trip_count
|
|
25
|
-
SpreeCmCommissioner::Transit::RouteTripCountIncrementerJob.perform_later(trip_id: id)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Read previous_changes to find prior route context and enqueue the job.
|
|
29
|
-
def enqueue_decrement_previous_route_trip_counts
|
|
30
|
-
prev_route_id = previous_changes['route_id']&.first
|
|
31
|
-
prev_origin_id = previous_changes['origin_place_id']&.first
|
|
32
|
-
prev_destination_id = previous_changes['destination_place_id']&.first
|
|
33
|
-
|
|
34
|
-
return unless prev_route_id.present? && prev_origin_id.present? && prev_destination_id.present?
|
|
35
|
-
|
|
36
|
-
SpreeCmCommissioner::Transit::RoutePreviousTripCountDecrementerJob.perform_later(
|
|
37
|
-
previous_route_id: prev_route_id
|
|
38
|
-
)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Safely increment the trip_count for the trip's (new) route after update.
|
|
42
|
-
def increment_new_route_trip_counts
|
|
43
|
-
return if origin_place_id.blank? || destination_place_id.blank? || route_id.blank?
|
|
44
|
-
|
|
45
|
-
SpreeCmCommissioner::Transit::RouteTripCountIncrementerJob.perform_later(trip_id: id)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class TripConnection < Base
|
|
3
|
-
belongs_to :from_trip, class_name: 'SpreeCmCommissioner::Trip'
|
|
4
|
-
belongs_to :to_trip, class_name: 'SpreeCmCommissioner::Trip'
|
|
5
|
-
|
|
6
|
-
validate :both_trip_cannot_be_the_same
|
|
7
|
-
before_validation :calculate_connection_time_minutes
|
|
8
|
-
validates :from_trip_id, uniqueness: { scope: :to_trip_id }
|
|
9
|
-
|
|
10
|
-
private
|
|
11
|
-
|
|
12
|
-
def calculate_connection_time_minutes
|
|
13
|
-
return if from_trip.nil? || to_trip.nil?
|
|
14
|
-
|
|
15
|
-
arrival_seconds = from_trip.arrival_time.seconds_since_midnight
|
|
16
|
-
departure_seconds = to_trip.departure_time.seconds_since_midnight
|
|
17
|
-
|
|
18
|
-
layover_seconds = departure_seconds - arrival_seconds
|
|
19
|
-
layover_seconds += 86_400 if layover_seconds.negative?
|
|
20
|
-
|
|
21
|
-
connection_time_in_minutes = layover_seconds / 60
|
|
22
|
-
|
|
23
|
-
if connection_time_in_minutes.between?(0, 180)
|
|
24
|
-
self.connection_time_minutes = connection_time_in_minutes.to_i
|
|
25
|
-
else
|
|
26
|
-
errors.add(:base, 'Connection time must be less than 3 hours')
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def both_trip_cannot_be_the_same
|
|
31
|
-
return unless from_trip.id == to_trip.id
|
|
32
|
-
|
|
33
|
-
errors.add(:base, 'Both trip cannot be the same')
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class VendorRoute < Base
|
|
3
|
-
belongs_to :vendor, class_name: 'Spree::Vendor', optional: false
|
|
4
|
-
belongs_to :route, class_name: 'SpreeCmCommissioner::Route', optional: false
|
|
5
|
-
|
|
6
|
-
has_many :trips, -> (vr) { where(vendor_id: vr.vendor_id, route_id: vr.route_id) }, class_name: 'SpreeCmCommissioner::Trip'
|
|
7
|
-
validates :vendor_id, uniqueness: { scope: :route_id }
|
|
8
|
-
end
|
|
9
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Routes
|
|
3
|
-
class DecrementPreviousTripCount
|
|
4
|
-
prepend ::Spree::ServiceModule::Base
|
|
5
|
-
|
|
6
|
-
def call(previous_route_id:)
|
|
7
|
-
previous_route = SpreeCmCommissioner::Route.find_by(id: previous_route_id)
|
|
8
|
-
return failure(nil, 'Route not found') unless previous_route
|
|
9
|
-
|
|
10
|
-
if previous_route.vendors.exists?
|
|
11
|
-
|
|
12
|
-
# Build a trip-like object that responds to :route and :vendor so the delegated
|
|
13
|
-
# service can locate vendor routes correctly.
|
|
14
|
-
trip_like = Struct.new(:route, :vendor).new(previous_route, previous_route.vendors.first)
|
|
15
|
-
result = SpreeCmCommissioner::Routes::DecrementTripCount.call(trip: trip_like)
|
|
16
|
-
return result if result.failure?
|
|
17
|
-
else
|
|
18
|
-
previous_route.with_lock do
|
|
19
|
-
new_count = [previous_route.trip_count.to_i - 1, 0].max
|
|
20
|
-
previous_route.update!(trip_count: new_count)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
success(previous_route: previous_route)
|
|
25
|
-
rescue StandardError => e
|
|
26
|
-
failure(nil, e.message)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Routes
|
|
3
|
-
class DecrementTripCount
|
|
4
|
-
prepend ::Spree::ServiceModule::Base
|
|
5
|
-
|
|
6
|
-
def call(trip:)
|
|
7
|
-
return failure(nil, 'Trip not found') unless trip
|
|
8
|
-
|
|
9
|
-
vendor = trip.vendor
|
|
10
|
-
return failure(nil, 'Vendor not found') unless vendor
|
|
11
|
-
|
|
12
|
-
ActiveRecord::Base.transaction do
|
|
13
|
-
route = trip.route
|
|
14
|
-
|
|
15
|
-
route.update!(trip_count: [route.trip_count - 1, 0].max)
|
|
16
|
-
|
|
17
|
-
vendor_route = locate_vendor_route(vendor: vendor, route: route)
|
|
18
|
-
vendor_route&.update!(trip_count: [vendor_route.trip_count - 1, 0].max)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
success(trip: trip)
|
|
22
|
-
rescue StandardError => e
|
|
23
|
-
failure(nil, e.message)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def locate_vendor_route(vendor:, route:)
|
|
29
|
-
vendor.vendor_routes.find_by(route_id: route.id)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module Routes
|
|
3
|
-
class IncrementTripCount
|
|
4
|
-
prepend ::Spree::ServiceModule::Base
|
|
5
|
-
|
|
6
|
-
def call(trip:)
|
|
7
|
-
return failure(nil, 'Trip not found') unless trip
|
|
8
|
-
|
|
9
|
-
vendor = trip.vendor
|
|
10
|
-
return failure(nil, 'Vendor not found') unless vendor
|
|
11
|
-
|
|
12
|
-
ActiveRecord::Base.transaction do
|
|
13
|
-
route = trip.route
|
|
14
|
-
|
|
15
|
-
route.update!(trip_count: route.trip_count + 1)
|
|
16
|
-
|
|
17
|
-
vendor_route = find_or_create_vendor_route(vendor: vendor, route: route)
|
|
18
|
-
vendor_route.update!(trip_count: vendor_route.trip_count + 1)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
success(trip: trip)
|
|
22
|
-
rescue StandardError => e
|
|
23
|
-
failure(nil, e.message)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def find_or_create_vendor_route(vendor:, route:)
|
|
29
|
-
vendor.vendor_routes.find_or_create_by!(route_id: route.id)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|