import React, { useContext, useEffect, useState } from "react"; import { Grid } from "../../../../components/grid/Grid"; import { Button } from "@mui/material"; import { Yup } from "../../../../lib/yup/yup"; import { AppContext } from "../../../../contexts/AppContext"; import { useDispatch, useSelector } from "react-redux"; import { DRAWER } from "../../../../lib/redux/slices/appSlice"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; import { useLocation } from "react-router-dom"; import { ROUTE_SLAUGHTER_INVENTORY_SELL_CARCASS_OUT_PROVINCE, ROUTE_SLAUGHTER_MANAGE_GUILDS_OUT_PROVINCE_TRUE, ROUTE_STEWARD_SALE_OUT_PROVINCE, } from "../../../../routes/routes"; import { handleSetFormDataFromTableDataForStewardAddBuyer, handleSubmitForStewardAddBuyer, InquiryForStewardAddBuyer, StewardAddBuyerForm, validationSchemaForStewardAddBuyer, } from "./InquiryForStewardAddBuyer"; import { useAddBuyer } from "./hooks/useAddBuyer"; import { slaughterGetCitiesService } from "../../../slaughter-house/services/slaughter-get-provinces"; import { handleSetFormDataFromTableDataForSlaughterAddBuyer, handleSubmitForSlaughterAddBuyer, InquiryForSlaughterAddBuyer, SlaughterAddBuyerForm, validationSchemaForSlaughterAddBuyer, } from "./InquiryForSlaughterAddBuyer"; import { useFormik } from "formik"; // userType enums = steward | steward_true | steward_legal | _true | _legal const getCurrentPage = (role, pathname) => { if (role === "Steward") { if (pathname === ROUTE_STEWARD_SALE_OUT_PROVINCE) { return "steward_add_buyer"; } } if (role === "KillHouse") { if (pathname === ROUTE_SLAUGHTER_INVENTORY_SELL_CARCASS_OUT_PROVINCE) { return "slaughter_add_buyer"; } if (pathname === ROUTE_SLAUGHTER_MANAGE_GUILDS_OUT_PROVINCE_TRUE) { return "slaughter_manage_add_buyer"; } } }; const getInitialValues = (page) => { const initialValues = { mobile: "", firstName: "", lastName: "", unit_name: "", province: "", city: "", }; if (page === "steward_add_buyer" || page === "slaughter_manage_add_buyer") { return initialValues; } else if (page === "slaughter_add_buyer") { initialValues.nationalId = ""; return initialValues; } return initialValues; }; export const StewardAddBuyer = ({ updateTable, isEdit = false, data, isRealPerson, buyerType = "", // buyerYype => "Guilds" | "Steward" }) => { const { killHouses, setKillhouses, stewards, setStewards, provinceData, cityData, setCityData, userData, setUserData, } = useAddBuyer(); const role = getRoleFromUrl(); const { pathname } = useLocation(); const { selectedSubUser } = useSelector((state) => state.userSlice); const page = getCurrentPage(role, pathname); const IS_STEWARD_ADD_BUYER = page === "steward_add_buyer"; const IS_SLAUGHTER_ADD_BUYER = page === "slaughter_add_buyer"; const IS_SLAUGHTER_MANAGE_ADD_BUYER = page === "slaughter_manage_add_buyer"; // const IS_MANAGE_STEWARDS = userType === "steward"; // const IS_ADMINX = role === "AdminX"; // const IS_OUT_PROVINCE = pathname.includes("out-province"); // const { inspectorGetKillHouses } = useSelector( // (state) => state.inspectorSlice // ); const [openNotif] = useContext(AppContext); const [notFound, setNotFound] = useState(false); const dispatch = useDispatch(); const formik = useFormik({ initialValues: getInitialValues(page), validationSchema: IS_STEWARD_ADD_BUYER ? validationSchemaForStewardAddBuyer : IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER ? validationSchemaForSlaughterAddBuyer(isRealPerson, isEdit) : Yup.object({}), }); useEffect(() => { formik.validateForm(); }, []); useEffect(() => { if (isEdit) { if (IS_STEWARD_ADD_BUYER) { handleSetFormDataFromTableDataForStewardAddBuyer(data, formik); } if (IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER) { handleSetFormDataFromTableDataForSlaughterAddBuyer(data, formik); } } }, [isEdit]); useEffect(() => { if (formik.values.province) { setCityData( [], dispatch(slaughterGetCitiesService(formik.values.province)).then( (r) => { setCityData(r.payload.data); } ) ); } }, [formik.values.province]); return ( {!isEdit ? ( IS_STEWARD_ADD_BUYER ? ( ) : IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER ? ( ) : null ) : null} {userData || notFound || isEdit ? ( IS_STEWARD_ADD_BUYER ? ( ) : IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER ? ( ) : null ) : null} {(userData || notFound || isEdit) && ( )} ); };