spree_cm_commissioner 2.5.0.pre.pre2 → 2.5.0.pre.pre4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test_and_build_gem.yml +1 -1
  3. data/.tool-versions +1 -1
  4. data/Gemfile.lock +1 -1
  5. data/app/controllers/spree/admin/integration_mappings_controller.rb +21 -0
  6. data/app/controllers/spree/admin/integration_sessions_controller.rb +21 -0
  7. data/app/controllers/spree/admin/integrations_controller.rb +83 -0
  8. data/app/controllers/spree/api/v2/storefront/event_matches_controller.rb +15 -0
  9. data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +1 -7
  10. data/app/controllers/spree/api/v2/storefront/route_places_controller.rb +9 -9
  11. data/app/errors/spree_cm_commissioner/integrations/external_client_error.rb +10 -0
  12. data/app/errors/spree_cm_commissioner/integrations/sync_error.rb +4 -0
  13. data/app/finders/spree_cm_commissioner/events/find_matches.rb +15 -0
  14. data/app/finders/spree_cm_commissioner/places/find_with_route.rb +10 -10
  15. data/app/finders/spree_cm_commissioner/routes/find_popular.rb +14 -10
  16. data/app/helpers/spree_cm_commissioner/external_integrations_helper.rb +58 -0
  17. data/app/interactors/spree_cm_commissioner/stock/inventory_item_resetter.rb +1 -1
  18. data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +3 -2
  19. data/app/jobs/spree_cm_commissioner/integrations/base_job.rb +39 -0
  20. data/app/jobs/spree_cm_commissioner/integrations/polling_job.rb +53 -0
  21. data/app/jobs/spree_cm_commissioner/integrations/polling_scheduler_job.rb +30 -0
  22. data/app/jobs/spree_cm_commissioner/stock/inventory_items_adjuster_job.rb +6 -3
  23. data/app/jobs/spree_cm_commissioner/telegram_alerts/integration_sync_failure_job.rb +17 -0
  24. data/app/models/concerns/spree_cm_commissioner/integrations/integration_mappable.rb +61 -0
  25. data/app/models/concerns/spree_cm_commissioner/line_item_integration.rb +36 -0
  26. data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +15 -3
  27. data/app/models/concerns/spree_cm_commissioner/order_integration.rb +33 -0
  28. data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +2 -0
  29. data/app/models/concerns/spree_cm_commissioner/store_metadata.rb +14 -2
  30. data/app/models/concerns/spree_cm_commissioner/tenant_preference.rb +0 -3
  31. data/app/models/concerns/spree_cm_commissioner/variant_options_concern.rb +1 -7
  32. data/app/models/spree_cm_commissioner/guest.rb +13 -0
  33. data/app/models/spree_cm_commissioner/integration.rb +29 -0
  34. data/app/models/spree_cm_commissioner/integration_mapping.rb +41 -0
  35. data/app/models/spree_cm_commissioner/integration_sync_session.rb +15 -0
  36. data/app/models/spree_cm_commissioner/integrations/stadium_x_v1.rb +37 -0
  37. data/app/models/spree_cm_commissioner/inventory_item.rb +5 -1
  38. data/app/models/spree_cm_commissioner/line_item_decorator.rb +13 -1
  39. data/app/models/spree_cm_commissioner/option_type_decorator.rb +8 -0
  40. data/app/models/spree_cm_commissioner/option_value_decorator.rb +34 -0
  41. data/app/models/spree_cm_commissioner/order_decorator.rb +1 -0
  42. data/app/models/spree_cm_commissioner/product_decorator.rb +3 -2
  43. data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +2 -2
  44. data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +2 -2
  45. data/app/models/spree_cm_commissioner/taxon_decorator.rb +1 -0
  46. data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +13 -1
  47. data/app/models/spree_cm_commissioner/variant_decorator.rb +7 -4
  48. data/app/models/spree_cm_commissioner/vendor_decorator.rb +4 -0
  49. data/app/overrides/spree/admin/shared/sub_menu/_integrations/external_integrations.html.erb.deface +6 -0
  50. data/app/presenters/spree/variants/{visable_options_presenter.rb → visible_options_presenter.rb} +2 -4
  51. data/app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb +0 -5
  52. data/app/services/spree_cm_commissioner/integrations/base/sync_manager.rb +69 -0
  53. data/app/services/spree_cm_commissioner/integrations/base/sync_result.rb +183 -0
  54. data/app/services/spree_cm_commissioner/integrations/polling.rb +70 -0
  55. data/app/services/spree_cm_commissioner/integrations/polling_scheduler.rb +79 -0
  56. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/external_client/client.rb +152 -0
  57. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/inventory/unstock_inventory.rb +83 -0
  58. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_matches.rb +113 -0
  59. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_zones.rb +215 -0
  60. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/base.rb +20 -0
  61. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/league.rb +19 -0
  62. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/match.rb +95 -0
  63. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/ticket.rb +81 -0
  64. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/ticket_image.rb +19 -0
  65. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/zone.rb +90 -0
  66. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_manager.rb +35 -0
  67. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/full_sync_strategy.rb +38 -0
  68. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/incremental_sync_strategy.rb +44 -0
  69. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/webhook_sync_strategy.rb +16 -0
  70. data/app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb +49 -0
  71. data/app/views/spree/admin/integration_mappings/_integration_mappings.html.erb +107 -0
  72. data/app/views/spree/admin/integration_mappings/index.html.erb +33 -0
  73. data/app/views/spree/admin/integration_sessions/_integration_sync_sessions.html.erb +116 -0
  74. data/app/views/spree/admin/integration_sessions/index.html.erb +42 -0
  75. data/app/views/spree/admin/integrations/_form.html.erb +104 -0
  76. data/app/views/spree/admin/integrations/_stadium_x_v1_fields.html.erb +29 -0
  77. data/app/views/spree/admin/integrations/edit.html.erb +45 -0
  78. data/app/views/spree/admin/integrations/index.html.erb +75 -0
  79. data/app/views/spree/admin/integrations/new.html.erb +25 -0
  80. data/app/views/spree/admin/tenants/_form.html.erb +0 -18
  81. data/app/views/spree/order_mailer/confirm_email.html.erb +1 -1
  82. data/app/views/spree_cm_commissioner/layouts/order_mailer.html.erb +1 -1
  83. data/app/views/spree_cm_commissioner/order_mailer/tenant/_footer.html.erb +6 -13
  84. data/app/views/spree_cm_commissioner/order_mailer/tenant/_support_contact.html.erb +24 -23
  85. data/config/locales/en.yml +8 -0
  86. data/config/locales/km.yml +8 -0
  87. data/config/routes.rb +8 -0
  88. data/db/migrate/20251017094845_create_cm_integrations.rb +22 -0
  89. data/db/migrate/20251017101555_create_cm_integration_sync_sessions.rb +68 -0
  90. data/db/migrate/20251017101605_create_cm_integration_mappings.rb +52 -0
  91. data/lib/cm_app_logger.rb +1 -0
  92. data/lib/spree_cm_commissioner/test_helper/factories/integration_factory.rb +25 -0
  93. data/lib/spree_cm_commissioner/test_helper/factories/integration_mapping_factory.rb +14 -0
  94. data/lib/spree_cm_commissioner/test_helper/factories/integration_sync_session_factory.rb +7 -0
  95. data/lib/spree_cm_commissioner/version.rb +1 -1
  96. data/lib/spree_cm_commissioner.rb +8 -7
  97. metadata +56 -6
  98. data/app/request_schemas/spree_cm_commissioner/popular_route_places_request_schema.rb +0 -12
  99. data/app/views/spree/admin/tenants/form/_footer.html.erb +0 -31
  100. data/app/views/spree/admin/tenants/form/_social.html.erb +0 -31
  101. data/db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb +0 -9
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.0.pre.pre2
4
+ version: 2.5.0.pre.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
@@ -848,6 +848,9 @@ files:
848
848
  - app/controllers/spree/admin/id_cards_controller.rb
849
849
  - app/controllers/spree/admin/import_existing_orders_controller.rb
850
850
  - app/controllers/spree/admin/import_new_orders_controller.rb
851
+ - app/controllers/spree/admin/integration_mappings_controller.rb
852
+ - app/controllers/spree/admin/integration_sessions_controller.rb
853
+ - app/controllers/spree/admin/integrations_controller.rb
851
854
  - app/controllers/spree/admin/inventory_items_controller.rb
852
855
  - app/controllers/spree/admin/kyc_controller.rb
853
856
  - app/controllers/spree/admin/line_items_controller.rb
@@ -943,6 +946,7 @@ files:
943
946
  - app/controllers/spree/api/v2/storefront/customer_notifications_controller.rb
944
947
  - app/controllers/spree/api/v2/storefront/dynamic_field_options_controller.rb
945
948
  - app/controllers/spree/api/v2/storefront/dynamic_fields_controller.rb
949
+ - app/controllers/spree/api/v2/storefront/event_matches_controller.rb
946
950
  - app/controllers/spree/api/v2/storefront/events_controller.rb
947
951
  - app/controllers/spree/api/v2/storefront/google_wallet_object_tokens_controller.rb
948
952
  - app/controllers/spree/api/v2/storefront/guest_card_classes_controller.rb
@@ -1111,6 +1115,8 @@ files:
1111
1115
  - app/controllers/spree_cm_commissioner/well_known_controller.rb
1112
1116
  - app/errors/spree_cm_commissioner/connection_error.rb
1113
1117
  - app/errors/spree_cm_commissioner/exceeding_range_error.rb
1118
+ - app/errors/spree_cm_commissioner/integrations/external_client_error.rb
1119
+ - app/errors/spree_cm_commissioner/integrations/sync_error.rb
1114
1120
  - app/errors/spree_cm_commissioner/payment_creation_error.rb
1115
1121
  - app/errors/spree_cm_commissioner/payment_source_missing_error.rb
1116
1122
  - app/errors/spree_cm_commissioner/schema_validation_error.rb
@@ -1128,6 +1134,7 @@ files:
1128
1134
  - app/factory/spree_cm_commissioner/vendor_telegram_message_factory.rb
1129
1135
  - app/finders/spree_cm_commissioner/accommodations/find.rb
1130
1136
  - app/finders/spree_cm_commissioner/accommodations/find_variant.rb
1137
+ - app/finders/spree_cm_commissioner/events/find_matches.rb
1131
1138
  - app/finders/spree_cm_commissioner/orders/find.rb
1132
1139
  - app/finders/spree_cm_commissioner/orders/find_by_state.rb
1133
1140
  - app/finders/spree_cm_commissioner/payment_methods/group_by_bank.rb
@@ -1149,6 +1156,7 @@ files:
1149
1156
  - app/helpers/spree_cm_commissioner/admin/video_on_demand_helper.rb
1150
1157
  - app/helpers/spree_cm_commissioner/billing/monthly_orders_helper.rb
1151
1158
  - app/helpers/spree_cm_commissioner/billing/qrcodes_helper.rb
1159
+ - app/helpers/spree_cm_commissioner/external_integrations_helper.rb
1152
1160
  - app/helpers/spree_cm_commissioner/pin_code_sender_helper.rb
1153
1161
  - app/helpers/spree_cm_commissioner/telegram/base_helper.rb
1154
1162
  - app/helpers/spree_cm_commissioner/transit/order_query_helper.rb
@@ -1316,6 +1324,9 @@ files:
1316
1324
  - app/jobs/spree_cm_commissioner/export_csv_job.rb
1317
1325
  - app/jobs/spree_cm_commissioner/firebase_email_fetcher_job.rb
1318
1326
  - app/jobs/spree_cm_commissioner/import_order_job.rb
1327
+ - app/jobs/spree_cm_commissioner/integrations/base_job.rb
1328
+ - app/jobs/spree_cm_commissioner/integrations/polling_job.rb
1329
+ - app/jobs/spree_cm_commissioner/integrations/polling_scheduler_job.rb
1319
1330
  - app/jobs/spree_cm_commissioner/invalidate_cache_request_job.rb
1320
1331
  - app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb
1321
1332
  - app/jobs/spree_cm_commissioner/option_type_variants_public_metadata_updater_job.rb
@@ -1335,6 +1346,7 @@ files:
1335
1346
  - app/jobs/spree_cm_commissioner/stock/inventory_items_generator_job.rb
1336
1347
  - app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb
1337
1348
  - app/jobs/spree_cm_commissioner/subscription_order_executor_job.rb
1349
+ - app/jobs/spree_cm_commissioner/telegram_alerts/integration_sync_failure_job.rb
1338
1350
  - app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb
1339
1351
  - app/jobs/spree_cm_commissioner/telegram_notification_sender_job.rb
1340
1352
  - app/jobs/spree_cm_commissioner/telegram_start_message_sender_job.rb
@@ -1361,15 +1373,18 @@ files:
1361
1373
  - app/models/.gitkeep
1362
1374
  - app/models/concerns/spree_cm_commissioner/event_metadata.rb
1363
1375
  - app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb
1376
+ - app/models/concerns/spree_cm_commissioner/integrations/integration_mappable.rb
1364
1377
  - app/models/concerns/spree_cm_commissioner/json_preference_validator.rb
1365
1378
  - app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb
1366
1379
  - app/models/concerns/spree_cm_commissioner/line_item_durationable.rb
1367
1380
  - app/models/concerns/spree_cm_commissioner/line_item_guests_concern.rb
1381
+ - app/models/concerns/spree_cm_commissioner/line_item_integration.rb
1368
1382
  - app/models/concerns/spree_cm_commissioner/line_item_transitable.rb
1369
1383
  - app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb
1370
1384
  - app/models/concerns/spree_cm_commissioner/metafield.rb
1371
1385
  - app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb
1372
1386
  - app/models/concerns/spree_cm_commissioner/option_value_attr_type.rb
1387
+ - app/models/concerns/spree_cm_commissioner/order_integration.rb
1373
1388
  - app/models/concerns/spree_cm_commissioner/order_scopes.rb
1374
1389
  - app/models/concerns/spree_cm_commissioner/order_seatable.rb
1375
1390
  - app/models/concerns/spree_cm_commissioner/order_state_machine.rb
@@ -1459,6 +1474,10 @@ files:
1459
1474
  - app/models/spree_cm_commissioner/image_methods_decorator.rb
1460
1475
  - app/models/spree_cm_commissioner/import.rb
1461
1476
  - app/models/spree_cm_commissioner/imports/import_order.rb
1477
+ - app/models/spree_cm_commissioner/integration.rb
1478
+ - app/models/spree_cm_commissioner/integration_mapping.rb
1479
+ - app/models/spree_cm_commissioner/integration_sync_session.rb
1480
+ - app/models/spree_cm_commissioner/integrations/stadium_x_v1.rb
1462
1481
  - app/models/spree_cm_commissioner/inventory.rb
1463
1482
  - app/models/spree_cm_commissioner/inventory_item.rb
1464
1483
  - app/models/spree_cm_commissioner/invite.rb
@@ -1691,6 +1710,7 @@ files:
1691
1710
  - app/overrides/spree/admin/shared/_version/deploy_tag_version_badge.html.erb.deface
1692
1711
  - app/overrides/spree/admin/shared/sub_menu/_configuration/locations_tab.html.erb.deface
1693
1712
  - app/overrides/spree/admin/shared/sub_menu/_configuration/menu_items.html.erb.deface
1713
+ - app/overrides/spree/admin/shared/sub_menu/_integrations/external_integrations.html.erb.deface
1694
1714
  - app/overrides/spree/admin/shared/sub_menu/_integrations/telegram_bot.html.erb.deface
1695
1715
  - app/overrides/spree/admin/shared/sub_menu/_orders/import_order.html.erb.deface
1696
1716
  - app/overrides/spree/admin/shared/sub_menu/_organizations/tenants_tab.html.erb.deface
@@ -1750,7 +1770,7 @@ files:
1750
1770
  - app/overrides/spree/admin/webhooks_subscribers/_form/rules.html.erb.deface
1751
1771
  - app/overrides/spree/admin/webhooks_subscribers/index/table.html.erb.deface
1752
1772
  - app/overrides/spree/layouts/admin/map_head.html.erb.deface
1753
- - app/presenters/spree/variants/visable_options_presenter.rb
1773
+ - app/presenters/spree/variants/visible_options_presenter.rb
1754
1774
  - app/queries/spree_cm_commissioner/accommodation_query.rb
1755
1775
  - app/queries/spree_cm_commissioner/dashboard_crew_event_query.rb
1756
1776
  - app/queries/spree_cm_commissioner/event_chart_queries.rb
@@ -1771,7 +1791,6 @@ files:
1771
1791
  - app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_schema.rb
1772
1792
  - app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb
1773
1793
  - app/request_schemas/spree_cm_commissioner/inventory_item_schema.rb
1774
- - app/request_schemas/spree_cm_commissioner/popular_route_places_request_schema.rb
1775
1794
  - app/request_schemas/spree_cm_commissioner/profile_image_request_schema.rb
1776
1795
  - app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb
1777
1796
  - app/request_schemas/spree_cm_commissioner/seat_layout_schema.rb
@@ -1983,6 +2002,24 @@ files:
1983
2002
  - app/services/spree_cm_commissioner/imports/base_import_order_service.rb
1984
2003
  - app/services/spree_cm_commissioner/imports/create_order_service.rb
1985
2004
  - app/services/spree_cm_commissioner/imports/update_order_service.rb
2005
+ - app/services/spree_cm_commissioner/integrations/base/sync_manager.rb
2006
+ - app/services/spree_cm_commissioner/integrations/base/sync_result.rb
2007
+ - app/services/spree_cm_commissioner/integrations/polling.rb
2008
+ - app/services/spree_cm_commissioner/integrations/polling_scheduler.rb
2009
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/external_client/client.rb
2010
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/inventory/unstock_inventory.rb
2011
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_matches.rb
2012
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_zones.rb
2013
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/base.rb
2014
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/league.rb
2015
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/match.rb
2016
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/ticket.rb
2017
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/ticket_image.rb
2018
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/resources/zone.rb
2019
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_manager.rb
2020
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/full_sync_strategy.rb
2021
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/incremental_sync_strategy.rb
2022
+ - app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/webhook_sync_strategy.rb
1986
2023
  - app/services/spree_cm_commissioner/intercity_taxi_order/create.rb
1987
2024
  - app/services/spree_cm_commissioner/intercity_taxi_order/update.rb
1988
2025
  - app/services/spree_cm_commissioner/metafields/product_metadata_service.rb
@@ -2011,6 +2048,7 @@ files:
2011
2048
  - app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
2012
2049
  - app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
2013
2050
  - app/services/spree_cm_commissioner/seeds/roles_decorator.rb
2051
+ - app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb
2014
2052
  - app/services/spree_cm_commissioner/transit/legs_builder_service.rb
2015
2053
  - app/services/spree_cm_commissioner/trips/search.rb
2016
2054
  - app/services/spree_cm_commissioner/user_authenticator.rb
@@ -2112,6 +2150,15 @@ files:
2112
2150
  - app/views/spree/admin/import_new_orders/index.html.erb
2113
2151
  - app/views/spree/admin/import_new_orders/new.html.erb
2114
2152
  - app/views/spree/admin/import_new_orders/show.html.erb
2153
+ - app/views/spree/admin/integration_mappings/_integration_mappings.html.erb
2154
+ - app/views/spree/admin/integration_mappings/index.html.erb
2155
+ - app/views/spree/admin/integration_sessions/_integration_sync_sessions.html.erb
2156
+ - app/views/spree/admin/integration_sessions/index.html.erb
2157
+ - app/views/spree/admin/integrations/_form.html.erb
2158
+ - app/views/spree/admin/integrations/_stadium_x_v1_fields.html.erb
2159
+ - app/views/spree/admin/integrations/edit.html.erb
2160
+ - app/views/spree/admin/integrations/index.html.erb
2161
+ - app/views/spree/admin/integrations/new.html.erb
2115
2162
  - app/views/spree/admin/inventory_items/show.html.erb
2116
2163
  - app/views/spree/admin/kyc/_form.html.erb
2117
2164
  - app/views/spree/admin/kyc/edit.html.erb
@@ -2197,8 +2244,6 @@ files:
2197
2244
  - app/views/spree/admin/tenants/_form.html.erb
2198
2245
  - app/views/spree/admin/tenants/_tabs.html.erb
2199
2246
  - app/views/spree/admin/tenants/edit.html.erb
2200
- - app/views/spree/admin/tenants/form/_footer.html.erb
2201
- - app/views/spree/admin/tenants/form/_social.html.erb
2202
2247
  - app/views/spree/admin/tenants/index.html.erb
2203
2248
  - app/views/spree/admin/tenants/new.html.erb
2204
2249
  - app/views/spree/admin/user_events/_events.html.erb
@@ -2896,9 +2941,11 @@ files:
2896
2941
  - db/migrate/20251009033331_add_registered_by_to_spree_users.rb
2897
2942
  - db/migrate/20251009073040_add_lock_version_to_cm_routes.rb
2898
2943
  - db/migrate/20251009073929_add_lock_version_to_cm_vendor_routes.rb
2944
+ - db/migrate/20251017094845_create_cm_integrations.rb
2945
+ - db/migrate/20251017101555_create_cm_integration_sync_sessions.rb
2946
+ - db/migrate/20251017101605_create_cm_integration_mappings.rb
2899
2947
  - db/migrate/20251113081853_add_index_to_spree_orders_updated_at.rb
2900
2948
  - db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb
2901
- - db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb
2902
2949
  - docker-compose.yml
2903
2950
  - docs/api/scoped-access-token-endpoints.md
2904
2951
  - docs/option_types/attr_types.md
@@ -2957,6 +3004,9 @@ files:
2957
3004
  - lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb
2958
3005
  - lib/spree_cm_commissioner/test_helper/factories/id_card_factory.rb
2959
3006
  - lib/spree_cm_commissioner/test_helper/factories/image_factory.rb
3007
+ - lib/spree_cm_commissioner/test_helper/factories/integration_factory.rb
3008
+ - lib/spree_cm_commissioner/test_helper/factories/integration_mapping_factory.rb
3009
+ - lib/spree_cm_commissioner/test_helper/factories/integration_sync_session_factory.rb
2960
3010
  - lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb
2961
3011
  - lib/spree_cm_commissioner/test_helper/factories/invite_factory.rb
2962
3012
  - lib/spree_cm_commissioner/test_helper/factories/invite_guests_factory.rb
@@ -1,12 +0,0 @@
1
- module SpreeCmCommissioner
2
- class PopularRoutePlacesRequestSchema < ApplicationRequestSchema
3
- params do
4
- optional(:query).maybe(:string)
5
- optional(:route_type).maybe(:string)
6
- end
7
- route_types = SpreeCmCommissioner::RouteType::ROUTE_TYPES.map(&:to_s)
8
- rule(:route_type) do
9
- key.failure("Invalid route_type. Use #{route_types}") if value.present? && route_types.exclude?(value)
10
- end
11
- end
12
- end
@@ -1,31 +0,0 @@
1
- <div data-hook="admin_tenant_support_fields" class="row">
2
- <div class="col-6">
3
- <%= f.field_container :customer_support_email do %>
4
- <%= f.label :customer_support_email, 'Customer support email' %>
5
- <%= f.email_field :customer_support_email, class: 'form-control', placeholder: 'support@example.com' %>
6
- <% if f.object.errors[:customer_support_email].any? %>
7
- <div class="error text-danger"><%= f.object.errors[:customer_support_email].join(', ') %></div>
8
- <% end %>
9
- <% end %>
10
- </div>
11
-
12
- <div class="col-6">
13
- <%= f.field_container :contact_phone do %>
14
- <%= f.label :contact_phone, 'Contact phone' %>
15
- <%= f.telephone_field :contact_phone, class: 'form-control', placeholder: '+855 12 345 678' %>
16
- <% if f.object.errors[:contact_phone].any? %>
17
- <div class="error text-danger"><%= f.object.errors[:contact_phone].join(', ') %></div>
18
- <% end %>
19
- <% end %>
20
- </div>
21
-
22
- <div class="col-12 mt-3">
23
- <%= f.field_container :address do %>
24
- <%= f.label :address, 'Address' %>
25
- <%= f.text_area :address, class: 'form-control', rows: 3, placeholder: 'Store address' %>
26
- <% if f.object.errors[:address].any? %>
27
- <div class="error text-danger"><%= f.object.errors[:address].join(', ') %></div>
28
- <% end %>
29
- <% end %>
30
- </div>
31
- </div>
@@ -1,31 +0,0 @@
1
- <div data-hook="admin_tenant_social_fields" class="row">
2
- <div class="col-4">
3
- <%= f.field_container :preferred_facebook do %>
4
- <%= f.label :preferred_facebook, 'Facebook URL' %>
5
- <%= f.url_field :preferred_facebook, class: 'form-control', placeholder: 'https://facebook.com/yourpage' %>
6
- <% if f.object.errors[:preferred_facebook].any? %>
7
- <div class="error text-danger"><%= f.object.errors[:preferred_facebook].join(', ') %></div>
8
- <% end %>
9
- <% end %>
10
- </div>
11
-
12
- <div class="col-4">
13
- <%= f.field_container :preferred_twitter do %>
14
- <%= f.label :preferred_twitter, 'Twitter URL' %>
15
- <%= f.url_field :preferred_twitter, class: 'form-control', placeholder: 'https://twitter.com/yourhandle' %>
16
- <% if f.object.errors[:preferred_twitter].any? %>
17
- <div class="error text-danger"><%= f.object.errors[:preferred_twitter].join(', ') %></div>
18
- <% end %>
19
- <% end %>
20
- </div>
21
-
22
- <div class="col-4">
23
- <%= f.field_container :preferred_instagram do %>
24
- <%= f.label :preferred_instagram, 'Instagram URL' %>
25
- <%= f.url_field :preferred_instagram, class: 'form-control', placeholder: 'https://instagram.com/youraccount' %>
26
- <% if f.object.errors[:preferred_instagram].any? %>
27
- <div class="error text-danger"><%= f.object.errors[:preferred_instagram].join(', ') %></div>
28
- <% end %>
29
- <% end %>
30
- </div>
31
- </div>
@@ -1,9 +0,0 @@
1
- class AddContactFieldsToCmTenants < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :cm_tenants, :customer_support_email, :string, if_not_exists: true
4
- add_column :cm_tenants, :address, :text, if_not_exists: true
5
- add_column :cm_tenants, :contact_phone, :string, if_not_exists: true
6
- add_index :cm_tenants, :customer_support_email, if_not_exists: true
7
- add_index :cm_tenants, :contact_phone, if_not_exists: true
8
- end
9
- end