import { InventoryResult } from "@/app/api/inventory";
import { Dispatch, SetStateAction, useMemo } from "react";
import { useTranslation } from "react-i18next";
import { Column } from "../SearchResults";
import SearchResults, { defaultPagingController, defaultSetPagingController } from "../SearchResults/SearchResults";

interface Props {
    inventories: InventoryResult[];
    setPagingController: defaultSetPagingController;
    pagingController: typeof defaultPagingController;
    totalCount: number;
    onRowClick: (item: InventoryResult) => void;
}

const InventoryTable: React.FC<Props> = ({ inventories, pagingController, setPagingController, totalCount, onRowClick }) => {
    const { t } = useTranslation(["inventory"]);

    const columns = useMemo<Column<InventoryResult>[]>(
        () => [
            {
                name: "itemCode",
                label: t("Code"),
            },
            {
                name: "itemName",
                label: t("Name"),
            },
            {
                name: "itemType",
                label: t("Type"),
                renderCell: (params) => {
                    return t(params.itemType);
                },
            },
            {
                name: "availableQty",
                label: t("Available Qty"),
                align: "right",
                headerAlign: "right",
                type: "integer",
            },
            {
                name: "uomUdfudesc",
                label: t("Stock UoM"),
                align: "left",
                headerAlign: "left",
            },
            // {
            //     name: "qtyPerSmallestUnit",
            //     label: t("Available Qty Per Smallest Unit"),
            //     align: "right",
            //     headerAlign: "right",
            //     type: "integer",
            // },
            // {
            //     name: "baseUom",
            //     label: t("Base UoM"),
            //     align: "left",
            //     headerAlign: "left",
            // },
            // {
            //     name: "qtyPerSmallestUnit",
            //     label: t("Qty Per Smallest Unit"),
            //     align: "right",
            //     headerAlign: "right",
            //     type: "decimal"
            // },
            // {
            //     name: "smallestUnit",
            //     label: t("Smallest Unit"),
            // },
            // {
            //     name: "price",
            //     label: t("Price"),
            //     align: "right",
            //     sx: {
            //         alignItems: "right",
            //         justifyContent: "end",
            //     }
            // },
            // {
            //     name: "currencyName",
            //     label: t("Currency"),
            // },
            // {
            //     name: "status",
            //     label: t("Status"),
            //     type: "icon",
            //     icons: {
            //         available: <CheckCircleOutline fontSize="small"/>,
            //         unavailable: <DoDisturb fontSize="small"/>,
            //     },
            //     colors: {
            //         available: "success",
            //         unavailable: "error",
            //     }
            // },
        ],
        [t],
    );
    return <SearchResults<InventoryResult>
        items={inventories}
        columns={columns}
        pagingController={pagingController}
        setPagingController={setPagingController}
        totalCount={totalCount}
        onRowClick={onRowClick}
    />
}

export default InventoryTable;