diff --git a/src/components/DeliveryOrdersList.jsx b/src/components/DeliveryOrdersList.jsx index dd95560..b6eb9c9 100644 --- a/src/components/DeliveryOrdersList.jsx +++ b/src/components/DeliveryOrdersList.jsx @@ -1,4 +1,10 @@ -import { getDeliveryOrders, updateDeliveryOrderRoute } from "../api.jsx"; +import { + getDeliveryOrders, + updateDeliveryOrderRoute, + getDeliveryOrderDetails, + getDeliveryAccessories, +} from "../api.jsx"; +import { getCoordinates } from "../geocoder.jsx"; import React, { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import polyline from "@mapbox/polyline"; @@ -56,65 +62,66 @@ const DeliveryOrdersList = ({ await Promise.all( ordersToCalculate.map(async (order) => { try { - // const deliveryOrderDetails = await getDeliveryOrderDetails(order.id); + const deliveryOrderDetails = await getDeliveryOrderDetails(order.id); + const accessories = await getDeliveryAccessories( + deliveryOrderDetails.id + ); - // const coords = await Promise.all( - // accessories.map(async (accessory) => { - // if (accessory.latitude && accessory.longitude) { - // return { - // city: accessory.city_name, - // latitude: accessory.latitude, - // longitude: accessory.longitude, - // accessory_name: - // accessory.accessory_name + - // Math.round( - // (accessory.accessory_volume * accessory.count) / 100 - // ) + - // "шт.", - // }; - // } else { - // const coords = await getCoordinates(accessory.city_name); - // return { - // city: accessory.city_name, - // accessory_name: - // accessory.accessory_name + - // ": " + - // Math.round( - // (accessory.accessory_volume * accessory.count) / 100 - // ) + - // "шт.", - // ...coords, - // }; - // } - // }) - // ); + const coords = await Promise.all( + accessories.map(async (accessory) => { + if (accessory.latitude && accessory.longitude) { + return { + city: accessory.city_name, + latitude: accessory.latitude, + longitude: accessory.longitude, + accessory_name: + accessory.accessory_name + + Math.round( + (accessory.accessory_volume * accessory.count) / 100 + ) + + "шт.", + }; + } else { + const coords = await getCoordinates(accessory.city_name); + return { + city: accessory.city_name, + accessory_name: + accessory.accessory_name + + ": " + + Math.round( + (accessory.accessory_volume * accessory.count) / 100 + ) + + "шт.", + ...coords, + }; + } + }) + ); - // if (fullCoordinates.length > 1) { - // const waypoints = fullCoordinates - // .map(({ longitude, latitude }) => `${longitude},${latitude}`) - // .join(";"); + if (fullCoordinates.length > 1) { + const waypoints = fullCoordinates + .map(({ longitude, latitude }) => `${longitude},${latitude}`) + .join(";"); - // const routeUrl = `https://router.project-osrm.org/route/v1/driving/${waypoints}?overview=full`; + const routeUrl = `https://router.project-osrm.org/route/v1/driving/${waypoints}?overview=full`; - // const response = await fetch(routeUrl); - // const data = await response.json(); + const response = await fetch(routeUrl); + const data = await response.json(); - // if (data.routes && data.routes.length > 0) { - // const geometry = data.routes[0].geometry; - // const decodedRoute = polyline.decode(geometry); - // setRoute(decodedRoute); - // const duration = data.routes[0].duration; - // setOrderDuration(duration); + if (data.routes && data.routes.length > 0) { + const geometry = data.routes[0].geometry; + const decodedRoute = polyline.decode(geometry); + const duration = data.routes[0].duration; - // await updateDeliveryOrderRoute( - // order.id, - // duration / 60, - // decodedRoute - // ); - // } - // } + await updateDeliveryOrderRoute( + order.id, + duration / 60, + decodedRoute + ); + } + } - // const fullCoordinates = [...coords, DELIVERY_CITY]; + const fullCoordinates = [...coords, DELIVERY_CITY]; const routeUrl = `https://router.project-osrm.org/route/v1/driving/${order.start_longitude},${order.start_latitude};${order.end_longitude},${order.end_latitude}?overview=full`; const response = await fetch(routeUrl);