import { useContext, useEffect, useState } from "react"; import { Grid } from "../../../../components/grid/Grid"; import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable"; import { useDispatch, useSelector } from "react-redux"; import { Button, FormControl, InputLabel, MenuItem, Select, TextField, Tooltip, } from "@mui/material"; import { LOADING_END, LOADING_START, } from "../../../../lib/redux/slices/appSlice"; import moment from "moment"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; import axios from "axios"; import { DatePicker } from "@mui/x-date-pickers"; import { formatJustDate, formatTime } from "../../../../utils/formatTime"; import { RiSearchLine } from "react-icons/ri"; import { ProvinceDispenserSaleWithInInventory } from "../province-dispenser-sale-with-in-province-inventory/ProvinceDispenserSaleWithInInventory"; import { AppContext } from "../../../../contexts/AppContext"; import { provinceDispenserWithInGetDashboard } from "../../services/province-dispenser-with-in-sale-inventory-dashboard"; import { ProvinceDispenserSaleWithInProvinceOperation } from "../province-dispenser-sale-with-in-province-operation/ProvinceDispenserSaleWithInProvinceOperation"; import { RiFileExcel2Fill } from "react-icons/ri"; import { provinceDispenserGetKillHouseService } from "../../services/province-dispenser-get-kill-house"; import ShowImage from "../../../../components/show-image/ShowImage"; import { getAllocationType } from "../../../../utils/getAllocationType"; export const ProvinceDispenserAcceptedSaleWithInProvince = ({ priceInfo }) => { const dispatch = useDispatch(); const [, , selectedDate1, setSelectedDate1, selectedDate2, setSelectedDate2] = useContext(AppContext); const [dashboardData, setDashboardData] = useState([]); const [openNotif] = useContext(AppContext); const userKey = useSelector((state) => state.userSlice.userProfile.key); 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 [killHouses, setKillHouses] = useState([]); const [selectedKillHouse, setSelectedKillHouse] = useState(null); const fetchApiData = async (page) => { dispatch(LOADING_START()); try { const response = await axios.get( `/in-province-allocation/?search=filter&value=${textValue}&role=${getRoleFromUrl()}&date1=${selectedDate1}&date2=${selectedDate2}&trash=false&page=${ page || 1 }&page_size=${perPage}&type=KillHouse${ selectedKillHouse ? `&kill_house_key=${selectedKillHouse}` : "&kill_house_key=all" }` ); setData(response.data.results); setTotalRows(response.data.count); } catch (error) { console.error("Error fetching data:", error); } finally { dispatch(LOADING_END()); } }; const fetchKillHouses = () => { dispatch(provinceDispenserGetKillHouseService()).then((r) => { setKillHouses(r.payload.data); }); }; const handlePageChange = (page) => { fetchApiData(page); setPage(page); }; const handleTextChange = (event) => { setTextValue(event.target.value); }; const getAllocationData = (item) => { if (!item) return "-"; switch (item?.allocationType) { case "killhouse_killhouse": return `${item?.toKillHouse?.name || "-"} - ${ item?.toKillHouse?.killHouseOperator?.user?.fullname || "-" } (${item?.toKillHouse?.killHouseOperator?.user?.mobile || "-"})`; case "killhouse_steward": return `${item?.toSteward?.guildsName || "-"} - ${ item?.toSteward?.user?.fullname || "-" } (${item?.toSteward?.user?.mobile || "-"})`; case "killhouse_guild": return `${item?.toGuilds?.guildsName || "-"} - ${ item?.toGuilds?.user?.fullname || "-" } (${item?.toGuilds?.user?.mobile || "-"})`; case "ColdHouse": return `${item?.toColdHouse?.name || "-"}`; default: return `${item?.toKillHouse?.name || "-"} - ${ item?.toKillHouse?.killHouseOperator?.user?.fullname || "-" } (${item?.toKillHouse?.killHouseOperator?.user?.mobile || "-"})`; } }; const handlePerRowsChange = (perRows) => { setPerPage(perRows); setPage(1); }; const fetchDashboardData = () => { dispatch( provinceDispenserWithInGetDashboard({ search: "filter", role: getRoleFromUrl(), selectedDate1, selectedDate2, kill_house_key: selectedKillHouse || "all", trash: false, }) ).then((r) => { setDashboardData(r.payload.data); }); }; useEffect(() => { const d = data?.map((item, i) => { return [ page === 1 ? i + 1 : i + perPage * (page - 1) + 1, item?.date ? formatTime(item?.date) : "-", item?.productionDate ? formatJustDate(item?.productionDate) : "-", item?.distributionType === "web" ? "سایت" : item?.distributionType === "app" ? "موبایل" : item?.distributionType === "pos" ? "پوز" : item?.distributionType, getAllocationType(item), `${item?.killHouse?.killHouseOperator?.user?.fullname?.toLocaleString()} ${item?.killHouse?.name?.toLocaleString()} ${ item?.killHouse?.killHouseOperator?.user?.mobile?.toLocaleString() || "-" }`, getAllocationData(item), item?.sellType === "exclusive" ? "اختصاصی" : "آزاد", item?.quota === "governmental" ? "دولتی" : item?.quota === "free" ? "آزاد" : "-", item?.approvedPriceStatus ? "دولتی" : "آزاد", (item?.amount?.toLocaleString() || "0") + " ریال", (item?.totalAmount?.toLocaleString() || "0") + " ریال", item?.weightOfCarcasses?.toLocaleString() || "0", item?.reciverWeightOfCarcasses?.toLocaleString() || "0", item?.loggedRegistrationCode || "-", item?.registrationCode ? "ارسال شده" : "ارسال نشده", , item?.receiverState === "accepted" || item?.loggedRegistrationCode ? "تایید شده" : item?.receiverState === "rejected" ? "رد شده" : item?.activeExpireDateTime && !item?.loggedRegistrationCode ? "در انتظار ورود کد احراز" : "در انتظار تایید", , ]; }); setTableData(d); }, [data, page, perPage, priceInfo]); useEffect(() => { fetchApiData(1); fetchDashboardData(); }, [dispatch, selectedDate1, selectedDate2, perPage, selectedKillHouse]); useEffect(() => { fetchKillHouses(); }, [dispatch]); const handleSubmit = async (event) => { event.preventDefault(); fetchApiData(1); fetchDashboardData(); }; return ( ( )} value={selectedDate1} onChange={(newValue) => { setSelectedDate1(moment(newValue).format("YYYY-MM-DD")); }} /> ( )} value={selectedDate2} onChange={(newValue) => { setSelectedDate2(moment(newValue).format("YYYY-MM-DD")); }} />
کشتارگاه
); };