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}
);
};