import React, { useContext, useEffect, useState } from "react"; import { Button, FormControl, InputLabel, MenuItem, Select, TextField, Tooltip, Typography, } from "@mui/material"; import { useDispatch, useSelector } from "react-redux"; import axios from "axios"; import { RiFileExcel2Fill, RiSearchLine } from "react-icons/ri"; import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable"; import { Grid } from "../../../../components/grid/Grid"; import { DRAWER, LOADING_END, LOADING_START, } from "../../../../lib/redux/slices/appSlice"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; import { AppContext } from "../../../../contexts/AppContext"; import { SPACING } from "../../../../data/spacing"; import { getFaUserRole } from "../../../../utils/getFaUserRole"; import { ChainsActiveChainsOperations } from "../chains-active-chains-operations/ChainsActiveChainsOperations"; import { ChainsSubmitActiveChain } from "../chains-submit-active-chain/ChainsSubmitActiveChain"; import { convertToIranianTime } from "../../../../utils/formatTime"; export const ChainsActiveChains = () => { const dispatch = useDispatch(); const [selectedAge1, setSelectedAge1] = useState(0); const [selectedAge2, setSelectedAge2] = useState(0); const userKey = useSelector((state) => state.userSlice.userProfile.key); const handleTextChange = (event) => { setTextValue(event.target.value); }; const [openNotif] = useContext(AppContext); const [data, setData] = useState([]); const [totalRows, setTotalRows] = useState(0); const [perPage, setPerPage] = useState(10); const [textValue, setTextValue] = useState(""); const [page, setPage] = useState(1); const [tableData, setTableData] = useState([]); const fetchApiData = async (page) => { let response; dispatch(LOADING_START()); response = await axios.get( `poultry_hatching?search=filter&value=${textValue}&role=${getRoleFromUrl()}&page=${page}&page_size=${perPage}&chain=true` ); dispatch(LOADING_END()); setData(response.data.results); setTotalRows(response.data.count); }; const handlePageChange = (page) => { fetchApiData(page); setPage(page); }; const handlePerRowsChange = (perRows) => { setPerPage(perRows); setPage(1); }; const updateTable = () => { fetchApiData(page !== 0 ? page : 1); }; const killedNumber = (item) => { let killedNumber = ""; killedNumber = item.quantity - item.losses - item.leftOver; return killedNumber; }; useEffect(() => { const d = data?.map((item, i) => { let lastChange; return [ , page === 1 ? i + 1 : i + perPage * (page - 1) + 1, `${item?.chainCompany?.name} (${item?.chainCompany?.user.mobile})`, item.violation ? "متخلف" : "عادی", item.poultry.unitName, `${item.poultry.userprofile.fullName} (${item.poultry.userprofile.mobile})`, `${item?.poultry?.address.city.name}/${ item?.poultry?.cityOperator ? item?.poultry?.cityOperator : "بدون تعاونی" }`, item?.vetFarm?.vetFarmMobile ? `${item?.vetFarm?.vetFarmFullName} (${item?.vetFarm?.vetFarmMobile})` : "-", item.hall, item.period, convertToIranianTime(item?.createDate), convertToIranianTime(item?.date), item.chickenBreed, item.age, item?.quantity?.toLocaleString(), `${item.losses} (%${((item.losses * 100) / item.quantity).toFixed(0)})`, `${item?.totalCommitmentQuantity?.toLocaleString()}`, `${item?.governmentalQuantity?.toLocaleString()}`, `${item?.governmentalKilledQuantity?.toLocaleString()}`, `${item?.freeQuantity?.toLocaleString()}`, `${item?.freeKilledQuantity?.toLocaleString()}`, `${item?.outProvinceKilledQuantity?.toLocaleString()}`, `${item?.outProvinceKilledWeight?.toLocaleString()}`, item?.chainKilledQuantity?.toLocaleString(), item?.chainKilledWeight?.toLocaleString(), killedNumber(item)?.toLocaleString() + ` (%${((killedNumber(item) * 100) / item.quantity).toFixed(0)})`, `${item?.leftOver?.toLocaleString()} (%${( (item.leftOver * 100) / item.quantity ).toFixed(0)})`, item?.totalCommitment?.toLocaleString() + " کیلوگرم ", item?.governmentalKilledQuantity?.toLocaleString() + " کیلوگرم ", item?.freeKilledQuantity?.toLocaleString() + " کیلوگرم ", item?.totalAverageKilledWeight?.toLocaleString() + " کیلوگرم ", item?.totalKilledWeight?.toLocaleString() + " کیلوگرم ", item?.activeKill?.activeKill ? "دارد" : "ندارد", item?.activeKill?.countOfRequest ? item.activeKill.countOfRequest : "-", (lastChange = item.lastChange ? `${item.lastChange.fullName} (${getFaUserRole( item.lastChange.role )}) در تاریخ ${item.lastChange.date}` : "-"), (lastChange = item.latestHatchingChange && item.latestHatchingChange.date && `${item.latestHatchingChange.fullName} (${getFaUserRole( item.latestHatchingChange.role )}) در تاریخ ${item.latestHatchingChange.date}`), item.latestHatchingChange ? lastChange : "-", ]; }); setTableData(d); }, [data]); useEffect(() => { fetchApiData(1); }, [dispatch, perPage]); const handleSubmit = async (event) => { event.preventDefault(); dispatch(LOADING_START()); try { const response = await axios.get( `poultry_hatching/?role=${getRoleFromUrl()}&search=filter&value=${textValue}&chain=true` ); setData(response.data.results); setTotalRows(response.data.count); dispatch(LOADING_END()); } catch (error) { console.error("Error fetching data:", error); } }; const handleRemoveFilter = async (event) => { event.preventDefault(); setSelectedAge1(null); setSelectedAge2(null); try { const response = await axios.get( `poultry_hatching/?role=${getRoleFromUrl()}&chain=true&search=filter&value=` ); setData(response.data.results); setTotalRows(response.data.count); } catch (error) { console.error("Error fetching data:", error); } }; const handleSubmitSearchByAge = async (event) => { event.preventDefault(); dispatch(LOADING_START()); try { const response = await axios.get( `poultry_hatching?role=${getRoleFromUrl()}&age1=${selectedAge1}&age2=${selectedAge2}&chain=true` ); setData(response.data.results); setTotalRows(response.data.count); dispatch(LOADING_END()); } catch (error) { console.error("Error fetching data:", error); } }; const selectAges = Array.from({ length: 75 }, (_, i) => i + 1); const tableTitle = ( زنجیره های فعال
{/* */} {/* */}
جستجو براساس سن: از سن تا سن {/* */} {/* */}
); return ( {tableTitle} ); };