spree_cm_commissioner 2.5.0.pre.pre13 → 2.5.0
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/.env.example +4 -0
- data/Gemfile.lock +1 -1
- data/app/assets/images/mailer/call.png +0 -0
- data/app/assets/images/mailer/email.png +0 -0
- data/app/assets/images/mailer/user-tenant.png +0 -0
- data/app/controllers/spree/admin/base_controller_decorator.rb +7 -33
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +7 -51
- data/app/controllers/spree/api/v2/storefront/intercity_taxi/distance_calculator_controller.rb +47 -0
- data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +7 -5
- data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +2 -2
- data/app/controllers/spree/api/v2/tenant/intercity_taxi/distance_calculator_controller.rb +47 -0
- data/app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb +7 -5
- data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +2 -2
- data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +9 -1
- data/app/interactors/spree_cm_commissioner/google_routes_distance_calculator.rb +0 -13
- data/app/interactors/spree_cm_commissioner/invalidate_cache_request.rb +3 -3
- data/app/interactors/spree_cm_commissioner/vehicle_type_updater.rb +41 -0
- data/app/jobs/spree_cm_commissioner/invalidate_cache_request_job.rb +1 -1
- data/app/mailers/spree/order_mailer_decorator.rb +22 -1
- data/app/models/concerns/spree_cm_commissioner/line_item_seat_selection.rb +40 -0
- data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/vehicle_kind.rb +21 -0
- data/app/models/spree_cm_commissioner/adjustable/adjuster/pricing_action.rb +25 -0
- data/app/models/spree_cm_commissioner/guest.rb +1 -1
- data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +3 -0
- data/app/models/spree_cm_commissioner/homepage_background_app_image.rb +1 -1
- data/app/models/spree_cm_commissioner/invite_guest.rb +2 -5
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +2 -2
- data/app/models/spree_cm_commissioner/option_type_decorator.rb +4 -1
- data/app/models/spree_cm_commissioner/option_value_decorator.rb +4 -1
- data/app/models/spree_cm_commissioner/{option_value_vehicle.rb → option_value_vehicle_type.rb} +2 -2
- data/app/models/spree_cm_commissioner/order_decorator.rb +14 -1
- data/app/models/spree_cm_commissioner/saved_guest.rb +2 -0
- data/app/models/spree_cm_commissioner/trip.rb +7 -6
- data/app/models/spree_cm_commissioner/vehicle.rb +8 -20
- data/app/models/spree_cm_commissioner/vehicle_type.rb +28 -0
- data/app/models/spree_cm_commissioner/vehicle_type_option_type.rb +6 -0
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +1 -0
- data/app/overrides/spree/admin/orders/_order_actions/actions.html.erb.deface +36 -1
- data/app/overrides/spree/admin/products/edit/clear_cache_button.html.erb.deface +1 -1
- data/app/overrides/spree/admin/taxons/edit/clear_cache_button.html.erb.deface +3 -2
- data/app/queries/spree_cm_commissioner/trip_query.rb +5 -5
- data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb +2 -0
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +12 -0
- data/app/serializers/spree/v2/tenant/line_item_serializer.rb +14 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/distance_serializer.rb +26 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +3 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/{trip_vehicle_serializer.rb → trip_vehicle_type_serializer.rb} +2 -4
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +98 -0
- data/app/services/spree_cm_commissioner/calculate_distance.rb +279 -0
- data/app/services/spree_cm_commissioner/cart/recalculate_decorator.rb +28 -1
- data/app/services/spree_cm_commissioner/guests/claim_invite_guest_service.rb +65 -0
- data/app/services/spree_cm_commissioner/intercity_taxi_order/calculate_distance.rb +224 -0
- data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +30 -3
- data/app/services/spree_cm_commissioner/line_items/apply_pricing_models.rb +27 -0
- data/app/services/spree_cm_commissioner/pricing_models/apply.rb +4 -12
- data/app/services/spree_cm_commissioner/signing/sign_data.rb +42 -0
- data/app/services/spree_cm_commissioner/signing/verify_signature.rb +52 -0
- data/app/services/spree_cm_commissioner/transit/export_order.rb +146 -0
- data/app/services/spree_cm_commissioner/update_guest_service.rb +129 -0
- data/app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb +24 -7
- data/app/services/spree_cm_commissioner/vendor_places/update.rb +4 -2
- data/app/views/spree/admin/homepage_section/edit.html.erb +7 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +17 -0
- data/app/views/spree/order_mailer/confirm_email.html.erb +2 -2
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_cancel_email.html.erb +13 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_footer.html.erb +8 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_header.html.erb +3 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_mailer_stylesheets.html.erb +88 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_cancel_email.html.erb +13 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_footer.html.erb +8 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_header.html.erb +15 -0
- data/app/views/spree_cm_commissioner/layouts/cancel_order_mailer.html.erb +16 -0
- data/app/views/spree_cm_commissioner/layouts/order_mailer.html.erb +1 -1
- data/app/views/spree_cm_commissioner/order_mailer/_customer_info.html.erb +2 -8
- data/app/views/spree_cm_commissioner/order_mailer/_mailer_stylesheets.html.erb +51 -23
- data/app/views/spree_cm_commissioner/order_mailer/_support_contact.html.erb +2 -7
- data/app/views/spree_cm_commissioner/order_mailer/purchased_items/_items.html.erb +76 -42
- data/app/views/spree_cm_commissioner/order_mailer/tenant/_customer_info.html.erb +4 -10
- data/app/views/spree_cm_commissioner/order_mailer/tenant/_support_contact.html.erb +3 -8
- data/config/locales/en.yml +14 -0
- data/config/locales/km.yml +26 -2
- data/config/routes.rb +2 -0
- data/db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb +40 -0
- data/db/migrate/20251219035243_add_migrations_to_support_vehicle_types.rb +36 -0
- data/db/migrate/20260105072146_add_nationality_group_and_age_group_to_cm_saved_guests.rb +6 -0
- data/db/migrate/20260106093359_add_contact_phone_to_cm_vendor_places.rb +5 -0
- data/lib/spree_cm_commissioner/distance.rb +88 -0
- data/lib/spree_cm_commissioner/engine.rb +3 -0
- data/lib/spree_cm_commissioner/test_helper/factories/guest_factory.rb +2 -2
- data/lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb +3 -3
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_variant_factory.rb +6 -0
- data/lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +1 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +4 -1
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb +7 -0
- data/lib/spree_cm_commissioner/trip_query_result.rb +1 -1
- data/lib/spree_cm_commissioner/trip_result.rb +7 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -1
- metadata +43 -12
- data/app/interactors/spree_cm_commissioner/trip_distance_calculator.rb +0 -165
- data/app/interactors/spree_cm_commissioner/vehicle_updater.rb +0 -41
- data/app/models/concerns/spree_cm_commissioner/vehicle_type.rb +0 -11
- data/app/models/spree_cm_commissioner/vehicle_option_type.rb +0 -6
- data/lib/spree_cm_commissioner/intercity_taxi/distance.rb +0 -38
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_factory.rb +0 -7
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class VehicleUpdater < BaseInteractor
|
|
3
|
-
def call
|
|
4
|
-
vehicle = context.vehicle
|
|
5
|
-
data = context.data
|
|
6
|
-
|
|
7
|
-
option_value_ids = data[:option_value_ids] || []
|
|
8
|
-
option_type_ids = data[:option_type_ids] || []
|
|
9
|
-
|
|
10
|
-
ActiveRecord::Base.transaction do
|
|
11
|
-
update_vehicle!(vehicle, data[:vehicle_attributes])
|
|
12
|
-
update_amenities!(vehicle, option_value_ids, option_type_ids)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
context.message = I18n.t('views.transit.vehicles.update_success')
|
|
16
|
-
rescue StandardError => e
|
|
17
|
-
context.fail!(message: "Failed to update vehicle: #{e.message}")
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def update_vehicle!(vehicle, attributes)
|
|
23
|
-
return if vehicle.update(attributes.slice(:code, :license_plate, :allow_seat_selection, :vehicle_type, :number_of_seats))
|
|
24
|
-
|
|
25
|
-
raise vehicle.errors.full_messages.to_sentence
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def update_amenities!(vehicle, option_value_ids, option_type_ids)
|
|
29
|
-
vehicle.option_value_vehicles.where.not(option_value_id: option_value_ids).destroy_all
|
|
30
|
-
vehicle.vehicle_option_types.where.not(option_type_id: option_type_ids).destroy_all
|
|
31
|
-
|
|
32
|
-
option_value_ids.each do |option_value_id|
|
|
33
|
-
vehicle.option_value_vehicles.find_or_create_by(option_value_id: option_value_id)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
option_type_ids.each do |option_type_id|
|
|
37
|
-
vehicle.vehicle_option_types.find_or_create_by(option_type_id: option_type_id)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module VehicleType
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
VEHICLE_TYPES = %i[suv sedan minivan van sleeping_bus luxury_van air_bus bus ferry].freeze
|
|
6
|
-
|
|
7
|
-
included do
|
|
8
|
-
enum vehicle_type: VEHICLE_TYPES if table_exists? && column_names.include?('vehicle_type')
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module IntercityTaxi
|
|
3
|
-
class Distance
|
|
4
|
-
attr_accessor :distance_km, :ordered_points, :estimated_time_minutes, :base_km,
|
|
5
|
-
:detour_pickup_km, :detour_dropoff_km, :extra_pickup_km, :extra_dropoff_km
|
|
6
|
-
|
|
7
|
-
def initialize(options = {})
|
|
8
|
-
options = options.stringify_keys if options.is_a?(Hash)
|
|
9
|
-
|
|
10
|
-
@distance_km = options['distance_km']&.to_f
|
|
11
|
-
@ordered_points = options['ordered_points']
|
|
12
|
-
@estimated_time_minutes = options['estimated_time_minutes']&.to_i
|
|
13
|
-
@base_km = options['base_km']&.to_f
|
|
14
|
-
@detour_pickup_km = options['detour_pickup_km']&.to_f
|
|
15
|
-
@detour_dropoff_km = options['detour_dropoff_km']&.to_f
|
|
16
|
-
@extra_pickup_km = options['extra_pickup_km']&.to_f
|
|
17
|
-
@extra_dropoff_km = options['extra_dropoff_km']&.to_f
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.from_hash(hash)
|
|
21
|
-
new(hash || {})
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def to_h
|
|
25
|
-
{
|
|
26
|
-
'distance_km' => @distance_km,
|
|
27
|
-
'ordered_points' => @ordered_points,
|
|
28
|
-
'estimated_time_minutes' => @estimated_time_minutes,
|
|
29
|
-
'base_km' => @base_km,
|
|
30
|
-
'detour_pickup_km' => @detour_pickup_km,
|
|
31
|
-
'detour_dropoff_km' => @detour_dropoff_km,
|
|
32
|
-
'extra_pickup_km' => @extra_pickup_km,
|
|
33
|
-
'extra_dropoff_km' => @extra_dropoff_km
|
|
34
|
-
}.compact
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|