import { useEffect, useState } from "react";
import { useApiRequest } from "../../../utils/useApiRequest";
import { useModalStore } from "../../../context/zustand-store/appStore";
import Table from "../../../components/Table/Table";
import { Grid } from "../../../components/Grid/Grid";
import Button from "../../../components/Button/Button";
import { Popover } from "../../../components/PopOver/PopOver";
import { Tooltip } from "../../../components/Tooltip/Tooltip";
import { AddQuota } from "./AddQuota";
import { QuotaView } from "./QuotaView";
import { PopoverCustomModalOperation } from "../../../components/PopOverCustomModalOperation/PopoverCustomModalOperation";
import {
ArrowDownOnSquareIcon,
ArrowUpOnSquareIcon,
BarsArrowUpIcon,
XMarkIcon,
} from "@heroicons/react/24/outline";
import { useNavigate } from "@tanstack/react-router";
import { QUOTAS } from "../../../routes/paths";
import { getQuotaTableColumns, getQuotaTableRowData } from "./quotaTableUtils";
import { QuotaAllocateToStakeHolders } from "./QuotaAllocateToStakeHolders";
import { QuotaDistributionEntryInventory } from "./QuotaDistributionEntryInventory";
import { useUserProfileStore } from "../../../context/zustand-store/userStore";
import { TableButton } from "../../../components/TableButton/TableButton";
import { QuotaActivesDashboardDetails } from "./QuotaActivesDashboardDetails";
import { PaginationParameters } from "../../../components/PaginationParameters/PaginationParameters";
export const QuotaActives = () => {
const { openModal } = useModalStore();
const navigate = useNavigate();
const { profile } = useUserProfileStore();
const [pagesInfo, setPagesInfo] = useState({ page: 1, page_size: 10 });
const [pagesTableData, setPagesTableData] = useState([]);
const [publicParams, setPublicParams] = useState({
start: null,
end: null,
search: null,
});
const { data: pagesData, refetch } = useApiRequest({
api: "/product/web/api/v1/quota/active_quotas/",
method: "get",
params: { ...pagesInfo, ...publicParams },
queryKey: ["activeQuotas", pagesInfo],
});
const { data: quotasDashboardData, refetch: quotasDashboardRefetch } =
useApiRequest({
api: "/product/web/api/v1/quota/quotas_dashboard/",
method: "get",
params: publicParams,
queryKey: ["quotasDashboard"],
});
const handleUpdate = () => {
refetch();
quotasDashboardRefetch();
};
useEffect(() => {
if (pagesData?.results) {
const tableData = pagesData.results.map((item: any, i: number) => {
return getQuotaTableRowData(item, i, {
pagesInfo,
renderOperations: (item, index) => (
{(profile?.role?.type?.key === "ADM" || item?.assigned_to_me) && (
)}
}
onClick={() => {
const path = QUOTAS + "/" + item.id;
navigate({ to: path });
}}
/>
{(profile?.role?.type?.key === "ADM" || item?.assigned_to_me) && (
}
onClick={() => {
openModal({
title: "ورود به انبار",
content: (
),
});
}}
/>
)}
{profile?.role?.type?.key === "CO" && (
}
onClick={() => {
openModal({
title: "تخصیص به زیر مجموعه",
content: (
),
});
}}
/>
)}
{(profile?.role?.type?.key === "ADM" || item?.assigned_to_me) && (
}
title="از بستن سهمیه اطمینان دارید؟"
api={`product/web/api/v1/quota/${item?.id}/close/`}
getData={handleUpdate}
page="quota"
access="CLose-Quota"
/>
)}
),
});
});
setPagesTableData(tableData);
}
}, [pagesData]);
return (
{
setPublicParams((prev) => ({ ...prev, ...(r as any) }));
setPagesInfo((prev) => ({ ...prev, page: 1 }));
}}
/>
{
openModal({
title: "جزئیات",
content: (
),
isFullSize: true,
});
}}
>
جزئیات
,
],
]}
/>
{
setPagesInfo(e);
}}
noSearch
count={pagesData?.count || 10}
isPaginated
title="سهمیه های فعال"
columns={getQuotaTableColumns({ includeOperations: true })}
rows={pagesTableData}
/>
);
};