develop => add buyer discovered all types of user

This commit is contained in:
2026-02-01 10:45:12 +03:30
parent 2705e226e1
commit 331fb98625
4 changed files with 826 additions and 24 deletions

View File

@@ -8,6 +8,10 @@ import { DRAWER } from "../../../../lib/redux/slices/appSlice";
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
import { useLocation } from "react-router-dom";
import {
ROUTE_ADMINX_ROUTE_MANAGE_STEWARDS_OUT_PROVINCE_LEGAL,
ROUTE_ADMINX_ROUTE_MANAGE_STEWARDS_OUT_PROVINCE_TRUE,
ROUTE_ADMINX_ROUTE_OUT_PROVINCE_LEGAL_GUILDS,
ROUTE_ADMINX_ROUTE_OUT_PROVINCE_TRUE_GUILDS,
ROUTE_SLAUGHTER_INVENTORY_SELL_CARCASS_OUT_PROVINCE,
ROUTE_SLAUGHTER_MANAGE_GUILDS_OUT_PROVINCE_TRUE,
ROUTE_STEWARD_SALE_OUT_PROVINCE,
@@ -29,6 +33,15 @@ import {
validationSchemaForSlaughterAddBuyer,
} from "./InquiryForSlaughterAddBuyer";
import { useFormik } from "formik";
import {
AdminAddBuyerForm,
handleSetFormDataFromTableDataForAdminAddBuyer,
handleSubmitForAdminAddBuyer,
InquiryForAdminAddBuyer,
validationSchemaForAdminAddBuyer,
} from "./InquiryForAdminAddBuyer";
import { inspectorGetKillHousesService } from "../../../inspector/services/inspector-get-kill-houses";
import { slaughterGetStewardsForAllocateService } from "../../../slaughter-house/services/slaughter-get-guilds-for-allocate";
// userType enums = steward | steward_true | steward_legal | _true | _legal
@@ -46,6 +59,17 @@ const getCurrentPage = (role, pathname) => {
return "slaughter_manage_add_buyer";
}
}
if (role === "AdminX") {
const routes = [
ROUTE_ADMINX_ROUTE_OUT_PROVINCE_TRUE_GUILDS,
ROUTE_ADMINX_ROUTE_OUT_PROVINCE_LEGAL_GUILDS,
ROUTE_ADMINX_ROUTE_MANAGE_STEWARDS_OUT_PROVINCE_LEGAL,
ROUTE_ADMINX_ROUTE_MANAGE_STEWARDS_OUT_PROVINCE_TRUE,
];
if (routes.some((r) => r === pathname)) {
return "admin_add_buyer";
}
}
};
const getInitialValues = (page) => {
@@ -60,8 +84,16 @@ const getInitialValues = (page) => {
if (page === "steward_add_buyer" || page === "slaughter_manage_add_buyer") {
return initialValues;
} else if (page === "slaughter_add_buyer") {
initialValues.nationalId = "";
return initialValues;
return {
...initialValues,
nationalId: "",
};
} else if (page === "admin_add_buyer") {
return {
...initialValues,
role_key: "",
type: "",
};
}
return initialValues;
};
@@ -74,9 +106,18 @@ export const StewardAddBuyer = ({
buyerType = "",
// buyerYype => "Guilds" | "Steward"
}) => {
const role = getRoleFromUrl();
const { pathname } = useLocation();
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_ADMIN_ADD_BUYER = page === "admin_add_buyer";
const {
killHouses,
setKillhouses,
stewards,
setStewards,
provinceData,
@@ -84,21 +125,10 @@ export const StewardAddBuyer = ({
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";
} = useAddBuyer(page);
const { selectedSubUser } = useSelector((state) => state.userSlice);
// 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();
@@ -109,12 +139,32 @@ export const StewardAddBuyer = ({
? validationSchemaForStewardAddBuyer
: IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER
? validationSchemaForSlaughterAddBuyer(isRealPerson, isEdit)
: IS_ADMIN_ADD_BUYER
? validationSchemaForAdminAddBuyer(isRealPerson, isEdit)
: Yup.object({}),
});
useEffect(() => {
formik.validateForm();
}, []);
if (isEdit) {
formik.validateForm();
}
}, [isEdit]);
useEffect(() => {
if (IS_ADMIN_ADD_BUYER) {
if (formik.values.type === "KillHouse") {
dispatch(inspectorGetKillHousesService());
} else {
dispatch(
slaughterGetStewardsForAllocateService({
free: true,
})
).then((r) => {
setStewards(r.payload.data || []);
});
}
}
}, [formik.values.type]);
useEffect(() => {
if (isEdit) {
@@ -124,6 +174,9 @@ export const StewardAddBuyer = ({
if (IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER) {
handleSetFormDataFromTableDataForSlaughterAddBuyer(data, formik);
}
if (IS_ADMIN_ADD_BUYER) {
handleSetFormDataFromTableDataForAdminAddBuyer(data, formik);
}
}
}, [isEdit]);
@@ -167,6 +220,16 @@ export const StewardAddBuyer = ({
isRealPerson={isRealPerson}
provinceData={provinceData}
/>
) : IS_ADMIN_ADD_BUYER ? (
<InquiryForAdminAddBuyer
notFound={notFound}
setNotFound={setNotFound}
setUserData={setUserData}
formik={formik}
isEdit={isEdit}
isRealPerson={isRealPerson}
provinceData={provinceData}
/>
) : null
) : null}
{userData || notFound || isEdit ? (
@@ -185,6 +248,16 @@ export const StewardAddBuyer = ({
notFound={notFound}
isRealPerson={isRealPerson}
/>
) : IS_ADMIN_ADD_BUYER ? (
<AdminAddBuyerForm
formik={formik}
provinceData={provinceData}
cityData={cityData}
notFound={notFound}
isRealPerson={isRealPerson}
killHouses={killHouses}
stewards={stewards}
/>
) : null
) : null}
{(userData || notFound || isEdit) && (
@@ -233,6 +306,19 @@ export const StewardAddBuyer = ({
buyerType
);
}
if (IS_ADMIN_ADD_BUYER) {
handleSubmitForAdminAddBuyer(
formik,
dispatch,
isEdit,
data,
updateTable,
openNotif,
DRAWER,
isRealPerson,
buyerType
);
}
}}
>
{isEdit ? "ویرایش" : "ثبت"}