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" && ( */}
{/* )} */}
);
};