import { Button, CircularProgress } from "@mui/material";
import { useTranslations } from "next-intl";
import { useMemo, useState } from "react";
import useRequest from "@/lib/app/hooks/useRequest";
import { EXPORT_LOAN_HISTORY } from "@/core/data/apiRoutes";
import moment from "jalali-moment";
import FileSaver from "file-saver";
import DescriptionIcon from "@mui/icons-material/Description";
const PrintExcel = ({ table }) => {
const t = useTranslations();
const [loading, setLoading] = useState(false);
const requestServer = useRequest({ auth: true, pending: false, success: { notification: { show: false } } });
const { columnFilters, columnFilterFns, sorting } = table.getState();
const columns = table.getAllColumns();
const filterParams = useMemo(() => {
const params = new URLSearchParams();
const filters = columnFilters.map((filter) => {
let datatype;
for (const i in columns) {
if (columns[i].id == filter.id) {
datatype = columns[i].columnDef.datatype;
}
}
return {
...filter,
fn: columnFilterFns[filter.id],
datatype: datatype,
};
});
params.set("start", "0");
params.set("filters", JSON.stringify(filters ?? []));
params.set("sorting", JSON.stringify(sorting ?? []));
return params;
}, [columnFilters, columnFilterFns, sorting, columns]);
const clickHandler = () => {
setLoading(true);
requestServer(`${EXPORT_LOAN_HISTORY}?${filterParams}`, "get", {
auth: true,
requestOptions: { responseType: "blob" },
})
.then((response) => {
const filename = `خروجی کارتابل نظارت تاریخ_${moment().format("jYYYY_jMM_jDD")}.xlsx`;
FileSaver.saveAs(response.data, filename);
})
.catch(() => {})
.finally(() => {
setLoading(false);
});
};
return (
: }
onClick={clickHandler}
>
{t("LoanHistory.excel_report")}
);
};
export default PrintExcel;