import { useDealPageContext } from "../../../contexts/DealPageContext.tsx";
import { Accordion, ActionIcon, Button, Center, Group, rem, Stack, Title, Tooltip } from "@mantine/core";
import { BoxSchema, PalletSchema, ShippingProductSchema } from "../../../../../client";
import ShippingProductsTable from "./ShippingProductsTable.tsx";
import BoxesTable from "./BoxesTable.tsx";
import { IconBox, IconPlus, IconSpace, IconTrash } from "@tabler/icons-react";
import useShipping from "../hooks/useShipping.tsx";
const ShippingTree = () => {
const { selectedDeal: deal } = useDealPageContext();
const {
onCreateBoxInPallet,
onCreateShippingProduct,
onDeletePalletClick,
palletIds,
} = useShipping();
const sortById = (data?: PalletSchema[] | BoxSchema[] | ShippingProductSchema[]) => {
return data?.sort((a, b) => a.id - b.id);
};
const getPallets = () => {
const sortedPallets = sortById(deal?.pallets) as PalletSchema[];
const pallets = sortedPallets?.map((pallet => {
palletIds.push(pallet.id.toString());
return (
}>
Паллет - П{pallet.id}
{removePalletButton(pallet.id)}
{getPalletContent(pallet)}
);
})) ?? [];
if (deal?.boxes && deal?.boxes.length > 0) {
const boxes = deal?.boxes.sort((b1, b2) => (b1.id - b2.id));
const itemValue = "noPallets";
const boxesWithoutPallet = (
}>
Короба без паллетов
);
pallets.unshift(boxesWithoutPallet);
palletIds.push(itemValue);
}
return pallets;
};
const removePalletButton = (palletId: number) => {
return (
onDeletePalletClick(palletId)}
mx={"md"}
>
);
};
const createBoxOrShippingProductButton = (palletId: number, isBox: boolean) => {
const createButtonLabel = isBox ? "Добавить короб" : "Добавить товар";
return (
);
};
const getPalletContent = (pallet: PalletSchema) => {
const isEmpty = pallet.boxes.length === 0 && pallet.shippingProducts.length === 0;
const isBox = pallet.boxes.length > 0;
const title = isEmpty ? "Пустой" : isBox ? "Короба" : "Товары";
let palletButtons;
if (isEmpty) {
palletButtons = [
createBoxOrShippingProductButton(pallet.id, true),
createBoxOrShippingProductButton(pallet.id, false),
];
} else {
palletButtons = [
createBoxOrShippingProductButton(pallet.id, isBox),
];
}
const boxes = sortById(pallet.boxes) as BoxSchema[];
const shippingProducts = sortById(pallet.shippingProducts) as ShippingProductSchema[];
let table;
if (!isEmpty) {
if (isBox) {
table = ();
} else {
table = ();
}
}
return (
{title}
{...palletButtons}
{table}
);
};
return (
{getPallets()}
);
};
export default ShippingTree;