import { Button, TextField, Typography, Tabs, Tab } from "@mui/material"; import { DatePicker } from "@mui/x-date-pickers"; import moment from "moment/moment"; import { useContext, useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { Grid } from "../../../components/grid/Grid"; import { AppContext } from "../../../contexts/AppContext"; import { SPACING } from "../../../data/spacing"; import { LOADING_END, LOADING_START, OPEN_MODAL, } from "../../../lib/redux/slices/appSlice"; import { GuildReceiveBarOperation } from "../../guild/components/GuildReceiveBarOperation"; import { senfGetAllocationDashboardService } from "../../guild/services/senf-get-allocation-dashboard"; import { senfGetInventoryAllocatedService } from "../../guild/services/senf-get-inventory-allocated"; import { guildSalesInfoDashboardService } from "../../guild/services/guild-sales-info-dashboard"; import { getFaUserRole } from "../../../utils/getFaUserRole"; import { formatJustDate } from "../../../utils/formatTime"; import { checkPathStartsWith } from "../../../utils/checkPathStartsWith"; import ResponsiveTable from "../../../components/responsive-table/ResponsiveTable"; import { RiSearchLine } from "react-icons/ri"; export const SenfStock = () => { const dispatch = useDispatch(); const [dataTable, setDataTable] = useState([]); const [statusTab, setStatusTab] = useState("pending"); const [text, setText] = useState(""); const [, , selectedDate1, setSelectedDate1, selectedDate2, setSelectedDate2] = useContext(AppContext); const { senfGetInventoryStock, senfGetInventoryAllocated, guildSalesInfoDashboard, } = useSelector((state) => state.generalSlice); const selectedSubUser = useSelector( (state) => state.userSlice.selectedSubUser ); const handleRefreshServices = () => { dispatch( senfGetAllocationDashboardService({ date1: selectedDate1, date2: selectedDate2, role_key: selectedSubUser?.key || "", search: text, }) ); dispatch( senfGetInventoryAllocatedService({ date1: selectedDate1, date2: selectedDate2, role_key: selectedSubUser?.key || "", type: statusTab, search: text, }) ); dispatch( guildSalesInfoDashboardService({ role_key: selectedSubUser?.key, }) ); }; useEffect(() => { handleRefreshServices(); }, [selectedDate1, selectedDate2, selectedSubUser?.key, statusTab]); useEffect(() => { const items = senfGetInventoryAllocated?.results || []; if (items.length > 0) { const d = items.map((item, i) => { let state = ""; if (item?.receiverState === "accepted") { state = "تحویل گرفته شده"; } else if (item?.receiverState === "rejected") { state = "رد شده"; } else { state = "در انتظار تحویل"; } const sellerRoleFa = getFaUserRole(item?.seller_type); const sellerName = item?.stewards?.user?.fullname || item?.stewards?.name || item?.killHouse?.name || item?.toKillHouse?.name || "-"; const sellerMobile = item?.stewards?.user?.mobile || item?.killHouse?.user?.mobile || item?.toKillHouse?.user?.mobile || "-"; return [ i + 1, `${sellerRoleFa} ${sellerName} (${sellerMobile})`, formatJustDate(item.date), (item?.weightOfCarcasses || 0).toLocaleString() + " کیلوگرم", item?.quota === "free" ? "آزاد" : "دولتی", {/* {item?.receiverRealNumberOfCarcasses?.toLocaleString() + " قطعه"} */} {item?.receiverRealWeightOfCarcasses?.toLocaleString() + " کیلوگرم"} {/* {item?.receiverState === "pending" && ( )} */} , {item.receiverState === "pending" ? ( ) : ( state )} , ]; }); setDataTable(d); } else { setDataTable([]); } }, [senfGetInventoryAllocated, dispatch]); const handleSubmit = async (event) => { event.preventDefault(); dispatch(LOADING_START()); try { dispatch( senfGetAllocationDashboardService({ date1: selectedDate1, date2: selectedDate2, role_key: checkPathStartsWith("senf") ? selectedSubUser?.key : "", search: text, }) ); dispatch( senfGetInventoryAllocatedService({ date1: selectedDate1, date2: selectedDate2, role_key: checkPathStartsWith("senf") ? selectedSubUser?.key : "", type: statusTab, search: text, }) ); } catch (error) { console.error("Error fetching data:", error); } finally { dispatch(LOADING_END()); } }; return ( ( )} value={selectedDate1} onChange={(e) => { setSelectedDate1(moment(e).format("YYYY-MM-DD")); }} /> ( )} value={selectedDate2} onChange={(e) => { setSelectedDate2(moment(e).format("YYYY-MM-DD")); }} />
setText(e.target.value)} />
{/* Tabs for filtering by receiver state */} setStatusTab(value)} sx={{ borderBottom: 1, borderColor: "divider", mb: 1 }} > row.slice(0, -1)) : dataTable } />
); };