Class: Dscf::Marketplace::RouteOptimizationService

Inherits:
Object
  • Object
show all
Defined in:
app/services/dscf/marketplace/route_optimization_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(delivery_order) ⇒ RouteOptimizationService

Returns a new instance of RouteOptimizationService.



6
7
8
# File 'app/services/dscf/marketplace/route_optimization_service.rb', line 6

def initialize(delivery_order)
  @delivery_order = delivery_order
end

Instance Attribute Details

#delivery_orderObject (readonly)

Returns the value of attribute delivery_order.



4
5
6
# File 'app/services/dscf/marketplace/route_optimization_service.rb', line 4

def delivery_order
  @delivery_order
end

Instance Method Details

#optimize!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/dscf/marketplace/route_optimization_service.rb', line 10

def optimize!
  return unless delivery_order.pickup_address && delivery_order.delivery_stops.any?

  stops = []
  locations = []

  stops = ordered_stops
  locations = build_locations(stops)

  apply_remote_optimization(stops, locations)
rescue StandardError => e
  Rails.logger.warn(
    "[RouteOptimizationService] Falling back to local route for delivery_order=#{delivery_order.id}: #{e.class} - #{e.message}"
  )

  apply_local_fallback(stops, locations)
end