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"));
}}
/>
{/* Tabs for filtering by receiver state */}
setStatusTab(value)}
sx={{ borderBottom: 1, borderColor: "divider", mb: 1 }}
>
row.slice(0, -1))
: dataTable
}
/>
);
};