bscf-core 0.4.94 → 0.4.96
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee65869ce73c1aee5ea1c76d0fd64933b90d5c5ff6c36267becef20a17f5b8d5
|
4
|
+
data.tar.gz: 8d1b9ae207b2f3696fbd46b0f964d512346190ba66f32eea95f1cf19b80dbb02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e736a14dab87b08e7e4f6c48924a81640cc1f841fd88773768be5a90097ac729ac9783f91ecf3f1ff58c17d651d2eb5990d5b1020a7d431eed0902c8c869b48e
|
7
|
+
data.tar.gz: 1e4099ab4b9a570f37c7d61cc0dc0fed5ebdac4fbe168e802e84abbb3e3e13e752ccbf4eaf517fd6b267a884bf5b9eef0bd2ab91ad761420ba0b9294dabf7348
|
@@ -33,31 +33,6 @@ module Bscf
|
|
33
33
|
((delivery_end_time - delivery_start_time) / 1.hour).round(2)
|
34
34
|
end
|
35
35
|
|
36
|
-
def optimized_route
|
37
|
-
return nil unless pickup_address&.coordinates.present?
|
38
|
-
|
39
|
-
# Get all delivery order items with dropoff addresses
|
40
|
-
items_with_dropoffs = orders.includes(:drop_off_address)
|
41
|
-
.where.not(drop_off_address: nil)
|
42
|
-
|
43
|
-
dropoff_addresses = items_with_dropoffs.map(&:drop_off_address).compact.uniq
|
44
|
-
return nil if dropoff_addresses.empty?
|
45
|
-
|
46
|
-
# Check if all dropoff addresses have coordinates
|
47
|
-
return nil if dropoff_addresses.any? { |addr| addr.coordinates.blank? }
|
48
|
-
|
49
|
-
# Call Gebeta Maps service
|
50
|
-
gebeta_service = Bscf::Core::GebetaMapsService.new
|
51
|
-
route_data = gebeta_service.optimize_route(pickup_address, dropoff_addresses)
|
52
|
-
|
53
|
-
# Return nil if route_data is empty or doesn't have waypoints
|
54
|
-
return nil if route_data.blank? || !route_data.key?("directions")
|
55
|
-
|
56
|
-
# Cache the result if needed
|
57
|
-
# Rails.cache.write("delivery_order_route_#{id}", route_data, expires_in: 1.hour)
|
58
|
-
route_data
|
59
|
-
end
|
60
|
-
|
61
36
|
# Reorder delivery items based on optimized route or provided positions
|
62
37
|
def reorder_items_by_route(positions = nil)
|
63
38
|
if positions.is_a?(Hash)
|
data/lib/bscf/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bscf-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.96
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Asrat
|
@@ -363,6 +363,7 @@ files:
|
|
363
363
|
- db/migrate/20250623115615_remove_dropoff_address_from_delivery_orders.rb
|
364
364
|
- db/migrate/20250624062746_rename_business_id_to_user_id_in_bscf_core_business_documents.rb
|
365
365
|
- db/migrate/20250624122210_add_document_type_to_business_documents.rb
|
366
|
+
- db/migrate/20250714201747_add_optimized_route_to_delivery_order.rb
|
366
367
|
- lib/bscf/core.rb
|
367
368
|
- lib/bscf/core/engine.rb
|
368
369
|
- lib/bscf/core/version.rb
|