import { useCallback } from "react"; import { Button, TextField, Tooltip, Typography } from "@mui/material"; import { DatePicker } from "@mui/x-date-pickers"; import axios from "axios"; 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 { DRAWER } from "../../../../lib/redux/slices/appSlice"; import { formatJustDate, formatTime } from "../../../../utils/formatTime"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; // import { EnterAuthCodeDirectBuy } from "../enter-auth-code-direct-buy/EnterAuthCodeDirectBuy"; import { SlaughterFreeBuyOperations } from "../slaughter-free-buy-operations/SlaughterFreeBuyOperations"; import { SlaughterSubmitFreeBuy } from "../slaughter-submit-free-buy/SlaughterSubmitFreeBuy"; import { RiFileExcel2Fill, RiSearchLine } from "react-icons/ri"; import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable"; import { paymentGetDeadLines } from "../../services/payment-get-deadlines"; import EditVerificationDirectBuy from "../edit-verification-direct-buy/EditVerificationDirectBuy"; import SlaughterBuyPdfKillRequest from "../../../province/components/province-settlement-pdf-kill-request/ProvinceSettlementPdfKillRequest"; import { slaughterGetFreeBuyDashboardService } from "../../services/slaughter-free-buy-dashboard"; import { slaughterGetFreeBuyRequests } from "../../services/slaughter-get-free-buy-requests"; import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith"; export const SlaughterFreeBuy = () => { const dispatch = useDispatch(); const selectedSubUser = useSelector( (state) => state.userSlice.selectedSubUser ); const [, , selectedDate1, setSelectedDate1, selectedDate2, setSelectedDate2] = useContext(AppContext); const [poultryCodeMandatory, setPoultryCodeMandatory] = useState(false); const [dashboardData, setDashboardData] = useState([]); const userKey = useSelector((state) => state.userSlice.userProfile.key); useEffect(() => { const currentDate = moment(new Date()).format("YYYY-MM-DD"); setSelectedDate1(currentDate); setSelectedDate2(currentDate); }, []); useEffect(() => { dispatch( paymentGetDeadLines({ role_key: checkPathStartsWith("slaughter") ? selectedSubUser?.key || "" : "", }) ).then((response) => { setPoultryCodeMandatory(response.payload.data?.poultryCodeMandatory); }); }, [selectedSubUser?.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 handleTextChange = (event) => { setTextValue(event.target.value); }; const getDashboardData = () => { dispatch( slaughterGetFreeBuyDashboardService({ direct_buying: true, date1: selectedDate1, date2: selectedDate2, role: getRoleFromUrl(), search: "filter", value: textValue, role_key: checkPathStartsWith("slaughter") ? selectedSubUser?.key || "" : "", }) ).then((r) => { setDashboardData(r.payload.data); }); }; const fetchApiData = useCallback( async (pageNumber = page) => { try { const response = await dispatch( slaughterGetFreeBuyRequests({ date1: selectedDate1, date2: selectedDate2, value: textValue || "", page: pageNumber, page_size: perPage, role_key: checkPathStartsWith("slaughter") ? selectedSubUser?.key || "" : "", }) ); if (response.payload?.data) { getDashboardData(); setData(response.payload.data.results); setTotalRows(response.payload.data.count); } } catch (error) { console.error("Error fetching data:", error); } }, [ selectedDate1, selectedDate2, perPage, page, textValue, dispatch, selectedSubUser?.key, ] ); const updateTable = useCallback(() => { fetchApiData(1); }, [fetchApiData]); useEffect(() => { fetchApiData(1); }, [fetchApiData]); const handlePerRowsChange = (perRows) => { setPerPage(perRows); setPage(1); }; const handlePageChange = (page) => { fetchApiData(page, textValue); }; const handleSubmit = async (event) => { event.preventDefault(); try { const response = await dispatch( slaughterGetFreeBuyRequests({ date1: selectedDate1, date2: selectedDate2, value: textValue || "", role_key: checkPathStartsWith("slaughter") ? selectedSubUser?.key || "" : "", }) ); if (response.payload?.data) { setData(response.payload.data.results); setTotalRows(response.payload.data.count); } } catch (error) { console.error("Error fetching data:", error); } }; const getItemState = (item) => { let state = ""; if (item.finalAccept === false) { state = "در انتظار ارسال به استان"; } else if (poultryCodeMandatory && !item?.inputDirectBuyingCode) { state = "در انتظار ورود کد احراز"; } else if (item?.directBuyingState === "rejected") { state = "رد شده"; } else if (item?.directBuyingState === "accepted") { state = "تایید شده"; } else if (item?.directBuyingState === "deleted") { state = "حذف شده"; } else { state = "در انتظار تایید استان"; } return state; }; useEffect(() => { const d = data?.map((item, i) => { return [ page === 1 ? i + 1 : i + perPage * (page - 1) + 1, item?.createDate ? formatTime(item?.createDate) : "-", item?.reciveDate ? formatJustDate(item?.reciveDate) : "-", `${item.killHouse.name} (${item.killHouse.killHouseOperator.user.mobile})`, item?.freeDirectBuying ? "آزاد" : "دولتی", item?.slaughterHouse ? item?.slaughterHouse?.name : item?.killHouse?.name, `${item?.poultry?.userprofile?.fullName} (${item?.poultry?.userprofile?.mobile})`, item.poultryHatching?.chickenAge || "-", `${item.chickenBreed ? item.chickenBreed : "-"}`, item.killCapacity?.toLocaleString(), item.IndexWeight, (item.IndexWeight * item.killCapacity)?.toLocaleString(), item?.amount?.toLocaleString(), {item?.directBuyingState === "pending" && item?.finalAccept === true && (getRoleFromUrl() === "KillHouse" || getRoleFromUrl() === "AdminX" || getRoleFromUrl() === "SuperAdmin" || getRoleFromUrl() === "ProvinceOperator") && poultryCodeMandatory ? ( ) : ( {item?.inputDirectBuyingCode || "-"} )} , item?.paymentDeadlineDate ? formatJustDate(item?.paymentDeadlineDate) : "-", getItemState(item), item?.directBuyingState === "pending" ? "-" : item?.automaticAccept ? "سیستم" : "اپراتور", item?.inputDirectBuyingCode || (!item?.freeDirectBuying && item?.directBuyingState === "accepted") ? ( ) : ( "-" ), , ]; }); setTableData(d); }, [data]); return ( {/* {getRoleFromUrl() === "KillHouse" && ( */} {/* )} */}
( )} value={selectedDate1} onChange={(e) => { setSelectedDate1(moment(e).format("YYYY-MM-DD")); }} /> ( )} value={selectedDate2} onChange={(e) => { setSelectedDate2(moment(e).format("YYYY-MM-DD")); }} />
); };