diff --git a/package.json b/package.json
index a560c0c..229374d 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"date-fns-jalali": "^2.13.0-0",
"dayjs": "^1.11.9",
"eslint": "8.36.0",
+ "file-saver": "^2.0.5",
"formik": "^2.2.9",
"fs-extra": "^11.1.1",
"image-resize": "^1.3.2",
diff --git a/src/components/dashboard/reports/ExcelExport/index.jsx b/src/components/dashboard/reports/ExcelExport/index.jsx
index fd3a789..2ab8e35 100644
--- a/src/components/dashboard/reports/ExcelExport/index.jsx
+++ b/src/components/dashboard/reports/ExcelExport/index.jsx
@@ -2,42 +2,108 @@ import {Accordion, AccordionDetails, AccordionSummary, Box, Button, Stack, Typog
import FileUploadIcon from '@mui/icons-material/FileUpload';
import AssignmentIcon from '@mui/icons-material/Assignment';
import {useTranslations} from "next-intl";
+import ProvinceFilter from "@/components/dashboard/reports/Filter/ProvinceFilter";
+import YearFilter from "@/components/dashboard/reports/Filter/YearFilter";
+import {useState} from "react";
+import {useFormik} from "formik";
+import {GET_EXPORT} from "@/core/data/apiRoutes";
+import moment from "jalali-moment";
+import FileSaver from 'file-saver';
+import useRequest from "@/lib/app/hooks/useRequest";
const ExcelExport = () => {
const t = useTranslations();
+ const requestServer = useRequest()
+ const filterItem = [
+ {type: "province", type_fa: "استان", multiple: false},
+ {type: "year", type_fa: "سال", multiple: false}
+ ];
+ const filter_by_province = filterItem.find((item) => item.type === "province");
+ const filter_by_year = filterItem.find((item) => item.type === "year");
+
+ const [filteredText, setFilteredText] = useState({province: "", year: ""});
+
+ const formik = useFormik({
+ initialValues: {
+ ...(filter_by_year && {
+ date: filter_by_year.multiple ? [] : `${moment().format('jYYYY')}`
+ }),
+ ...(filter_by_province && {
+ province_id: filter_by_province.multiple ? [] : ""
+ }),
+ from_date: "",
+ to_date: ""
+ }, onSubmit: (values, {setSubmitting}) => {
+ const province = values.province_id;
+ const fields = [
+ values.from_date ? {key: "from_date", value: values.from_date} : null,
+ values.to_date ? {key: "to_date", value: values.to_date} : null,
+ ...(Array.isArray(province)
+ ? province.length !== 0
+ ? province.map((item, index) => ({key: `province_id[${index}]`, value: item}))
+ : []
+ : province
+ ? [{key: "province_id", value: province}]
+ : []
+ ),
+ ].filter(Boolean);
+ const queryString = fields.length !== 0
+ ? `?${fields.map((option) => `${option.key}=${option.value}`).join('&')}`
+ : '';
+ requestServer(`${GET_EXPORT}${queryString}`, 'GET', {auth: true, requestOptions: {responseType: 'blob'}})
+ .then((response) => {
+ const filename = `گزارش درخواست های وام ناوگان تاریخ_${moment().format('jYYYY_jMM_jDD')}.xlsx`;
+ FileSaver.saveAs(response.data, filename);
+ }).catch(() => {
+ }).finally(() => {
+ setSubmitting(false);
+ });
+ },
+ });
return (
-
-
-
-
-
-
- {t("filters.excel_export")}
-
+
+
+
+
+
+
+
+ {t("filters.excel_export")}
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {filter_by_province ?
+ : ""
+ }
+ {filter_by_year ?
+ : ""
+ }
+
+
+
+
+
+
+
)
};
diff --git a/src/components/dashboard/reports/Filter/ProvinceFilter.jsx b/src/components/dashboard/reports/Filter/ProvinceFilter.jsx
index 12ec7dc..16a1133 100644
--- a/src/components/dashboard/reports/Filter/ProvinceFilter.jsx
+++ b/src/components/dashboard/reports/Filter/ProvinceFilter.jsx
@@ -1,6 +1,17 @@
-import {Box, FormControl, InputLabel, MenuItem, OutlinedInput, Select, Typography} from "@mui/material";
+import {
+ Box,
+ FormControl,
+ IconButton,
+ InputAdornment,
+ InputLabel,
+ MenuItem,
+ OutlinedInput,
+ Select,
+ Typography
+} from "@mui/material";
import {useTranslations} from "next-intl";
import useProvince from "@/lib/app/hooks/useProvince";
+import ClearIcon from '@mui/icons-material/Clear';
const provinceList = [
{name: "قزوین", id: 1},
@@ -32,6 +43,9 @@ const ProvinceFilter = ({formik, multiple, setFilteredText}) => {
}));
}
};
+ const needAdorment = multiple
+ ? formik.values.province_id.length === 0 :
+ formik.values.province_id === "";
return (
{t("filters.choose_province")}
@@ -48,7 +62,7 @@ const ProvinceFilter = ({formik, multiple, setFilteredText}) => {
renderValue={multiple ? (selected) => (
{selected.map((value) => {
const selectedProvince = provinceList.find(province => province.id === value);
@@ -60,6 +74,19 @@ const ProvinceFilter = ({formik, multiple, setFilteredText}) => {
})}
) : undefined}
+ endAdornment={
+ !needAdorment ?
+
+ multiple
+ ? formik.setFieldValue('province_id', [])
+ : formik.setFieldValue('province_id', "")
+ }
+ size="small">
+
+
+ : null
+ }
>
{isLoadingProvinceList ? (