Fix: steward add buyer cleaner
This commit is contained in:
@@ -83,7 +83,13 @@ export const getInitialValues = (guildDataForEdit) => {
|
|||||||
gender: userDataFromEdit.gender || "",
|
gender: userDataFromEdit.gender || "",
|
||||||
person_city: userDataFromEdit.city || cityDataFromEdit?.name || "",
|
person_city: userDataFromEdit.city || cityDataFromEdit?.name || "",
|
||||||
city: cityDataFromEdit?.id ?? cityDataFromEdit?.key ?? "",
|
city: cityDataFromEdit?.id ?? cityDataFromEdit?.key ?? "",
|
||||||
is_alive: userDataFromEdit.isAlive || "",
|
is_alive:
|
||||||
|
userDataFromEdit.isAlive === true || userDataFromEdit.is_alive === true
|
||||||
|
? "بلی"
|
||||||
|
: userDataFromEdit.isAlive === false ||
|
||||||
|
userDataFromEdit.is_alive === false
|
||||||
|
? "خیر"
|
||||||
|
: "",
|
||||||
mobile: userDataFromEdit.mobile || "",
|
mobile: userDataFromEdit.mobile || "",
|
||||||
|
|
||||||
// Guild Information Fields (from guild object in edit mode)
|
// Guild Information Fields (from guild object in edit mode)
|
||||||
@@ -99,7 +105,8 @@ export const getInitialValues = (guildDataForEdit) => {
|
|||||||
union_name: guildDataForEdit?.unionName || "",
|
union_name: guildDataForEdit?.unionName || "",
|
||||||
postal_code: addressDataFromEdit.postalCode || "",
|
postal_code: addressDataFromEdit.postalCode || "",
|
||||||
phone_number: guildDataForEdit?.phoneNumber || "",
|
phone_number: guildDataForEdit?.phoneNumber || "",
|
||||||
license_number: guildDataForEdit?.licenseNumber || "",
|
license_number:
|
||||||
|
guildDataForEdit?.license_number ?? guildDataForEdit?.licenseNumber ?? "",
|
||||||
// شناسه ملی شرکت: from company_identifier when dbRegister true
|
// شناسه ملی شرکت: from company_identifier when dbRegister true
|
||||||
guild_national_id:
|
guild_national_id:
|
||||||
guildDataForEdit?.company_identifier ??
|
guildDataForEdit?.company_identifier ??
|
||||||
@@ -142,7 +149,7 @@ export const getInitialValues = (guildDataForEdit) => {
|
|||||||
company_identifier: guildDataForEdit?.companyIdentifier || "",
|
company_identifier: guildDataForEdit?.companyIdentifier || "",
|
||||||
type_activity_name: guildDataForEdit?.typeActivityName || "",
|
type_activity_name: guildDataForEdit?.typeActivityName || "",
|
||||||
|
|
||||||
// Guilds array for validation (edit mode)
|
// Guilds array for validation (edit mode) – must include license_number for schema
|
||||||
guilds: guildDataForEdit
|
guilds: guildDataForEdit
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
@@ -158,6 +165,10 @@ export const getInitialValues = (guildDataForEdit) => {
|
|||||||
: typeof guildDataForEdit?.isGuild === "boolean"
|
: typeof guildDataForEdit?.isGuild === "boolean"
|
||||||
? guildDataForEdit.isGuild
|
? guildDataForEdit.isGuild
|
||||||
: false,
|
: false,
|
||||||
|
license_number:
|
||||||
|
guildDataForEdit?.license_number ??
|
||||||
|
guildDataForEdit?.licenseNumber ??
|
||||||
|
"",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
: [],
|
: [],
|
||||||
|
|||||||
@@ -229,6 +229,16 @@ const LegalGuildForm = ({
|
|||||||
style={{ width: "100%" }}
|
style={{ width: "100%" }}
|
||||||
disablePortal
|
disablePortal
|
||||||
id="province"
|
id="province"
|
||||||
|
value={
|
||||||
|
provinces?.find((p) => p.key === formik.values.province)
|
||||||
|
? {
|
||||||
|
id: formik.values.province,
|
||||||
|
label: provinces.find(
|
||||||
|
(p) => p.key === formik.values.province
|
||||||
|
)?.name,
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
options={
|
options={
|
||||||
provinces
|
provinces
|
||||||
? provinces.map((i) => ({
|
? provinces.map((i) => ({
|
||||||
@@ -255,6 +265,16 @@ const LegalGuildForm = ({
|
|||||||
disabled={!formik.values.province}
|
disabled={!formik.values.province}
|
||||||
disablePortal
|
disablePortal
|
||||||
id="city"
|
id="city"
|
||||||
|
value={
|
||||||
|
cities?.find((c) => c.key === formik.values.city)
|
||||||
|
? {
|
||||||
|
id: formik.values.city,
|
||||||
|
label: cities.find(
|
||||||
|
(c) => c.key === formik.values.city
|
||||||
|
)?.name,
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
options={
|
options={
|
||||||
cities
|
cities
|
||||||
? cities.map((i) => ({ id: i.key, label: i.name }))
|
? cities.map((i) => ({ id: i.key, label: i.name }))
|
||||||
@@ -387,17 +407,17 @@ export const ProvinceLegalGuildsForm = ({ updateTable, item, userType }) => {
|
|||||||
national_id: item?.user?.nationalId || "",
|
national_id: item?.user?.nationalId || "",
|
||||||
first_name: item?.user?.firstName || "",
|
first_name: item?.user?.firstName || "",
|
||||||
last_name: item?.user?.lastName || "",
|
last_name: item?.user?.lastName || "",
|
||||||
province: item?.address?.province?.name || "",
|
province: "",
|
||||||
city: item?.address?.city?.name || "",
|
city: "",
|
||||||
address: item?.address?.address || "",
|
address: "",
|
||||||
mobile: item?.user?.mobile || "",
|
mobile: item?.user?.mobile || "",
|
||||||
type_activity: item?.typeActivity || "",
|
type_activity: item?.typeActivity || "",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (IS_STEWARD) {
|
if (IS_STEWARD) {
|
||||||
userInitialValue["name"] = item?.name;
|
userInitialValue["name"] = item?.guilds_name || item?.name;
|
||||||
} else {
|
} else {
|
||||||
userInitialValue["unit_name"] = item?.guildsName;
|
userInitialValue["unit_name"] = item?.guilds_name || item?.guildsName;
|
||||||
}
|
}
|
||||||
|
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
@@ -602,6 +622,35 @@ export const ProvinceLegalGuildsForm = ({ updateTable, item, userType }) => {
|
|||||||
}
|
}
|
||||||
}, [formik?.values?.province]);
|
}, [formik?.values?.province]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (item && provinceData && !formik?.values?.province) {
|
||||||
|
const provinceName = item?.provinceName;
|
||||||
|
if (provinceName) {
|
||||||
|
const province = provinceData.find((p) => p?.name === provinceName);
|
||||||
|
if (province?.key) {
|
||||||
|
formik?.setFieldValue("province", province.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [item, provinceData]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
item &&
|
||||||
|
cityData?.length &&
|
||||||
|
formik?.values?.province &&
|
||||||
|
!formik?.values?.city
|
||||||
|
) {
|
||||||
|
const cityName = item?.cityName;
|
||||||
|
if (cityName) {
|
||||||
|
const city = cityData.find((c) => c?.name === cityName);
|
||||||
|
if (city?.key) {
|
||||||
|
formik?.setFieldValue("city", city.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [item, cityData, formik?.values?.province]);
|
||||||
|
|
||||||
if (!userData && !item) {
|
if (!userData && !item) {
|
||||||
return (
|
return (
|
||||||
<InquiryForm
|
<InquiryForm
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
|||||||
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
||||||
`${item?.user?.fullname || "-"}`,
|
`${item?.user?.fullname || "-"}`,
|
||||||
item?.user?.mobile || "-",
|
item?.user?.mobile || "-",
|
||||||
item?.address?.province?.name || "-",
|
item?.provinceName || "-",
|
||||||
item?.address?.city?.name || "-",
|
item?.cityName || "-",
|
||||||
item?.typeActivity || "-",
|
item?.typeActivity || "-",
|
||||||
item?.active ? "فعال" : "غیر فعال",
|
item?.active ? "فعال" : "غیر فعال",
|
||||||
<ProvinceLegalGuildsOperations
|
<ProvinceLegalGuildsOperations
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
DRAWER,
|
DRAWER,
|
||||||
LOADING_END,
|
LOADING_END,
|
||||||
LOADING_START,
|
LOADING_START,
|
||||||
OPEN_MODAL
|
OPEN_MODAL,
|
||||||
} from "../../../../lib/redux/slices/appSlice";
|
} from "../../../../lib/redux/slices/appSlice";
|
||||||
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
||||||
import { Grid } from "../../../../components/grid/Grid";
|
import { Grid } from "../../../../components/grid/Grid";
|
||||||
@@ -40,7 +40,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
page: page,
|
page: page,
|
||||||
pageSize: perPage,
|
pageSize: perPage,
|
||||||
searchValue: textValue,
|
searchValue: textValue,
|
||||||
buyer_type: IS_STEWARD ? "Steward" : "Guilds"
|
buyer_type: IS_STEWARD ? "Steward" : "Guilds",
|
||||||
});
|
});
|
||||||
setData(response.data.results);
|
setData(response.data.results);
|
||||||
setTotalRows(response.data.count);
|
setTotalRows(response.data.count);
|
||||||
@@ -84,7 +84,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
0
|
0
|
||||||
).toLocaleString(),
|
).toLocaleString(),
|
||||||
(req?.total_quantity ?? req?.totalQuantity ?? 0).toLocaleString(),
|
(req?.total_quantity ?? req?.totalQuantity ?? 0).toLocaleString(),
|
||||||
(req?.total_weight ?? req?.totalWeight ?? 0).toLocaleString()
|
(req?.total_weight ?? req?.totalWeight ?? 0).toLocaleString(),
|
||||||
];
|
];
|
||||||
}) ?? [];
|
}) ?? [];
|
||||||
dispatch(
|
dispatch(
|
||||||
@@ -105,11 +105,11 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
"شهر",
|
"شهر",
|
||||||
"تعداد درخواست",
|
"تعداد درخواست",
|
||||||
"حجم (قطعه)",
|
"حجم (قطعه)",
|
||||||
"وزن (کیلوگرم)"
|
"وزن (کیلوگرم)",
|
||||||
]}
|
]}
|
||||||
customWidth={"80vw"}
|
customWidth={"80vw"}
|
||||||
/>
|
/>
|
||||||
)
|
),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -131,7 +131,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
0
|
0
|
||||||
).toLocaleString(),
|
).toLocaleString(),
|
||||||
(req?.total_quantity ?? req?.totalQuantity ?? 0).toLocaleString(),
|
(req?.total_quantity ?? req?.totalQuantity ?? 0).toLocaleString(),
|
||||||
(req?.total_weight ?? req?.totalWeight ?? 0).toLocaleString()
|
(req?.total_weight ?? req?.totalWeight ?? 0).toLocaleString(),
|
||||||
];
|
];
|
||||||
}) ?? [];
|
}) ?? [];
|
||||||
dispatch(
|
dispatch(
|
||||||
@@ -151,11 +151,11 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
"شهر",
|
"شهر",
|
||||||
"تعداد درخواست",
|
"تعداد درخواست",
|
||||||
"حجم (قطعه)",
|
"حجم (قطعه)",
|
||||||
"وزن (کیلوگرم)"
|
"وزن (کیلوگرم)",
|
||||||
]}
|
]}
|
||||||
customWidth={"80vw"}
|
customWidth={"80vw"}
|
||||||
/>
|
/>
|
||||||
)
|
),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -186,7 +186,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
totalQuantity:
|
totalQuantity:
|
||||||
acc.totalQuantity + (r?.total_quantity ?? r?.totalQuantity ?? 0),
|
acc.totalQuantity + (r?.total_quantity ?? r?.totalQuantity ?? 0),
|
||||||
totalWeight:
|
totalWeight:
|
||||||
acc.totalWeight + (r?.total_weight ?? r?.totalWeight ?? 0)
|
acc.totalWeight + (r?.total_weight ?? r?.totalWeight ?? 0),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
{ numberOfRequests: 0, totalQuantity: 0, totalWeight: 0 }
|
{ numberOfRequests: 0, totalQuantity: 0, totalWeight: 0 }
|
||||||
@@ -222,7 +222,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
sx={{
|
sx={{
|
||||||
minWidth: "fit-content",
|
minWidth: "fit-content",
|
||||||
whiteSpace: "nowrap",
|
whiteSpace: "nowrap",
|
||||||
fontSize: "0.8125rem"
|
fontSize: "0.8125rem",
|
||||||
}}
|
}}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
onClick={() => openKillHousesModal(khList)}
|
onClick={() => openKillHousesModal(khList)}
|
||||||
@@ -240,8 +240,8 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
borderColor: "#008f6b",
|
borderColor: "#008f6b",
|
||||||
"&:hover": {
|
"&:hover": {
|
||||||
borderColor: "#006b52",
|
borderColor: "#006b52",
|
||||||
backgroundColor: "rgba(0, 143, 107, 0.08)"
|
backgroundColor: "rgba(0, 143, 107, 0.08)",
|
||||||
}
|
},
|
||||||
}}
|
}}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
onClick={() => openStewardsModal(stList)}
|
onClick={() => openStewardsModal(stList)}
|
||||||
@@ -270,7 +270,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
userType={userType}
|
userType={userType}
|
||||||
item={item}
|
item={item}
|
||||||
updateTable={() => fetchApiData(page)}
|
updateTable={() => fetchApiData(page)}
|
||||||
/>
|
/>,
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
<Button
|
<Button
|
||||||
variant="contained"
|
variant="contained"
|
||||||
sx={{
|
sx={{
|
||||||
mr: SPACING.SMALL
|
mr: SPACING.SMALL,
|
||||||
}}
|
}}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
dispatch(
|
dispatch(
|
||||||
@@ -321,7 +321,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
),
|
),
|
||||||
title: `افزودن ${
|
title: `افزودن ${
|
||||||
IS_STEWARD ? "مباشر" : "صنف"
|
IS_STEWARD ? "مباشر" : "صنف"
|
||||||
} خارج از استان`
|
} خارج از استان`,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@@ -361,7 +361,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
|
|||||||
"تعداد درخواست ها",
|
"تعداد درخواست ها",
|
||||||
"حجم تقریبی (قطعه)",
|
"حجم تقریبی (قطعه)",
|
||||||
"وزن (کیلوگرم)",
|
"وزن (کیلوگرم)",
|
||||||
"عملیات"
|
"عملیات",
|
||||||
]}
|
]}
|
||||||
handlePageChange={handlePageChange}
|
handlePageChange={handlePageChange}
|
||||||
totalRows={totalRows}
|
totalRows={totalRows}
|
||||||
|
|||||||
@@ -182,12 +182,16 @@ export const InquiryForStewardAddBuyer = ({
|
|||||||
})
|
})
|
||||||
).then((r) => {
|
).then((r) => {
|
||||||
dispatch(LOADING_END());
|
dispatch(LOADING_END());
|
||||||
if (r.error) {
|
const hasError = r.error || r.payload?.error;
|
||||||
|
if (hasError) {
|
||||||
setNotFound(true);
|
setNotFound(true);
|
||||||
openNotif({
|
openNotif({
|
||||||
vertical: "top",
|
vertical: "top",
|
||||||
horizontal: "center",
|
horizontal: "center",
|
||||||
msg: "خریدار یافت نشد، یک خریدار جدید ثبت کنید!",
|
msg:
|
||||||
|
typeof hasError === "string"
|
||||||
|
? hasError
|
||||||
|
: "خریدار یافت نشد، یک خریدار جدید ثبت کنید!",
|
||||||
severity: "error",
|
severity: "error",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useContext, useEffect, useState } from "react";
|
import React, { useContext, useEffect, useState, useCallback } from "react";
|
||||||
import { Grid } from "../../../../components/grid/Grid";
|
import { Grid } from "../../../../components/grid/Grid";
|
||||||
import { Button } from "@mui/material";
|
import { Button } from "@mui/material";
|
||||||
import { Yup } from "../../../../lib/yup/yup";
|
import { Yup } from "../../../../lib/yup/yup";
|
||||||
@@ -43,59 +43,74 @@ import {
|
|||||||
import { inspectorGetKillHousesService } from "../../../inspector/services/inspector-get-kill-houses";
|
import { inspectorGetKillHousesService } from "../../../inspector/services/inspector-get-kill-houses";
|
||||||
import { slaughterGetStewardsForAllocateService } from "../../../slaughter-house/services/slaughter-get-guilds-for-allocate";
|
import { slaughterGetStewardsForAllocateService } from "../../../slaughter-house/services/slaughter-get-guilds-for-allocate";
|
||||||
|
|
||||||
// userType enums = steward | steward_true | steward_legal | _true | _legal
|
const PAGE_STEWARD = "steward_add_buyer";
|
||||||
|
const PAGE_SLAUGHTER = "slaughter_add_buyer";
|
||||||
|
const PAGE_SLAUGHTER_MANAGE = "slaughter_manage_add_buyer";
|
||||||
|
const PAGE_ADMIN = "admin_add_buyer";
|
||||||
|
|
||||||
|
const ADMIN_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,
|
||||||
|
];
|
||||||
|
|
||||||
const getCurrentPage = (role, pathname) => {
|
const getCurrentPage = (role, pathname) => {
|
||||||
if (role === "Steward") {
|
if (role === "Steward" && pathname === ROUTE_STEWARD_SALE_OUT_PROVINCE) {
|
||||||
if (pathname === ROUTE_STEWARD_SALE_OUT_PROVINCE) {
|
return PAGE_STEWARD;
|
||||||
return "steward_add_buyer";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (role === "KillHouse") {
|
if (role === "KillHouse") {
|
||||||
if (pathname === ROUTE_SLAUGHTER_INVENTORY_SELL_CARCASS_OUT_PROVINCE) {
|
if (pathname === ROUTE_SLAUGHTER_INVENTORY_SELL_CARCASS_OUT_PROVINCE) {
|
||||||
return "slaughter_add_buyer";
|
return PAGE_SLAUGHTER;
|
||||||
}
|
}
|
||||||
if (pathname === ROUTE_SLAUGHTER_MANAGE_GUILDS_OUT_PROVINCE_TRUE) {
|
if (pathname === ROUTE_SLAUGHTER_MANAGE_GUILDS_OUT_PROVINCE_TRUE) {
|
||||||
return "slaughter_manage_add_buyer";
|
return PAGE_SLAUGHTER_MANAGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (role === "AdminX") {
|
if (role === "AdminX" && ADMIN_ROUTES.some((r) => r === pathname)) {
|
||||||
const routes = [
|
return PAGE_ADMIN;
|
||||||
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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const INITIAL_VALUES_BASE = {
|
||||||
|
mobile: "",
|
||||||
|
firstName: "",
|
||||||
|
lastName: "",
|
||||||
|
unit_name: "",
|
||||||
|
province: "",
|
||||||
|
city: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
const getInitialValues = (page) => {
|
const getInitialValues = (page) => {
|
||||||
const initialValues = {
|
if (page === PAGE_SLAUGHTER) {
|
||||||
mobile: "",
|
return { ...INITIAL_VALUES_BASE, nationalId: "" };
|
||||||
firstName: "",
|
}
|
||||||
lastName: "",
|
if (page === PAGE_ADMIN) {
|
||||||
unit_name: "",
|
return { ...INITIAL_VALUES_BASE, role_key: "", type: "" };
|
||||||
province: "",
|
}
|
||||||
city: "",
|
return { ...INITIAL_VALUES_BASE };
|
||||||
};
|
};
|
||||||
if (page === "steward_add_buyer" || page === "slaughter_manage_add_buyer") {
|
|
||||||
return initialValues;
|
const getValidationSchema = (page, isRealPerson, isEdit) => {
|
||||||
} else if (page === "slaughter_add_buyer") {
|
if (page === PAGE_STEWARD) return validationSchemaForStewardAddBuyer;
|
||||||
return {
|
if (page === PAGE_SLAUGHTER || page === PAGE_SLAUGHTER_MANAGE) {
|
||||||
...initialValues,
|
return validationSchemaForSlaughterAddBuyer(isRealPerson, isEdit);
|
||||||
nationalId: "",
|
}
|
||||||
};
|
if (page === PAGE_ADMIN) {
|
||||||
} else if (page === "admin_add_buyer") {
|
return validationSchemaForAdminAddBuyer(isRealPerson, isEdit);
|
||||||
return {
|
}
|
||||||
...initialValues,
|
return Yup.object({});
|
||||||
role_key: "",
|
};
|
||||||
type: "",
|
|
||||||
};
|
const setFormDataFromTableData = (page, data, formik) => {
|
||||||
|
if (page === PAGE_STEWARD) {
|
||||||
|
handleSetFormDataFromTableDataForStewardAddBuyer(data, formik);
|
||||||
|
} else if (page === PAGE_SLAUGHTER || page === PAGE_SLAUGHTER_MANAGE) {
|
||||||
|
handleSetFormDataFromTableDataForSlaughterAddBuyer(data, formik);
|
||||||
|
} else if (page === PAGE_ADMIN) {
|
||||||
|
handleSetFormDataFromTableDataForAdminAddBuyer(data, formik);
|
||||||
}
|
}
|
||||||
return initialValues;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const StewardAddBuyer = ({
|
export const StewardAddBuyer = ({
|
||||||
@@ -104,18 +119,16 @@ export const StewardAddBuyer = ({
|
|||||||
data,
|
data,
|
||||||
isRealPerson,
|
isRealPerson,
|
||||||
buyerType = "",
|
buyerType = "",
|
||||||
// buyerYype => "Guilds" | "Steward"
|
|
||||||
}) => {
|
}) => {
|
||||||
const role = getRoleFromUrl();
|
const role = getRoleFromUrl();
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const [openNotif] = useContext(AppContext);
|
||||||
|
const [notFound, setNotFound] = useState(false);
|
||||||
|
const { selectedSubUser } = useSelector((state) => state.userSlice);
|
||||||
|
|
||||||
const page = getCurrentPage(role, pathname);
|
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 {
|
const {
|
||||||
killHouses,
|
killHouses,
|
||||||
stewards,
|
stewards,
|
||||||
@@ -127,71 +140,190 @@ export const StewardAddBuyer = ({
|
|||||||
setUserData,
|
setUserData,
|
||||||
} = useAddBuyer(page);
|
} = useAddBuyer(page);
|
||||||
|
|
||||||
const { selectedSubUser } = useSelector((state) => state.userSlice);
|
|
||||||
|
|
||||||
const [openNotif] = useContext(AppContext);
|
|
||||||
const [notFound, setNotFound] = useState(false);
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: getInitialValues(page),
|
initialValues: getInitialValues(page),
|
||||||
validationSchema: IS_STEWARD_ADD_BUYER
|
validationSchema: getValidationSchema(page, isRealPerson, isEdit),
|
||||||
? validationSchemaForStewardAddBuyer
|
|
||||||
: IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER
|
|
||||||
? validationSchemaForSlaughterAddBuyer(isRealPerson, isEdit)
|
|
||||||
: IS_ADMIN_ADD_BUYER
|
|
||||||
? validationSchemaForAdminAddBuyer(isRealPerson, isEdit)
|
|
||||||
: Yup.object({}),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Re-validate when switching to edit mode
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isEdit) {
|
if (isEdit) formik.validateForm();
|
||||||
formik.validateForm();
|
|
||||||
}
|
|
||||||
}, [isEdit]);
|
}, [isEdit]);
|
||||||
|
|
||||||
|
// Populate form when editing
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (IS_ADMIN_ADD_BUYER) {
|
if (isEdit && page && data) {
|
||||||
if (formik.values.type === "KillHouse") {
|
setFormDataFromTableData(page, data, formik);
|
||||||
dispatch(inspectorGetKillHousesService());
|
|
||||||
} else {
|
|
||||||
dispatch(
|
|
||||||
slaughterGetStewardsForAllocateService({
|
|
||||||
free: true,
|
|
||||||
})
|
|
||||||
).then((r) => {
|
|
||||||
setStewards(r.payload.data || []);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, [formik.values.type]);
|
}, [isEdit, page]);
|
||||||
|
|
||||||
|
// Load cities when province changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isEdit) {
|
if (!formik.values.province) {
|
||||||
if (IS_STEWARD_ADD_BUYER) {
|
setCityData([]);
|
||||||
handleSetFormDataFromTableDataForStewardAddBuyer(data, formik);
|
return;
|
||||||
}
|
|
||||||
if (IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER) {
|
|
||||||
handleSetFormDataFromTableDataForSlaughterAddBuyer(data, formik);
|
|
||||||
}
|
|
||||||
if (IS_ADMIN_ADD_BUYER) {
|
|
||||||
handleSetFormDataFromTableDataForAdminAddBuyer(data, formik);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, [isEdit]);
|
setCityData([]);
|
||||||
|
dispatch(slaughterGetCitiesService(formik.values.province)).then((r) => {
|
||||||
|
setCityData(r.payload?.data ?? []);
|
||||||
|
});
|
||||||
|
}, [formik.values.province, dispatch]);
|
||||||
|
|
||||||
|
// Admin: load stewards or kill houses by type
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (formik.values.province) {
|
if (page !== PAGE_ADMIN) return;
|
||||||
setCityData(
|
if (formik.values.type === "KillHouse") {
|
||||||
[],
|
dispatch(inspectorGetKillHousesService());
|
||||||
dispatch(slaughterGetCitiesService(formik.values.province)).then(
|
} else {
|
||||||
(r) => {
|
dispatch(slaughterGetStewardsForAllocateService({ free: true })).then(
|
||||||
setCityData(r.payload.data);
|
(r) => {
|
||||||
}
|
setStewards(r.payload?.data ?? []);
|
||||||
)
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, [formik.values.province]);
|
}, [page, formik.values.type, dispatch]);
|
||||||
|
|
||||||
|
const handleSubmit = useCallback(() => {
|
||||||
|
if (page === PAGE_STEWARD) {
|
||||||
|
handleSubmitForStewardAddBuyer(
|
||||||
|
formik,
|
||||||
|
dispatch,
|
||||||
|
isEdit,
|
||||||
|
data,
|
||||||
|
updateTable,
|
||||||
|
openNotif,
|
||||||
|
DRAWER,
|
||||||
|
role
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (page === PAGE_SLAUGHTER) {
|
||||||
|
handleSubmitForSlaughterAddBuyer(
|
||||||
|
formik,
|
||||||
|
dispatch,
|
||||||
|
isEdit,
|
||||||
|
data,
|
||||||
|
updateTable,
|
||||||
|
openNotif,
|
||||||
|
DRAWER,
|
||||||
|
selectedSubUser,
|
||||||
|
isRealPerson
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (page === PAGE_SLAUGHTER_MANAGE) {
|
||||||
|
handleSubmitForSlaughterAddBuyer(
|
||||||
|
formik,
|
||||||
|
dispatch,
|
||||||
|
isEdit,
|
||||||
|
data,
|
||||||
|
updateTable,
|
||||||
|
openNotif,
|
||||||
|
DRAWER,
|
||||||
|
selectedSubUser,
|
||||||
|
isRealPerson,
|
||||||
|
buyerType
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (page === PAGE_ADMIN) {
|
||||||
|
handleSubmitForAdminAddBuyer(
|
||||||
|
formik,
|
||||||
|
dispatch,
|
||||||
|
isEdit,
|
||||||
|
data,
|
||||||
|
updateTable,
|
||||||
|
openNotif,
|
||||||
|
DRAWER,
|
||||||
|
isRealPerson,
|
||||||
|
buyerType
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [
|
||||||
|
page,
|
||||||
|
formik,
|
||||||
|
dispatch,
|
||||||
|
isEdit,
|
||||||
|
data,
|
||||||
|
updateTable,
|
||||||
|
openNotif,
|
||||||
|
role,
|
||||||
|
selectedSubUser,
|
||||||
|
isRealPerson,
|
||||||
|
buyerType,
|
||||||
|
]);
|
||||||
|
|
||||||
|
const showInquiry = !isEdit && page;
|
||||||
|
const showForm = (userData || notFound || isEdit) && page;
|
||||||
|
|
||||||
|
const inquiryProps = {
|
||||||
|
notFound,
|
||||||
|
setNotFound,
|
||||||
|
setUserData,
|
||||||
|
formik,
|
||||||
|
};
|
||||||
|
|
||||||
|
const formProps = {
|
||||||
|
formik,
|
||||||
|
provinceData,
|
||||||
|
cityData,
|
||||||
|
notFound,
|
||||||
|
};
|
||||||
|
|
||||||
|
const renderInquiry = () => {
|
||||||
|
if (!showInquiry) return null;
|
||||||
|
if (page === PAGE_STEWARD) {
|
||||||
|
return <InquiryForStewardAddBuyer {...inquiryProps} />;
|
||||||
|
}
|
||||||
|
if (page === PAGE_SLAUGHTER || page === PAGE_SLAUGHTER_MANAGE) {
|
||||||
|
return (
|
||||||
|
<InquiryForSlaughterAddBuyer
|
||||||
|
{...inquiryProps}
|
||||||
|
isEdit={isEdit}
|
||||||
|
isRealPerson={isRealPerson}
|
||||||
|
provinceData={provinceData}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (page === PAGE_ADMIN) {
|
||||||
|
return (
|
||||||
|
<InquiryForAdminAddBuyer
|
||||||
|
{...inquiryProps}
|
||||||
|
isEdit={isEdit}
|
||||||
|
isRealPerson={isRealPerson}
|
||||||
|
provinceData={provinceData}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const renderForm = () => {
|
||||||
|
if (!showForm) return null;
|
||||||
|
if (page === PAGE_STEWARD) {
|
||||||
|
return <StewardAddBuyerForm {...formProps} />;
|
||||||
|
}
|
||||||
|
if (page === PAGE_SLAUGHTER || page === PAGE_SLAUGHTER_MANAGE) {
|
||||||
|
return (
|
||||||
|
<SlaughterAddBuyerForm {...formProps} isRealPerson={isRealPerson} />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (page === PAGE_ADMIN) {
|
||||||
|
return (
|
||||||
|
<AdminAddBuyerForm
|
||||||
|
{...formProps}
|
||||||
|
isRealPerson={isRealPerson}
|
||||||
|
killHouses={killHouses}
|
||||||
|
stewards={stewards}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!page) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Grid
|
<Grid
|
||||||
@@ -202,124 +334,15 @@ export const StewardAddBuyer = ({
|
|||||||
direction="column"
|
direction="column"
|
||||||
gap={2}
|
gap={2}
|
||||||
>
|
>
|
||||||
{!isEdit ? (
|
{renderInquiry()}
|
||||||
IS_STEWARD_ADD_BUYER ? (
|
{renderForm()}
|
||||||
<InquiryForStewardAddBuyer
|
{showForm && (
|
||||||
notFound={notFound}
|
|
||||||
setNotFound={setNotFound}
|
|
||||||
setUserData={setUserData}
|
|
||||||
formik={formik}
|
|
||||||
/>
|
|
||||||
) : IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER ? (
|
|
||||||
<InquiryForSlaughterAddBuyer
|
|
||||||
notFound={notFound}
|
|
||||||
setNotFound={setNotFound}
|
|
||||||
setUserData={setUserData}
|
|
||||||
formik={formik}
|
|
||||||
isEdit={isEdit}
|
|
||||||
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 ? (
|
|
||||||
IS_STEWARD_ADD_BUYER ? (
|
|
||||||
<StewardAddBuyerForm
|
|
||||||
formik={formik}
|
|
||||||
provinceData={provinceData}
|
|
||||||
cityData={cityData}
|
|
||||||
notFound={notFound}
|
|
||||||
/>
|
|
||||||
) : IS_SLAUGHTER_ADD_BUYER || IS_SLAUGHTER_MANAGE_ADD_BUYER ? (
|
|
||||||
<SlaughterAddBuyerForm
|
|
||||||
formik={formik}
|
|
||||||
provinceData={provinceData}
|
|
||||||
cityData={cityData}
|
|
||||||
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) && (
|
|
||||||
<Grid container xs={12}>
|
<Grid container xs={12}>
|
||||||
<Button
|
<Button
|
||||||
fullWidth
|
fullWidth
|
||||||
variant="contained"
|
variant="contained"
|
||||||
disabled={!formik.isValid}
|
disabled={!formik.isValid}
|
||||||
onClick={() => {
|
onClick={handleSubmit}
|
||||||
if (IS_STEWARD_ADD_BUYER) {
|
|
||||||
handleSubmitForStewardAddBuyer(
|
|
||||||
formik,
|
|
||||||
dispatch,
|
|
||||||
isEdit,
|
|
||||||
data,
|
|
||||||
updateTable,
|
|
||||||
openNotif,
|
|
||||||
DRAWER,
|
|
||||||
role
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (IS_SLAUGHTER_ADD_BUYER) {
|
|
||||||
handleSubmitForSlaughterAddBuyer(
|
|
||||||
formik,
|
|
||||||
dispatch,
|
|
||||||
isEdit,
|
|
||||||
data,
|
|
||||||
updateTable,
|
|
||||||
openNotif,
|
|
||||||
DRAWER,
|
|
||||||
selectedSubUser,
|
|
||||||
isRealPerson
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (IS_SLAUGHTER_MANAGE_ADD_BUYER) {
|
|
||||||
handleSubmitForSlaughterAddBuyer(
|
|
||||||
formik,
|
|
||||||
dispatch,
|
|
||||||
isEdit,
|
|
||||||
data,
|
|
||||||
updateTable,
|
|
||||||
openNotif,
|
|
||||||
DRAWER,
|
|
||||||
selectedSubUser,
|
|
||||||
isRealPerson,
|
|
||||||
buyerType
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (IS_ADMIN_ADD_BUYER) {
|
|
||||||
handleSubmitForAdminAddBuyer(
|
|
||||||
formik,
|
|
||||||
dispatch,
|
|
||||||
isEdit,
|
|
||||||
data,
|
|
||||||
updateTable,
|
|
||||||
openNotif,
|
|
||||||
DRAWER,
|
|
||||||
isRealPerson,
|
|
||||||
buyerType
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{isEdit ? "ویرایش" : "ثبت"}
|
{isEdit ? "ویرایش" : "ثبت"}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -20,13 +20,16 @@ export const useAddBuyer = (page) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (page === "admin_add_buyer") {
|
if (page === "admin_add_buyer" && inspectorGetKillHouses?.length) {
|
||||||
const d = inspectorGetKillHouses?.map((item) => {
|
setKillhouses(
|
||||||
return { name: item.name, key: item.key, killer: item.killer };
|
inspectorGetKillHouses.map((item) => ({
|
||||||
});
|
name: item.name,
|
||||||
setKillhouses(d);
|
key: item.key,
|
||||||
|
killer: item.killer,
|
||||||
|
}))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}, [inspectorGetKillHouses]);
|
}, [page, inspectorGetKillHouses]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
killHouses,
|
killHouses,
|
||||||
|
|||||||
Reference in New Issue
Block a user