Class: SpreeCmCommissioner::TripDistanceCalculator
- Inherits:
-
BaseInteractor
- Object
- BaseInteractor
- SpreeCmCommissioner::TripDistanceCalculator
- Defined in:
- app/interactors/spree_cm_commissioner/trip_distance_calculator.rb
Overview
Computes trip distance details and pricing payload.
Inputs via context:
-
origin: { lat:, lng: }
-
configured_destination: { lat:, lng: }
-
pickups: Array<{ lat:, lng: }> (optional)
-
dropoffs: Array<{ lat:, lng: }> (optional)
-
pickup_oob_confirmed: Boolean (optional)
-
dropoff_oob_confirmed: Boolean (optional)
-
base_price_usd: Numeric
-
boundary_km: Numeric (optional, default 0)
Outputs via context on success:
-
payload: Hash (compatible with previous controller response)
-
base_km, detour_pickup_km, detour_dropoff_km: Floats or nil
-
distance_km, directions_url, ordered_points, estimated_time_minutes (when optimize true)
Instance Method Summary collapse
Instance Method Details
#call ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'app/interactors/spree_cm_commissioner/trip_distance_calculator.rb', line 29 def call validate_inputs pickups_points, dropoffs_points, final_destination = prepare_points base_km, detour_pickup_km, detour_dropoff_km = compute_route_kms(pickups_points, dropoffs_points, final_destination) details_ctx = fetch_details(final_destination, pickups_points, dropoffs_points) extra_data = compute_extra_data(base_km, detour_pickup_km, detour_dropoff_km) payload = build_payload(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, extra_data) assign_context(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, payload) end |