spree_cm_commissioner 2.0.3.pre.pre6 → 2.0.3.pre.pre.pre7
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 -16
- data/.gitignore +1 -2
- data/Gemfile.lock +4 -39
- data/Rakefile +4 -33
- data/app/assets/stylesheets/spree_cm_commissioner/backend/calendar.scss +11 -8
- data/app/controllers/concerns/spree_cm_commissioner/transit/taxon_bitwise.rb +44 -0
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -63
- data/app/controllers/spree/api/v2/storefront/accommodations_controller.rb +31 -14
- data/app/controllers/spree/api/v2/storefront/dynamic_fields_controller.rb +42 -0
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +2 -0
- data/app/controllers/spree/api/v2/storefront/queue_cart/line_items_controller.rb +2 -2
- data/app/finders/spree_cm_commissioner/line_items/find_by_variant_decorator.rb +20 -0
- data/app/interactors/spree_cm_commissioner/create_vendor.rb +11 -1
- data/app/jobs/spree_cm_commissioner/application_job.rb +0 -20
- data/app/jobs/spree_cm_commissioner/application_unique_job.rb +0 -20
- data/app/models/concerns/spree_cm_commissioner/line_item_durationable.rb +15 -18
- data/app/models/concerns/spree_cm_commissioner/line_item_guests_concern.rb +15 -29
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +12 -2
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -39
- data/app/models/concerns/spree_cm_commissioner/product_delegation.rb +3 -1
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/route_type.rb +1 -1
- data/app/models/spree_cm_commissioner/address_decorator.rb +2 -36
- data/app/models/spree_cm_commissioner/branch.rb +12 -0
- data/app/models/spree_cm_commissioner/guest.rb +85 -71
- data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +37 -27
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +78 -47
- data/app/models/spree_cm_commissioner/line_item_seat.rb +10 -0
- data/app/models/spree_cm_commissioner/notification_taxon.rb +1 -1
- data/app/models/spree_cm_commissioner/option_type_decorator.rb +11 -1
- data/app/models/spree_cm_commissioner/option_value_vehicle_type.rb +8 -0
- data/app/models/spree_cm_commissioner/order/address_book_decorator.rb +12 -30
- data/app/models/spree_cm_commissioner/order_decorator.rb +1 -38
- data/app/models/spree_cm_commissioner/place.rb +4 -3
- data/app/models/spree_cm_commissioner/product_decorator.rb +6 -10
- data/app/models/spree_cm_commissioner/service_calendar.rb +2 -0
- data/app/models/spree_cm_commissioner/state_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/stock/availability_checker.rb +25 -26
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +1 -2
- data/app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb +3 -3
- data/app/models/spree_cm_commissioner/stock_item_decorator.rb +0 -17
- data/app/models/spree_cm_commissioner/stop.rb +23 -0
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +6 -0
- data/app/models/spree_cm_commissioner/trip.rb +10 -19
- data/app/models/spree_cm_commissioner/trip_connection.rb +5 -5
- data/app/models/spree_cm_commissioner/trip_stop.rb +21 -10
- data/app/models/spree_cm_commissioner/user_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/variant_decorator.rb +47 -37
- data/app/models/spree_cm_commissioner/variant_options.rb +23 -0
- data/app/models/spree_cm_commissioner/vehicle.rb +16 -11
- data/app/models/spree_cm_commissioner/vehicle_seat.rb +11 -0
- data/app/models/spree_cm_commissioner/vehicle_type.rb +76 -0
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +14 -14
- data/app/models/spree_cm_commissioner/vendor_place.rb +3 -13
- data/app/models/spree_cm_commissioner/vendor_stop.rb +10 -0
- data/app/queries/spree_cm_commissioner/trip_query.rb +131 -110
- data/app/queries/spree_cm_commissioner/trip_search_query.rb +76 -0
- data/app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb +45 -0
- data/app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb +55 -0
- data/app/queries/spree_cm_commissioner/vendor_stop_place_query.rb +54 -0
- data/app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb +0 -3
- data/app/request_schemas/spree_cm_commissioner/application_request_schema.rb +1 -1
- data/app/serializers/spree/v2/storefront/accommodation_serializer.rb +0 -2
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +0 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
- data/app/services/spree_cm_commissioner/vehicle_option_value_creator.rb +11 -0
- data/app/views/spree/admin/stock_managements/_variant_stock_items.html.erb +2 -7
- data/app/views/spree/admin/stock_managements/index.html.erb +6 -55
- data/config/initializers/spree_permitted_attributes.rb +0 -5
- data/config/routes.rb +3 -24
- data/db/migrate/20240202080634_update_counter_cache_of_vehicle_type.rb +1 -3
- data/db/migrate/20250812121745_add_data_fill_stage_phase_to_cm_guests.rb +5 -0
- data/docker-compose.yml +1 -1
- data/lib/cm_app_logger.rb +4 -11
- data/lib/generators/spree_cm_commissioner/install/install_generator.rb +11 -14
- data/lib/generators/spree_cm_commissioner/install/templates/app/javascript/{spree_dashboard/spree_cm_commissioner → spree_cm_commissioner}/utilities.js +0 -4
- data/lib/spree_cm_commissioner/calendar_event.rb +1 -11
- data/lib/spree_cm_commissioner/test_helper/factories/branch_factory.rb +12 -0
- data/lib/spree_cm_commissioner/test_helper/factories/departure_time_option_type_factory.rb +8 -0
- data/lib/spree_cm_commissioner/test_helper/factories/duration_option_type_factory.rb +8 -0
- data/lib/spree_cm_commissioner/test_helper/factories/guest_factory.rb +0 -10
- data/lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/line_item_seat_factory.rb +7 -0
- data/lib/spree_cm_commissioner/test_helper/factories/option_type_factory.rb +30 -6
- data/lib/spree_cm_commissioner/test_helper/factories/order_factory.rb +36 -0
- data/lib/spree_cm_commissioner/test_helper/factories/product_factory.rb +34 -18
- data/lib/spree_cm_commissioner/test_helper/factories/stock_location_factory.rb +2 -2
- data/lib/spree_cm_commissioner/test_helper/factories/stop_factory.rb +14 -0
- data/lib/spree_cm_commissioner/test_helper/factories/transit_place_factory.rb +8 -0
- data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +3 -11
- data/lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb +19 -41
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_option_type_factory.rb +8 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb +96 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +1 -6
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb +1 -13
- data/lib/spree_cm_commissioner/trip_query_result.rb +0 -50
- data/lib/spree_cm_commissioner/trip_result.rb +10 -19
- data/lib/spree_cm_commissioner/trip_seat_layout_result.rb +11 -0
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -37
- data/spree_cm_commissioner.gemspec +0 -7
- metadata +28 -163
- data/app/controllers/spree/admin/inventory_items_controller.rb +0 -83
- data/app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb +0 -42
- data/app/controllers/spree/api/v2/storefront/trip_places_controller.rb +0 -29
- data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +0 -62
- data/app/finders/spree_cm_commissioner/accommodations/find.rb +0 -37
- data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +0 -32
- data/app/interactors/spree_cm_commissioner/ensure_correct_product_type.rb +0 -40
- data/app/interactors/spree_cm_commissioner/inventory_item_syncer.rb +0 -25
- data/app/interactors/spree_cm_commissioner/stock/inventory_item_resetter.rb +0 -44
- data/app/interactors/spree_cm_commissioner/stock/inventory_items_adjuster.rb +0 -13
- data/app/interactors/spree_cm_commissioner/stock/inventory_items_generator.rb +0 -15
- data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +0 -75
- data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +0 -32
- data/app/interactors/spree_cm_commissioner/taxi_trip_creator.rb +0 -66
- data/app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb +0 -132
- data/app/interactors/spree_cm_commissioner/variant_block_updater.rb +0 -62
- data/app/interactors/spree_cm_commissioner/vehicle_updater.rb +0 -41
- data/app/jobs/spree_cm_commissioner/ensure_correct_product_type_job.rb +0 -7
- data/app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb +0 -7
- data/app/jobs/spree_cm_commissioner/stock/inventory_items_adjuster_job.rb +0 -11
- data/app/jobs/spree_cm_commissioner/stock/inventory_items_generator_job.rb +0 -11
- data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +0 -9
- data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +0 -89
- data/app/models/concerns/spree_cm_commissioner/order_seatable.rb +0 -44
- data/app/models/concerns/spree_cm_commissioner/vehicle_type.rb +0 -11
- data/app/models/spree_cm_commissioner/block.rb +0 -43
- data/app/models/spree_cm_commissioner/inventory.rb +0 -11
- data/app/models/spree_cm_commissioner/inventory_item.rb +0 -69
- data/app/models/spree_cm_commissioner/price_decorator.rb +0 -9
- data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +0 -41
- data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +0 -126
- data/app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb +0 -36
- data/app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb +0 -25
- data/app/models/spree_cm_commissioner/reserved_block.rb +0 -30
- data/app/models/spree_cm_commissioner/saved_guest.rb +0 -15
- data/app/models/spree_cm_commissioner/seat_layout.rb +0 -20
- data/app/models/spree_cm_commissioner/seat_section.rb +0 -16
- data/app/models/spree_cm_commissioner/seats/blocks_canceler.rb +0 -30
- data/app/models/spree_cm_commissioner/seats/blocks_holder.rb +0 -53
- data/app/models/spree_cm_commissioner/seats/blocks_reserver.rb +0 -49
- data/app/models/spree_cm_commissioner/seats/errors/blocks_are_on_hold_by_other_guest.rb +0 -4
- data/app/models/spree_cm_commissioner/seats/errors/blocks_are_reserved_by_other_guest.rb +0 -4
- data/app/models/spree_cm_commissioner/seats/errors/blocks_are_reserved_by_same_guest.rb +0 -4
- data/app/models/spree_cm_commissioner/seats/errors/unable_to_save_reserved_block_record.rb +0 -4
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -44
- data/app/models/spree_cm_commissioner/variant_block.rb +0 -17
- data/app/request_schemas/spree_cm_commissioner/trip_search_request_schema.rb +0 -20
- data/app/request_schemas/spree_cm_commissioner/variant_request_schema.rb +0 -19
- data/app/serializers/spree/v2/storefront/amenity_serializer.rb +0 -15
- data/app/serializers/spree/v2/storefront/trip_place_serializer.rb +0 -10
- data/app/serializers/spree/v2/storefront/trip_query_result_serializer.rb +0 -14
- data/app/serializers/spree/v2/storefront/trip_result_serializer.rb +0 -17
- data/app/serializers/spree/v2/storefront/trip_vehicle_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/trip_vendor_serializer.rb +0 -13
- data/app/views/spree/admin/inventory_items/show.html.erb +0 -72
- data/app/views/spree/admin/stock_managements/calendar.html.erb +0 -56
- data/config/initializers/paper_trail.rb +0 -1
- data/db/migrate/20250122000000_move_route_type_from_vehicles_to_trips.rb +0 -7
- data/db/migrate/20250304293518_create_cm_inventory_items.rb +0 -21
- data/db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb +0 -5
- data/db/migrate/20250502025848_add_index_to_spree_products.rb +0 -5
- data/db/migrate/20250502030001_add_product_type_to_spree_variants.rb +0 -5
- data/db/migrate/20250502030002_add_product_type_to_spree_line_items.rb +0 -5
- data/db/migrate/20250603035256_add_inventory_item_to_spree_prices.rb +0 -7
- data/db/migrate/20250619073724_drop_table_cm_line_item_seats.rb +0 -5
- data/db/migrate/20250619073812_drop_table_cm_vehicle_seats.rb +0 -5
- data/db/migrate/20250619073844_drop_table_cm_vehicle_types.rb +0 -9
- data/db/migrate/20250619073957_drop_table_cm_option_value_vehicle_types.rb +0 -5
- data/db/migrate/20250619082354_remove_unnecessary_fields_from_cm_places.rb +0 -9
- data/db/migrate/20250619082736_remove_route_type_from_spree_products.rb +0 -5
- data/db/migrate/20250619083055_remove_unnecessary_fields_from_spree_taxons.rb +0 -5
- data/db/migrate/20250620083055_remove_variant_id_from_cm_trips.rb +0 -5
- data/db/migrate/20250620090000_update_cm_trip_connections_to_use_cm_trips.rb +0 -6
- data/db/migrate/20250620090001_create_cm_seat_layouts.rb +0 -17
- data/db/migrate/20250620090002_create_cm_seat_sections.rb +0 -18
- data/db/migrate/20250620090003_create_cm_blocks.rb +0 -18
- data/db/migrate/20250624091005_create_cm_reserved_blocks.rb +0 -29
- data/db/migrate/20250626083642_create_cm_variant_blocks.rb +0 -24
- data/db/migrate/20250627023314_add_block_id_to_cm_guests.rb +0 -13
- data/db/migrate/20250716022821_add_location_reference_to_cm_vendor_places.rb +0 -5
- data/db/migrate/20250716031743_drop_table_cm_vendor_stops.rb +0 -5
- data/db/migrate/20250717023824_add_vendor_reference_to_cm_trips.rb +0 -5
- data/db/migrate/20250717041414_add_location_place_reference_to_cm_trip_stops.rb +0 -5
- data/db/migrate/20250717042539_rename_cm_trip_stops_stop_id_column_to_stop_place_id.rb +0 -7
- data/db/migrate/20250717042707_rename_cm_trips_origin_and_destination_to_origin_place_and_destination_place.rb +0 -11
- data/db/migrate/20250721080738_add_vehicle_type_to_cm_vehicles.rb +0 -7
- data/db/migrate/20250725092713_add_block_type_to_cm_blocks.rb +0 -5
- data/db/migrate/20250731062816_add_departure_time_and_arrival_time_to_trip_stop.rb +0 -6
- data/db/migrate/20250807033035_create_spree_cm_commissioner_saved_guests.rb +0 -23
- data/db/migrate/20250808054835_add_saved_guest_reference_to_cm_blocks.rb +0 -5
- data/lib/spree_cm_commissioner/cached_inventory_item.rb +0 -23
- data/lib/spree_cm_commissioner/test_helper/factories/block_factory.rb +0 -16
- data/lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb +0 -9
- data/lib/spree_cm_commissioner/test_helper/factories/reserved_block_factory.rb +0 -27
- data/lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb +0 -11
- data/lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb +0 -16
- data/lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb +0 -6
- data/lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb +0 -13
- data/lib/spree_cm_commissioner/test_helper/factories/variant_block_factory.rb +0 -7
- data/lib/spree_cm_commissioner/transit/leg.rb +0 -37
- data/lib/spree_cm_commissioner/transit/seat_selection.rb +0 -27
- data/lib/tasks/create_default_non_permanent_inventory_items.rake +0 -16
- data/lib/tasks/ensure_correct_product_type.rake +0 -7
- data/lib/tasks/generate_inventory_items.rake +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40333398b1c99d171c10d9a492997548b47564457bebb9acd63e6ccc772d452e
|
4
|
+
data.tar.gz: f63faf26e0692314727b1b7ec1c7b136cc6c524103841b662dca80b2ecf3b1c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7795b3fb7ceea60d329929f2f2675a9e3732733e2c61405cd269d663f345bffc2d7362e7943e89d2e2051a82d07bfc56beb9f7d8717d8205e96b7db0cc61c4f9
|
7
|
+
data.tar.gz: 657f01f615ed198403d66bb6dfb2f507d0f7c1e4cb5081cf6cc2ba16b968b73214476a09fb4bc930039592150e8d4bb6c64ade0824cae0565a4f6416e4f8ee4d
|
@@ -10,7 +10,6 @@ on:
|
|
10
10
|
- reopened
|
11
11
|
branches:
|
12
12
|
- develop
|
13
|
-
- milestone-77-scalable-design
|
14
13
|
push:
|
15
14
|
tags:
|
16
15
|
- "*"
|
@@ -38,8 +37,7 @@ jobs:
|
|
38
37
|
console.log("PR title format is correct.");
|
39
38
|
}
|
40
39
|
- name: Check commit messages format
|
41
|
-
|
42
|
-
if: github.event_name == 'pull_request' && github.head_ref != 'milestone-77-scalable-design'
|
40
|
+
if: github.event_name == 'pull_request'
|
43
41
|
uses: actions/github-script@v7
|
44
42
|
with:
|
45
43
|
script: |
|
@@ -138,17 +136,6 @@ jobs:
|
|
138
136
|
--health-timeout 5s
|
139
137
|
--health-retries 5
|
140
138
|
|
141
|
-
redis:
|
142
|
-
image: redis
|
143
|
-
# Set health checks to wait until redis has started
|
144
|
-
options: >-
|
145
|
-
--health-cmd "redis-cli ping"
|
146
|
-
--health-interval 10s
|
147
|
-
--health-timeout 5s
|
148
|
-
--health-retries 5
|
149
|
-
ports:
|
150
|
-
- 6379:6379 # Maps port 6379 on service container to the host
|
151
|
-
|
152
139
|
steps:
|
153
140
|
- uses: actions/checkout@v3
|
154
141
|
|
@@ -184,9 +171,8 @@ jobs:
|
|
184
171
|
- name: Run test
|
185
172
|
env:
|
186
173
|
DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
|
187
|
-
REDIS_URL: redis://localhost:6379/0
|
188
174
|
|
189
|
-
if: github.event_name == 'pull_request'
|
175
|
+
if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop'
|
190
176
|
run: |
|
191
177
|
bundle exec rake
|
192
178
|
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -34,7 +34,7 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (2.0.3.pre.
|
37
|
+
spree_cm_commissioner (2.0.3.pre.pre.pre7)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
@@ -42,7 +42,6 @@ PATH
|
|
42
42
|
aws-sdk-s3
|
43
43
|
blazer (~> 3.0.4)
|
44
44
|
byebug
|
45
|
-
connection_pool
|
46
45
|
counter_culture (~> 3.2)
|
47
46
|
dry-validation (~> 1.10)
|
48
47
|
elasticsearch (~> 8.5)
|
@@ -55,12 +54,9 @@ PATH
|
|
55
54
|
interactor (~> 3.1)
|
56
55
|
jwt (>= 2.5.0)
|
57
56
|
noticed (~> 1.6)
|
58
|
-
paper_trail (~> 16.0)
|
59
57
|
phonelib
|
60
58
|
premailer-rails
|
61
59
|
rails (~> 7.0.4)
|
62
|
-
redis
|
63
|
-
redis-rails
|
64
60
|
rqrcode (~> 2.0)
|
65
61
|
searchkick (~> 5.1)
|
66
62
|
simple_calendar (~> 2.4)
|
@@ -450,7 +446,6 @@ GEM
|
|
450
446
|
google-cloud-recaptcha_enterprise-v1beta1 (0.10.0)
|
451
447
|
gapic-common (>= 0.20.0, < 2.a)
|
452
448
|
google-cloud-errors (~> 1.0)
|
453
|
-
google-protobuf (3.25.8)
|
454
449
|
google-protobuf (3.25.8-x86_64-darwin)
|
455
450
|
google-protobuf (3.25.8-x86_64-linux)
|
456
451
|
googleapis-common-protos (1.4.0)
|
@@ -465,9 +460,6 @@ GEM
|
|
465
460
|
multi_json (~> 1.11)
|
466
461
|
os (>= 0.9, < 2.0)
|
467
462
|
signet (>= 0.16, < 2.a)
|
468
|
-
grpc (1.72.0)
|
469
|
-
google-protobuf (>= 3.25, < 5.0)
|
470
|
-
googleapis-common-protos-types (~> 1.0)
|
471
463
|
grpc (1.72.0-x86_64-darwin)
|
472
464
|
google-protobuf (>= 3.25, < 5.0)
|
473
465
|
googleapis-common-protos-types (~> 1.0)
|
@@ -555,7 +547,6 @@ GEM
|
|
555
547
|
method_source (1.0.0)
|
556
548
|
mini_magick (4.12.0)
|
557
549
|
mini_mime (1.1.5)
|
558
|
-
mini_portile2 (2.8.4)
|
559
550
|
minitest (5.20.0)
|
560
551
|
monetize (1.12.0)
|
561
552
|
money (~> 6.12)
|
@@ -573,12 +564,9 @@ GEM
|
|
573
564
|
net-smtp (0.4.0)
|
574
565
|
net-protocol
|
575
566
|
nio4r (2.5.9)
|
576
|
-
nokogiri (1.
|
577
|
-
mini_portile2 (~> 2.8.2)
|
578
|
-
racc (~> 1.4)
|
579
|
-
nokogiri (1.15.4-x86_64-darwin)
|
567
|
+
nokogiri (1.18.9-x86_64-darwin)
|
580
568
|
racc (~> 1.4)
|
581
|
-
nokogiri (1.
|
569
|
+
nokogiri (1.18.9-x86_64-linux-gnu)
|
582
570
|
racc (~> 1.4)
|
583
571
|
noticed (1.6.3)
|
584
572
|
http (>= 4.0.0)
|
@@ -588,9 +576,6 @@ GEM
|
|
588
576
|
sawyer (~> 0.9)
|
589
577
|
orm_adapter (0.5.0)
|
590
578
|
os (1.1.4)
|
591
|
-
paper_trail (16.0.0)
|
592
|
-
activerecord (>= 6.1)
|
593
|
-
request_store (~> 1.4)
|
594
579
|
parallel (1.23.0)
|
595
580
|
paranoia (2.6.3)
|
596
581
|
activerecord (>= 5.1, < 7.2)
|
@@ -626,8 +611,6 @@ GEM
|
|
626
611
|
activesupport (>= 2.3.14)
|
627
612
|
racc (1.7.1)
|
628
613
|
rack (2.2.8)
|
629
|
-
rack-session (1.0.2)
|
630
|
-
rack (< 3)
|
631
614
|
rack-test (2.1.0)
|
632
615
|
rack (>= 1.3)
|
633
616
|
rails (7.0.8)
|
@@ -671,31 +654,13 @@ GEM
|
|
671
654
|
rbtree (0.4.6)
|
672
655
|
redis (5.0.7)
|
673
656
|
redis-client (>= 0.9.0)
|
674
|
-
redis-actionpack (5.5.0)
|
675
|
-
actionpack (>= 5)
|
676
|
-
redis-rack (>= 2.1.0, < 4)
|
677
|
-
redis-store (>= 1.1.0, < 2)
|
678
|
-
redis-activesupport (5.3.0)
|
679
|
-
activesupport (>= 3, < 8)
|
680
|
-
redis-store (>= 1.3, < 2)
|
681
657
|
redis-client (0.17.0)
|
682
658
|
connection_pool
|
683
|
-
redis-rack (3.0.0)
|
684
|
-
rack-session (>= 0.2.0)
|
685
|
-
redis-store (>= 1.2, < 2)
|
686
|
-
redis-rails (5.0.2)
|
687
|
-
redis-actionpack (>= 5.0, < 6)
|
688
|
-
redis-activesupport (>= 5.0, < 6)
|
689
|
-
redis-store (>= 1.2, < 2)
|
690
|
-
redis-store (1.11.0)
|
691
|
-
redis (>= 4, < 6)
|
692
659
|
regexp_parser (2.8.2)
|
693
660
|
representable (3.2.0)
|
694
661
|
declarative (< 0.1.0)
|
695
662
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
696
663
|
uber (< 0.2.0)
|
697
|
-
request_store (1.7.0)
|
698
|
-
rack (>= 1.4)
|
699
664
|
responders (3.1.1)
|
700
665
|
actionpack (>= 5.2)
|
701
666
|
railties (>= 5.2)
|
@@ -957,11 +922,11 @@ GEM
|
|
957
922
|
zeitwerk (2.6.12)
|
958
923
|
|
959
924
|
PLATFORMS
|
960
|
-
ruby
|
961
925
|
x86_64-darwin-19
|
962
926
|
x86_64-darwin-20
|
963
927
|
x86_64-darwin-21
|
964
928
|
x86_64-darwin-22
|
929
|
+
x86_64-darwin-23
|
965
930
|
x86_64-linux
|
966
931
|
|
967
932
|
DEPENDENCIES
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'bundler'
|
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
require 'spree/testing_support/
|
5
|
+
require 'spree/testing_support/extension_rake'
|
6
6
|
|
7
7
|
RSpec::Core::RakeTask.new
|
8
8
|
|
@@ -14,37 +14,8 @@ task :default do
|
|
14
14
|
Rake::Task[:spec].invoke
|
15
15
|
end
|
16
16
|
|
17
|
-
# Copied from:
|
18
|
-
# spree_core:lib/spree/testing_support/common_rake.rb
|
19
|
-
# But refactored to skip frontend & backend setup.
|
20
17
|
desc 'Generates a dummy app for testing'
|
21
|
-
task :test_app do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Rails.env = ENV['RAILS_ENV'] = 'test'
|
26
|
-
|
27
|
-
Spree::DummyGeneratorHelper.inject_extension_requirements = true
|
28
|
-
Spree::DummyGenerator.start ["--lib_name=spree_cm_commissioner", '--quiet']
|
29
|
-
Spree::InstallGenerator.start [
|
30
|
-
"--lib_name=spree_cm_commissioner",
|
31
|
-
'--auto-accept',
|
32
|
-
'--migrate=false',
|
33
|
-
'--seed=false',
|
34
|
-
'--sample=false',
|
35
|
-
'--quiet',
|
36
|
-
'--copy_storefront=false',
|
37
|
-
"--install_storefront=false",
|
38
|
-
"--install_admin=false",
|
39
|
-
"--user_class=Spree::User"
|
40
|
-
]
|
41
|
-
|
42
|
-
puts 'Setting up dummy database...'
|
43
|
-
system('bin/rails db:environment:set RAILS_ENV=test')
|
44
|
-
system('bundle exec rake db:drop db:create')
|
45
|
-
Spree::DummyModelGenerator.start
|
46
|
-
system('bundle exec rake db:migrate')
|
47
|
-
|
48
|
-
puts 'Running extension installation generator...'
|
49
|
-
SpreeCmCommissioner::Generators::InstallGenerator.start(['--auto-run-migrations'])
|
18
|
+
task :test_app do
|
19
|
+
ENV['LIB_NAME'] = 'spree_cm_commissioner'
|
20
|
+
Rake::Task['extension:test_app'].invoke
|
50
21
|
end
|
@@ -55,9 +55,8 @@ $day-background: theme-color("light");
|
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
58
|
-
.wday-0 {
|
59
|
-
|
60
|
-
}
|
58
|
+
// .wday-0 {
|
59
|
+
// }
|
61
60
|
|
62
61
|
// .wday-1 {
|
63
62
|
// }
|
@@ -74,9 +73,8 @@ $day-background: theme-color("light");
|
|
74
73
|
// .wday-5 {
|
75
74
|
// }
|
76
75
|
|
77
|
-
.wday-6 {
|
78
|
-
|
79
|
-
}
|
76
|
+
// .wday-6 {
|
77
|
+
// }
|
80
78
|
|
81
79
|
// .today {
|
82
80
|
// }
|
@@ -88,7 +86,9 @@ $day-background: theme-color("light");
|
|
88
86
|
// }
|
89
87
|
|
90
88
|
// known as active-date
|
91
|
-
|
89
|
+
.start-date {
|
90
|
+
background-color: darken($day-background, 5%);
|
91
|
+
}
|
92
92
|
|
93
93
|
// .prev-month {
|
94
94
|
// }
|
@@ -159,8 +159,11 @@ $day-background: theme-color("light");
|
|
159
159
|
|
160
160
|
// .current-month {}
|
161
161
|
.has-events {
|
162
|
+
background-color: lighten(theme-color("warning"), 30%);
|
163
|
+
color: darken(theme-color("warning"), 50%);
|
164
|
+
|
162
165
|
@include hover {
|
163
|
-
background-color:
|
166
|
+
background-color: theme-color("warning");
|
164
167
|
}
|
165
168
|
}
|
166
169
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
module Transit
|
3
|
+
module TaxonBitwise
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
BIT_STOP = 0b001
|
7
|
+
BIT_STATION = 0b010
|
8
|
+
BIT_BRANCH = 0b100
|
9
|
+
BIT_LOCATION = 0b1000
|
10
|
+
|
11
|
+
included do
|
12
|
+
attr_accessor :stop, :station, :branch, :location
|
13
|
+
|
14
|
+
before_validation :at_least_one_checkbox_selected
|
15
|
+
end
|
16
|
+
|
17
|
+
def stop?
|
18
|
+
data_type & BIT_STOP != 0
|
19
|
+
end
|
20
|
+
|
21
|
+
def station?
|
22
|
+
data_type & BIT_STATION != 0
|
23
|
+
end
|
24
|
+
|
25
|
+
def branch?
|
26
|
+
data_type & BIT_BRANCH != 0
|
27
|
+
end
|
28
|
+
|
29
|
+
def location?
|
30
|
+
data_type & BIT_LOCATION != 0
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def at_least_one_checkbox_selected
|
36
|
+
if stop.nil? && station.nil? && branch.nil? && location.nil?
|
37
|
+
nil
|
38
|
+
elsif stop.to_i.zero? && station.to_i.zero? && branch.to_i.zero? && location.to_i.zero?
|
39
|
+
errors.add(:base, 'At least one checkbox (stop, branch, or location) must be selected')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -5,8 +5,6 @@ module Spree
|
|
5
5
|
|
6
6
|
before_action :load_parent
|
7
7
|
|
8
|
-
helper_method :inventory_item_message
|
9
|
-
|
10
8
|
def load_parent
|
11
9
|
@product = Spree::Product.find_by(slug: params[:product_id])
|
12
10
|
end
|
@@ -14,59 +12,9 @@ module Spree
|
|
14
12
|
def index
|
15
13
|
@variants = @product.variants.includes(:images, stock_items: :stock_location, option_values: :option_type)
|
16
14
|
@variants = [@product.master] if @variants.empty?
|
17
|
-
@stock_locations = (@variants.flat_map(&:stock_locations) + @product.vendor.stock_locations).uniq
|
18
|
-
|
19
|
-
load_inventories unless @product.permanent_stock?
|
20
|
-
end
|
21
|
-
|
22
|
-
def create
|
23
|
-
result = SpreeCmCommissioner::Stock::StockMovementCreator.call(
|
24
|
-
variant_id: params[:variant_id],
|
25
|
-
stock_location_id: params[:stock_location_id],
|
26
|
-
current_store: current_store,
|
27
|
-
stock_movement_params: stock_movement_params
|
28
|
-
)
|
29
|
-
|
30
|
-
if result.success?
|
31
|
-
flash[:success] = flash_message_for(result.stock_movement, :successfully_created)
|
32
|
-
else
|
33
|
-
flash[:error] = result.message
|
34
|
-
end
|
35
|
-
|
36
|
-
redirect_back fallback_location: admin_product_stock_managements_path(@product)
|
37
|
-
end
|
38
|
-
|
39
|
-
# GET /products/:slug/stock_managements/calendar?year=
|
40
|
-
def calendar
|
41
|
-
@year = params[:year].present? ? params[:year].to_i : Time.zone.today.year
|
42
15
|
|
43
|
-
|
44
|
-
to_date = Date.new(@year, 1, 1).end_of_year
|
45
|
-
|
46
|
-
@inventory_items = @product.inventory_items.includes(:variant, :prices).where(inventory_date: from_date..to_date).to_a
|
47
|
-
@cached_inventory_items = ::SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(@inventory_items)
|
48
|
-
.call
|
49
|
-
.index_by(&:inventory_item_id)
|
50
|
-
@events = SpreeCmCommissioner::CalendarEvent.from_inventory_items(@inventory_items)
|
51
|
-
end
|
52
|
-
|
53
|
-
def inventory_item_message(inventory_item, cached_inventory_item)
|
54
|
-
synced = inventory_item.quantity_available == cached_inventory_item.quantity_available
|
55
|
-
|
56
|
-
if synced
|
57
|
-
"Synced: Quantity available matches in both DB and Redis (#{cached_inventory_item.quantity_available})."
|
58
|
-
else
|
59
|
-
"Out of sync: Redis shows #{cached_inventory_item.quantity_available} available, which doesn't match the database."
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
16
|
+
@stock_locations = (@variants.flat_map(&:stock_locations) + @product.vendor.stock_locations).uniq
|
64
17
|
|
65
|
-
def load_inventories
|
66
|
-
@inventory_items = @product.inventory_items.group_by { |item| item.variant.id }
|
67
|
-
@cached_inventory_items = ::SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(@product.inventory_items)
|
68
|
-
.call
|
69
|
-
.index_by(&:inventory_item_id)
|
70
18
|
@reserved_stocks = Spree::LineItem
|
71
19
|
.complete
|
72
20
|
.where(variant_id: @variants.pluck(:id))
|
@@ -77,16 +25,6 @@ module Spree
|
|
77
25
|
def model_class
|
78
26
|
Spree::StockItem
|
79
27
|
end
|
80
|
-
|
81
|
-
# This method processes the parameters for stock movement creation.
|
82
|
-
# Expected attributes for `stock_movement` include:
|
83
|
-
# - :quantity (Integer): The quantity of stock to move.
|
84
|
-
# - :action (String): The type of stock movement (e.g., "add" or "remove").
|
85
|
-
# - :originator_id, :originator_ty (String, optional): The ID and type of the entity creating the stock movement.
|
86
|
-
# Ensure that `permitted_stock_movement_attributes` is updated to reflect any changes.
|
87
|
-
def stock_movement_params
|
88
|
-
params.require(:stock_movement).permit(permitted_stock_movement_attributes)
|
89
|
-
end
|
90
28
|
end
|
91
29
|
end
|
92
30
|
end
|
@@ -5,38 +5,55 @@ module Spree
|
|
5
5
|
class AccommodationsController < ::Spree::Api::V2::ResourceController
|
6
6
|
private
|
7
7
|
|
8
|
-
# override
|
9
8
|
def collection
|
10
|
-
@collection ||=
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
@collection ||= collection_finder.call(params: params).value
|
10
|
+
end
|
11
|
+
|
12
|
+
def paginated_collection
|
13
|
+
return @paginated_collection if defined?(@paginated_collection)
|
14
|
+
|
15
|
+
@paginated_collection = super
|
16
|
+
@paginated_collection = apply_service_availability(@paginated_collection)
|
17
17
|
end
|
18
18
|
|
19
|
-
# override
|
20
19
|
def resource
|
21
|
-
|
20
|
+
resource = resource_finder.call(params: params).value
|
21
|
+
raise ActiveRecord::RecordNotFound if resource.nil?
|
22
|
+
|
23
|
+
apply_service_availability(resource)
|
24
|
+
end
|
25
|
+
|
26
|
+
def apply_service_availability(resource)
|
27
|
+
SpreeCmCommissioner::ApplyServiceAvailability.call(calendarable: resource,
|
28
|
+
from_date: params[:from_date].to_date,
|
29
|
+
to_date: params[:to_date].to_date
|
30
|
+
).value
|
22
31
|
end
|
23
32
|
|
24
|
-
# override
|
25
33
|
def allowed_sort_attributes
|
26
34
|
super << :min_price << :max_price
|
27
35
|
end
|
28
36
|
|
29
|
-
|
37
|
+
def model_class
|
38
|
+
Spree::Vendor
|
39
|
+
end
|
40
|
+
|
30
41
|
def resource_serializer
|
31
42
|
Spree::V2::Storefront::AccommodationSerializer
|
32
43
|
end
|
33
44
|
|
34
|
-
# override
|
35
45
|
def collection_serializer
|
36
46
|
Spree::V2::Storefront::AccommodationSerializer
|
37
47
|
end
|
38
48
|
|
39
|
-
|
49
|
+
def collection_finder
|
50
|
+
SpreeCmCommissioner::AccommodationSearchDetail
|
51
|
+
end
|
52
|
+
|
53
|
+
def resource_finder
|
54
|
+
SpreeCmCommissioner::AccommodationSearchDetail
|
55
|
+
end
|
56
|
+
|
40
57
|
def required_schema
|
41
58
|
SpreeCmCommissioner::AccommodationRequestSchema
|
42
59
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Storefront
|
5
|
+
class DynamicFieldsController < ::Spree::Api::V2::ResourceController
|
6
|
+
before_action :load_product
|
7
|
+
|
8
|
+
# override
|
9
|
+
def collection
|
10
|
+
return @collection if defined?(@collection)
|
11
|
+
|
12
|
+
dynamic_fields = @product.dynamic_fields
|
13
|
+
if params[:phase].present?
|
14
|
+
requested_phase = params[:phase].to_s
|
15
|
+
if SpreeCmCommissioner::DynamicField.data_fill_stages.key?(requested_phase)
|
16
|
+
dynamic_fields = dynamic_fields.where(data_fill_stage: requested_phase)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
@collection = dynamic_fields.order(:position)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def load_product
|
26
|
+
return render_error_payload({ error: 'product_id is required' }, 400) if params[:product_id].blank?
|
27
|
+
|
28
|
+
@product ||= Spree::Product.find(params[:product_id])
|
29
|
+
end
|
30
|
+
|
31
|
+
def collection_serializer
|
32
|
+
SpreeCmCommissioner::V2::Storefront::DynamicFieldSerializer
|
33
|
+
end
|
34
|
+
|
35
|
+
def model_class
|
36
|
+
SpreeCmCommissioner::DynamicField
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -29,6 +29,7 @@ module Spree
|
|
29
29
|
resource = scope.new(guest_params)
|
30
30
|
|
31
31
|
if resource.save
|
32
|
+
resource.save_and_move_to_next_stage
|
32
33
|
render_serialized_payload(201) { serialize_resource(resource) }
|
33
34
|
else
|
34
35
|
render_error_payload(resource.errors, 400)
|
@@ -54,6 +55,7 @@ module Spree
|
|
54
55
|
resource.save!
|
55
56
|
end
|
56
57
|
|
58
|
+
resource.save_and_move_to_next_stage
|
57
59
|
render_serialized_payload { serialize_resource(resource) }
|
58
60
|
rescue ActiveRecord::RecordInvalid => e
|
59
61
|
render_error_payload(e.record.errors, 400)
|
@@ -12,9 +12,9 @@ module Spree
|
|
12
12
|
spree_authorize! :update, spree_current_order, order_token
|
13
13
|
spree_authorize! :show, @variant
|
14
14
|
|
15
|
-
availability_checker = SpreeCmCommissioner::Stock::AvailabilityChecker.new(@variant
|
15
|
+
availability_checker = SpreeCmCommissioner::Stock::AvailabilityChecker.new(@variant)
|
16
16
|
|
17
|
-
unless availability_checker.can_supply?(add_item_params[:quantity].to_i)
|
17
|
+
unless availability_checker.can_supply?(add_item_params[:quantity].to_i, add_item_params[:options])
|
18
18
|
return render_error_payload(availability_checker.error_message || I18n.t('variant_availability.items_out_of_stock'))
|
19
19
|
end
|
20
20
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
module LineItems
|
3
|
+
module FindByVariantDecorator
|
4
|
+
# ovveride
|
5
|
+
def execute(order:, variant:, options: {})
|
6
|
+
return super unless variant.product.product_type == 'transit'
|
7
|
+
|
8
|
+
order.line_items.detect do |line_item|
|
9
|
+
next if options[:date].present? && !(line_item.variant_id == variant.id && line_item.date == options[:date])
|
10
|
+
|
11
|
+
Spree::Dependencies.cart_compare_line_items_service.constantize.call(order: order, line_item: line_item, options: options).value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
unless Spree::LineItems::FindByVariant.included_modules.include?(SpreeCmCommissioner::LineItems::FindByVariantDecorator)
|
19
|
+
Spree::LineItems::FindByVariant.prepend(SpreeCmCommissioner::LineItems::FindByVariantDecorator)
|
20
|
+
end
|
@@ -8,6 +8,7 @@ module SpreeCmCommissioner
|
|
8
8
|
ActiveRecord::Base.transaction do
|
9
9
|
create_vendor
|
10
10
|
assign_vendor_to_user
|
11
|
+
create_logo
|
11
12
|
create_role
|
12
13
|
end
|
13
14
|
end
|
@@ -30,9 +31,18 @@ module SpreeCmCommissioner
|
|
30
31
|
context.user.vendors << @vendor
|
31
32
|
end
|
32
33
|
|
34
|
+
def create_logo
|
35
|
+
return if context.logo.blank?
|
36
|
+
|
37
|
+
vendor_logo = SpreeCmCommissioner::VendorLogo.create(viewable: @vendor, attachment: context.logo)
|
38
|
+
return if vendor_logo.persisted?
|
39
|
+
|
40
|
+
context.fail!(message: vendor_logo.errors.full_messages.join(', '))
|
41
|
+
end
|
42
|
+
|
33
43
|
def create_role
|
34
44
|
role = context.user.spree_roles.create(
|
35
|
-
name: "#{@vendor.
|
45
|
+
name: "#{@vendor.id}-organizer",
|
36
46
|
vendor_id: @vendor.id,
|
37
47
|
presentation: 'Organizer'
|
38
48
|
)
|
@@ -1,25 +1,5 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class ApplicationJob < ::ApplicationJob
|
3
3
|
queue_as :default
|
4
|
-
|
5
|
-
around_perform :log_exceptions
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
def log_exceptions
|
10
|
-
yield
|
11
|
-
rescue StandardError => e
|
12
|
-
CmAppLogger.log(
|
13
|
-
label: "#{self.class.name} failed",
|
14
|
-
data: {
|
15
|
-
error_class: e.class.name,
|
16
|
-
error_message: e.message,
|
17
|
-
arguments: arguments.inspect,
|
18
|
-
backtrace: e.backtrace&.first(5)&.join("\n")
|
19
|
-
}
|
20
|
-
)
|
21
|
-
|
22
|
-
raise # Re-raise the exception to let Sidekiq handle retries or failure
|
23
|
-
end
|
24
4
|
end
|
25
5
|
end
|
@@ -2,25 +2,5 @@
|
|
2
2
|
module SpreeCmCommissioner
|
3
3
|
class ApplicationUniqueJob < ::ApplicationUniqueJob
|
4
4
|
queue_as :default
|
5
|
-
|
6
|
-
around_perform :log_exceptions
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def log_exceptions
|
11
|
-
yield
|
12
|
-
rescue StandardError => e
|
13
|
-
CmAppLogger.log(
|
14
|
-
label: "#{self.class.name} failed",
|
15
|
-
data: {
|
16
|
-
error_class: e.class.name,
|
17
|
-
error_message: e.message,
|
18
|
-
arguments: arguments.inspect,
|
19
|
-
backtrace: e.backtrace&.first(5)&.join("\n")
|
20
|
-
}
|
21
|
-
)
|
22
|
-
|
23
|
-
raise # Re-raise the exception to let Sidekiq handle retries or failure
|
24
|
-
end
|
25
5
|
end
|
26
6
|
end
|