From 72b63c319ee11c6430076c1687a2a3cd200a84b0 Mon Sep 17 00:00:00 2001 From: marshal Date: Fri, 19 Jun 2026 01:07:05 +0300 Subject: [PATCH] - Fix shipping line mapping to use ID instead of name in EditBookingPage and NewBookingPage --- .../src/components/layout/FreightSidebar.tsx | 8 +++++--- .../src/pages/bookings/EditBookingPage.tsx | 20 +++++++++---------- .../src/pages/bookings/NewBookingPage.tsx | 6 +----- .../bookings/new-booking-form/step4-route.tsx | 12 +++++++---- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/apps/edr-freight-web/backoffice/src/components/layout/FreightSidebar.tsx b/apps/edr-freight-web/backoffice/src/components/layout/FreightSidebar.tsx index a2d685d0f..bfa75ddd1 100644 --- a/apps/edr-freight-web/backoffice/src/components/layout/FreightSidebar.tsx +++ b/apps/edr-freight-web/backoffice/src/components/layout/FreightSidebar.tsx @@ -6,7 +6,7 @@ import { useMemo, useState, } from "react"; -import { ChevronDown, Train } from "lucide-react"; +import { ChevronDown } from "lucide-react"; import { Box, Stack, Text } from "@mantine/core"; import type { SidebarItem, SidebarSection } from "./types"; @@ -226,8 +226,10 @@ const FreightSidebar = ({ return (
-
- +
+ EDR Freight + + {/* */}
{ if (!referenceData?.shipping_line) return []; - return referenceData.shipping_line.map((sl) => ({ - value: sl.name, - label: sl.name, - })); + const seen = new Set(); + return referenceData.shipping_line + .filter((sl) => { + if (seen.has(sl.id)) return false; + seen.add(sl.id); + return true; + }) + .map((sl) => ({ value: sl.id, label: sl.name })); }, [referenceData]); const setDocument = (key: string, file: File | null) => { @@ -376,12 +380,8 @@ export default function EditBookingPage() { }; const handleSubmit = form.handleSubmit((data) => { - const shippingLines = referenceData?.shipping_line ?? []; const containerGroups = referenceData?.containers ?? []; - const findShippingLineId = (name: string): string | undefined => - shippingLines.find((l) => l.name === name)?.id; - const cargoTypePath = data.cargoTypePath ?? []; const cargoTypeId = data.cargoType === "container" ? undefined : (cargoTypePath[1] ?? ""); @@ -456,7 +456,7 @@ export default function EditBookingPage() { ? { lastMileDeliveryAddress: data.lastMile.deliveryAddress } : {}), ...(data.shippingLine - ? { shippingLineId: findShippingLineId(data.shippingLine) } + ? { shippingLineId: data.shippingLine } : {}), }; diff --git a/apps/edr-freight-web/portal/src/pages/bookings/NewBookingPage.tsx b/apps/edr-freight-web/portal/src/pages/bookings/NewBookingPage.tsx index fd068e8ef..7b70ec1c9 100644 --- a/apps/edr-freight-web/portal/src/pages/bookings/NewBookingPage.tsx +++ b/apps/edr-freight-web/portal/src/pages/bookings/NewBookingPage.tsx @@ -231,13 +231,9 @@ export default function NewBookingPage() { ) : Number(data.cargoWeight || 0); - const shippingLines = referenceData?.shipping_line ?? []; const cargoTree = referenceData?.cargo_type ?? []; const containerGroups = referenceData?.containers ?? []; - const findShippingLineId = (name: string): string | undefined => - shippingLines.find((l) => l.name === name)?.id; - const findContainerTypeId = (name: string): string => { for (const group of containerGroups) { const ct = group.types.find((t) => t.name === name); @@ -308,7 +304,7 @@ export default function NewBookingPage() { ? { lastMileDeliveryAddress: data.lastMile.deliveryAddress } : {}), ...(data.shippingLine - ? { shippingLineId: findShippingLineId(data.shippingLine) } + ? { shippingLineId: data.shippingLine } : {}), ...(cargoFreeText ? { cargoFreeText } : {}), }; diff --git a/apps/edr-freight-web/portal/src/pages/bookings/new-booking-form/step4-route.tsx b/apps/edr-freight-web/portal/src/pages/bookings/new-booking-form/step4-route.tsx index dd5df7d9c..f021e3847 100644 --- a/apps/edr-freight-web/portal/src/pages/bookings/new-booking-form/step4-route.tsx +++ b/apps/edr-freight-web/portal/src/pages/bookings/new-booking-form/step4-route.tsx @@ -35,10 +35,14 @@ export function Step4Route({ const shippingLineOptions = useMemo(() => { if (!referenceData?.shipping_line) return []; - return referenceData.shipping_line.map((sl) => ({ - value: sl.name, - label: sl.name, - })); + const seen = new Set(); + return referenceData.shipping_line + .filter((sl) => { + if (seen.has(sl.id)) return false; + seen.add(sl.id); + return true; + }) + .map((sl) => ({ value: sl.id, label: sl.name })); }, [referenceData]); const originData = useMemo(() => {