connect services => out province stewards

This commit is contained in:
2026-01-25 14:00:27 +03:30
parent 145d2d65ba
commit eed6904646
8 changed files with 207 additions and 170 deletions

View File

@@ -80,7 +80,7 @@ export const ManageGuildsRequests = ({ userType }) => {
item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " "
}`,
item?.licenseNumber || "-",
item?.name || "-",
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
`${item?.user?.fullname || "-"} (${item?.user?.mobile || "-"})`,
item?.user?.nationalId || "-",
item?.typeActivity || "-",

View File

@@ -116,56 +116,22 @@ const getValidationSchema = (isAdmin, userFound) =>
type_activity: yup.string(),
});
const LegalGuildForm = ({ formik, isAdmin, typeActivities, userType }) => {
const LegalGuildForm = ({
formik,
isAdmin,
typeActivities,
userType,
provinces,
cities,
}) => {
const IS_STEWARD = userType === "steward";
const [provinceData, setProvinceData] = useState();
const [cityData, setCityData] = useState();
const dispatch = useDispatch();
useEffect(() => {
dispatch(LOADING_START());
dispatch(cityGetProvinces())
?.then((r) => {
if (r?.payload?.data) {
setProvinceData(r.payload.data);
}
})
.catch((error) => {
console.error("Error fetching provinces:", error);
})
.finally(() => {
dispatch(LOADING_END());
});
}, []);
useEffect(() => {
if (formik?.values?.province) {
dispatch(LOADING_START());
dispatch(cityGetCity(formik?.values?.province))
.then((r) => {
if (r?.payload?.data) {
setCityData(r.payload.data);
}
})
.catch((error) => {
console.error("Error fetching cities:", error);
})
.finally(() => {
dispatch(LOADING_END());
});
} else {
setCityData([]);
}
}, [formik?.values?.province]);
return (
<form onSubmit={formik.handleSubmit}>
<Grid container gap={SPACING.SMALL} p={2}>
<Grid container spacing={2} xs={12}>
<Grid item xs={12} md={6}>
<Grid container direction="column" gap={SPACING.TINY}>
<Grid container gap={SPACING.SMALL}>
<Grid item xs={12}>
{isAdmin ? (
<TextField
@@ -267,7 +233,7 @@ const LegalGuildForm = ({ formik, isAdmin, typeActivities, userType }) => {
</Grid>
<Grid item xs={12} md={6}>
<Grid container direction="column" gap={SPACING.TINY}>
<Grid container gap={SPACING.SMALL}>
<Grid item xs={12}>
<Autocomplete
size="small"
@@ -275,8 +241,8 @@ const LegalGuildForm = ({ formik, isAdmin, typeActivities, userType }) => {
disablePortal
id="province"
options={
provinceData
? provinceData.map((i) => ({
provinces
? provinces.map((i) => ({
id: i.key,
label: i.name,
}))
@@ -301,22 +267,15 @@ const LegalGuildForm = ({ formik, isAdmin, typeActivities, userType }) => {
disablePortal
id="city"
options={
cityData
? cityData.map((i) => ({ id: i.name, label: i.name }))
cities
? cities.map((i) => ({ id: i.key, label: i.name }))
: []
}
onChange={(e, value) => {
formik.setFieldValue("city", value ? value.id : "");
}}
renderInput={(params) => (
<TextField
{...params}
label={
formik?.values?.city
? `شهر ${formik?.values?.city}`
: "شهر را انتخاب کنید"
}
/>
<TextField {...params} label={"شهر"} />
)}
/>
</Grid>
@@ -436,6 +395,9 @@ export const ProvinceLegalGuildsForm = ({
item,
userType,
}) => {
const [provinceData, setProvinceData] = useState();
const [cityData, setCityData] = useState();
const IS_STEWARD = userType === "steward";
const userInitialValue = {
national_id: item?.user?.national_id || "",
@@ -471,6 +433,22 @@ export const ProvinceLegalGuildsForm = ({
const currentRole = getRoleFromUrl();
const isAdmin = currentRole === "AdminX";
useEffect(() => {
dispatch(LOADING_START());
dispatch(cityGetProvinces())
?.then((r) => {
if (r?.payload?.data) {
setProvinceData(r.payload.data);
}
})
.catch((error) => {
console.error("Error fetching provinces:", error);
})
.finally(() => {
dispatch(LOADING_END());
});
}, []);
useEffect(() => {
dispatch(provinceGetTypeActivity()).then((r) => {
setTypeActivities(r.payload.data || []);
@@ -529,6 +507,12 @@ export const ProvinceLegalGuildsForm = ({
if (r.payload.error) {
setUserFound(false);
if (isAdmin) {
openNotif({
vertical: "top",
horizontal: "center",
msg: r.payload.error,
severity: "error",
});
// Admin can create even if user not found
setUserData(
IS_STEWARD
@@ -612,10 +596,10 @@ export const ProvinceLegalGuildsForm = ({
first_name: values.first_name,
last_name: values.last_name,
national_id: values.national_id,
province: values.province,
province: provinceData?.find((p) => p?.key === values.province)?.name,
address: values.address || "",
mobile: values.mobile || "",
city: values.city,
city: cityData?.find((c) => c?.key === values.city)?.name,
type_activity: typeActivityKey, // Send key instead of title
...(item?.key && { guilds_key: item.key }), // Include guild key for editing
};
@@ -650,6 +634,26 @@ export const ProvinceLegalGuildsForm = ({
},
});
useEffect(() => {
if (formik?.values?.province) {
dispatch(LOADING_START());
dispatch(cityGetCity(formik?.values?.province))
.then((r) => {
if (r?.payload?.data) {
setCityData(r.payload.data);
}
})
.catch((error) => {
console.error("Error fetching cities:", error);
})
.finally(() => {
dispatch(LOADING_END());
});
} else {
setCityData([]);
}
}, [formik?.values?.province]);
if (!userData && !item) {
return (
<InquiryForm
@@ -666,6 +670,8 @@ export const ProvinceLegalGuildsForm = ({
isAdmin={isAdmin}
typeActivities={typeActivities}
userType={userType}
provinces={provinceData}
cities={cityData}
/>
);
};

View File

@@ -29,33 +29,28 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
const handleTextChange = (e) => setTextValue(e.target.value);
const fetchApiData = async (pageNum) => {
let response = null;
if (IS_STEWARD) {
response = await dispatch(
provinceGetTotalStewardsService({
search: "filter",
value: textValue,
page: page,
page_size: perPage,
is_real_person: false,
role_key: checkPathStartsWith("province")
? selectedSubUser?.key || ""
: "",
})
);
} else {
response = await dispatch(
provinceGetTotalGuildsService({
search: "filter",
value: textValue,
page: pageNum,
page_size: perPage,
steward: false,
active_state: "all",
is_real_person: false,
})
);
}
const response = await dispatch(
IS_STEWARD
? provinceGetTotalStewardsService({
search: "filter",
value: textValue,
page: page,
page_size: perPage,
is_real_person: false,
role_key: checkPathStartsWith("province")
? selectedSubUser?.key || ""
: "",
})
: provinceGetTotalGuildsService({
search: "filter",
value: textValue,
page: pageNum,
page_size: perPage,
steward: false,
active_state: "all",
is_real_person: false,
})
);
if (response.payload.error) {
console.error("Error fetching data:", response.payload.error);
@@ -90,7 +85,7 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
const d = data.map((item, i) => {
return [
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
item?.nationalId || "-",
(IS_STEWARD ? item?.licenseNumber : item?.nationalId) || "-",
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
`${item?.user?.fullname || "-"}`,
item?.user?.mobile || "-",

View File

@@ -36,6 +36,7 @@ export const ProvinceLegalGuildsOutProvince = ({ userType }) => {
page: page,
pageSize: perPage,
searchValue: textValue,
buyer_type: IS_STEWARD ? "Steward" : "Guilds",
});
setData(response.data.results);
setTotalRows(response.data.count);
@@ -68,7 +69,9 @@ export const ProvinceLegalGuildsOutProvince = ({ userType }) => {
return [
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
item?.unitName || "-",
item?.buyer?.parentLegalPersonNationalCode || "-",
(IS_STEWARD
? item?.buyer?.nationalId
: item?.buyer?.parentLegalPersonNationalCode) || "-",
killHouseInfo,
item?.province || "-",
item?.city || "-",
@@ -79,6 +82,7 @@ export const ProvinceLegalGuildsOutProvince = ({ userType }) => {
key={item?.unitName}
item={item}
updateTable={() => fetchApiData(1)}
userType={userType}
/>,
];
});

View File

@@ -36,6 +36,7 @@ export const ProvinceTrueGuildsOutProvince = ({ userType }) => {
page: page,
pageSize: perPage,
searchValue: textValue,
buyer_type: IS_STEWARD ? "Steward" : "Guilds",
});
setData(response.data.results);
setTotalRows(response.data.count);

View File

@@ -37,9 +37,15 @@ export const ProvinceTrueGuildsOutProvinceOperations = ({
const deleteGuild = () => {
const buyerKey = item?.key;
if (buyerKey)
dispatch(deleteOutProvinceTrueGuilds({ buyer_key: buyerKey })).then(() =>
dispatch(CLOSE_MODAL())
);
dispatch(
deleteOutProvinceTrueGuilds({
buyer_key: buyerKey,
buyer_type: IS_STEWARD ? "Steward" : "Guilds",
})
).then(() => {
updateTable();
dispatch(CLOSE_MODAL());
});
};
return (
<Grid container>
@@ -93,7 +99,12 @@ export const ProvinceTrueGuildsOutProvinceOperations = ({
? "legal"
: "real"
}
defaultNationalCode={item?.buyer?.nationalCode}
defaultNationalCode={
IS_STEWARD
? item?.buyer?.nationalId
: item?.buyer?.nationalCode
}
userType={userType}
/>
),
})

View File

@@ -7,6 +7,7 @@ import axios from "axios";
* @param {number} params.page - Page number
* @param {number} params.pageSize - Items per page
* @param {string} params.searchValue - Search value
* @param {string} params.buyerType - buyer type
* @returns {Promise} Axios promise with buyers data
*/
export const fetchOutProvinceRealBuyers = async ({
@@ -14,9 +15,12 @@ export const fetchOutProvinceRealBuyers = async ({
page,
pageSize,
searchValue = "",
buyer_type = "",
}) => {
const response = await axios.get(
`out-province-carcasses-buyer/?search=filter&value=${searchValue}&role=${role}&page=${page}&page_size=${pageSize}&state=buyer-list&type=real`
`out-province-carcasses-buyer/?search=filter&value=${searchValue}&role=${role}&page=${page}&page_size=${pageSize}&state=buyer-list&type=real${
buyer_type ? "&buyer_type=" + buyer_type : ""
}`
);
return response;
};
@@ -35,10 +39,12 @@ export const fetchOutProvinceLegalBuyers = async ({
page,
pageSize,
searchValue = "",
buyer_type = "",
}) => {
const response = await axios.get(
`out-province-carcasses-buyer/?search=filter&value=${searchValue}&role=${role}&page=${page}&page_size=${pageSize}&state=buyer-list&type=legal`
`out-province-carcasses-buyer/?search=filter&value=${searchValue}&role=${role}&page=${page}&page_size=${pageSize}&state=buyer-list&type=legal${
buyer_type ? "&buyer_type=" + buyer_type : ""
}`
);
return response;
};