From 145d2d65ba0254dd64dfe7ff5a2b57b3a2bbe5ca Mon Sep 17 00:00:00 2001 From: workashrafi77-web Date: Sat, 24 Jan 2026 17:07:24 +0330 Subject: [PATCH] connect service => in province stewards --- .../guild/components/GuildManageGuilds.js | 4 +- .../ManageGuildsOperations.js | 96 ++++-- .../ManageGuildsRequestsOperations.js | 69 ++-- .../ManageGuildsRequests.js | 23 +- .../components/manage-guilds/ManageGuilds.js | 52 +-- .../ProvinceLegalGuildsForm.js | 322 +++++++++++------- .../ProvinceLegalGuildsInProvince.js | 91 ++--- .../ProvinceLegalGuildsOperations.js | 120 ++++++- .../ProvinceManageGuildsSubmitRegisterCode.js | 23 +- .../view-guild-details/ViewGuildDetails.js | 56 +-- .../province-get-register-code-state.js | 18 + .../services/province-get-total-stewards.js | 2 +- .../province/services/update-steward.js | 21 ++ 13 files changed, 588 insertions(+), 309 deletions(-) create mode 100644 src/features/province/services/update-steward.js diff --git a/src/features/guild/components/GuildManageGuilds.js b/src/features/guild/components/GuildManageGuilds.js index 76e5346..fca1d13 100644 --- a/src/features/guild/components/GuildManageGuilds.js +++ b/src/features/guild/components/GuildManageGuilds.js @@ -244,7 +244,7 @@ const GuildMaangeGuilds = () => { selector: (item, i) => ( ), @@ -311,7 +311,7 @@ const GuildMaangeGuilds = () => { ?.map((item) => `${item.name} (${item.mobile})`) .join(" - "), getItemState(item), - , + , ]; }); diff --git a/src/features/province/components/manage-guilds-operations/ManageGuildsOperations.js b/src/features/province/components/manage-guilds-operations/ManageGuildsOperations.js index f620f1c..274a428 100644 --- a/src/features/province/components/manage-guilds-operations/ManageGuildsOperations.js +++ b/src/features/province/components/manage-guilds-operations/ManageGuildsOperations.js @@ -27,13 +27,18 @@ import SendIcon from "@mui/icons-material/Send"; import { AppContext } from "../../../../contexts/AppContext"; import { SPACING } from "../../../../data/spacing"; import { ProvinceManageGuildsSubmitRegisterCode } from "../province-manage-guilds-submit-register-code/ProvinceManageGuildsSubmitRegisterCode"; -import { provinceResendRegisterCodeStateService } from "../../services/province-get-register-code-state"; +import { + provinceResendRegisterCodeStateService, + provinceSendAgainSmsForRegisterCodeSteward, +} from "../../services/province-get-register-code-state"; import { ViewGuildDetails } from "../view-guild-details/ViewGuildDetails"; import TuneIcon from "@mui/icons-material/Tune"; +import { updateStewardService } from "../../services/update-steward"; -export const ManageGuildsOperations = ({ guild, updateTable }) => { +export const ManageGuildsOperations = ({ item, updateTable, userType }) => { + const IS_STEWARD = userType === "steward"; const dispatch = useDispatch(); - const [checked, setChecked] = useState(guild.active); + const [checked, setChecked] = useState(item.active); const [popoverOpen, setPopoverOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); const [openNotif] = useContext(AppContext); @@ -51,29 +56,51 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { const handleChange = async (event) => { const newChecked = event.target.checked; setChecked(newChecked); - dispatch(LOADING_START()); - try { - const response = await axios.put("guilds/0/", { - guilds_key: guild?.key, - active: newChecked, - role: getRoleFromUrl(), - }); + let response = null; + if (IS_STEWARD) { + response = await dispatch( + updateStewardService({ + params: { + id: item?.id, + }, + body: { + active: newChecked, + role: getRoleFromUrl(), + }, + }) + ).then(() => { + updateTable(); + dispatch(DRAWER({ right: false, bottom: false, content: null })); + openNotif({ + vertical: "top", + horizontal: "center", + msg: "عملیات با موفقیت انجام شد.", + severity: "success", + }); + }); + } else { + response = await axios.put("guilds/0/", { + guilds_key: item?.key, + active: newChecked, + role: getRoleFromUrl(), + }); + if (response.status === 200) { + updateTable(); + dispatch(DRAWER({ right: false, bottom: false, content: null })); + openNotif({ + vertical: "top", + horizontal: "center", + msg: "عملیات با موفقیت انجام شد.", + severity: "success", + }); + } + } dispatch(LOADING_END()); - - if (response.status === 200) { - updateTable(); - dispatch(DRAWER({ right: false, bottom: false, content: null })); - openNotif({ - vertical: "top", - horizontal: "center", - msg: "عملیات با موفقیت انجام شد.", - severity: "success", - }); - } } catch (error) { + console.log(error); dispatch(LOADING_END()); const errorMessage = error.response?.data?.result || @@ -128,8 +155,10 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { closePopover(); dispatch( OPEN_MODAL({ - title: "مشاهده جزییات صنف", - content: , + title: `مشاهده جزییات ${IS_STEWARD ? "مباشر" : "صنف"}`, + content: ( + + ), size: window.innerWidth <= 600 ? "small" : "auto", }) ); @@ -173,7 +202,7 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { size: window.innerWidth <= 600 ? "small" : "auto", content: ( ), @@ -197,7 +226,7 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { title: "اعمال محدودیت", content: ( ), @@ -210,7 +239,7 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { )} - {!guild?.isRegistered && ( + {!item?.isRegistered && ( { dispatch( OPEN_MODAL({ title: "ثبت کد احراز", + size: "auto", content: ( ), }) @@ -248,11 +279,14 @@ export const ManageGuildsOperations = ({ guild, updateTable }) => { sx={{ fontSize: { xs: 12, md: 15 } }} onClick={() => { closePopover(); - dispatch( - provinceResendRegisterCodeStateService({ - key: guild.key, - }) + IS_STEWARD + ? provinceSendAgainSmsForRegisterCodeSteward({ + key: item.key, + }) + : provinceResendRegisterCodeStateService({ + key: item.key, + }) ).then((r) => { if (r.payload.error) { openNotif({ diff --git a/src/features/province/components/manage-guilds-requests-operations/ManageGuildsRequestsOperations.js b/src/features/province/components/manage-guilds-requests-operations/ManageGuildsRequestsOperations.js index 77bb975..4f50de1 100644 --- a/src/features/province/components/manage-guilds-requests-operations/ManageGuildsRequestsOperations.js +++ b/src/features/province/components/manage-guilds-requests-operations/ManageGuildsRequestsOperations.js @@ -16,12 +16,14 @@ import { ProvinceManageGuildsSubmitRegisterCode } from "../province-manage-guild import { provinceResendRegisterCodeStateService } from "../../services/province-get-register-code-state"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; import { ViewGuildDetails } from "../view-guild-details/ViewGuildDetails"; +import { updateStewardService } from "../../services/update-steward"; export const ManageGuildsRequestsOperations = ({ - guild, + item, updateTable, userType, }) => { + const IS_STEWARD = userType === "steward"; const [popoverOpen, setPopoverOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); @@ -111,9 +113,9 @@ export const ManageGuildsRequestsOperations = ({ closePopover(); dispatch( OPEN_MODAL({ - title: "مشاهده جزییات صنف", + title: `مشاهده جزییات ${IS_STEWARD ? "مباشر" : "صنف"}`, content: ( - + ), size: window.innerWidth <= 600 ? "small" : "auto", }) @@ -124,8 +126,8 @@ export const ManageGuildsRequestsOperations = ({ )} - {(guild?.activeRegisterCode && guild?.loggedRegisterCode) || - !guild?.activeRegisterCode ? ( + {(item?.activeRegisterCode && item?.loggedRegisterCode) || + !item?.activeRegisterCode ? ( { closePopover(); - dispatch( - checkKillhouseRequestGuildService({ - guilds_key: guild.key, - state: "accepted", - role: getRoleFromUrl(), - }) + IS_STEWARD + ? updateStewardService({ + body: { + province_accept_state: "accepted", + }, + params: { + id: item?.id, + }, + }) + : checkKillhouseRequestGuildService({ + guilds_key: item.key, + state: "accepted", + role: getRoleFromUrl(), + }) ).then((r) => { if (r.payload.error) { openNotif({ @@ -179,10 +189,12 @@ export const ManageGuildsRequestsOperations = ({ dispatch( OPEN_MODAL({ - title: "رد درخواست ثبت صنف", + title: `رد درخواست ثبت ${IS_STEWARD ? "مباشر" : "صنف"}`, + size: "auto", content: ( ), @@ -213,7 +225,7 @@ export const ManageGuildsRequestsOperations = ({ title: "ثبت کد احراز", content: ( ), @@ -234,7 +246,7 @@ export const ManageGuildsRequestsOperations = ({ dispatch( provinceResendRegisterCodeStateService({ - key: guild.key, + key: item.key, }) ).then((r) => { if (r.payload.error) { @@ -267,7 +279,8 @@ export const ManageGuildsRequestsOperations = ({ ); }; -const RejectModal = ({ guild, updateTable }) => { +const RejectModal = ({ userType, item, updateTable }) => { + const IS_STEWARD = userType === "steward"; const [openNotif] = useContext(AppContext); const [text, setText] = useState(""); const dispatch = useDispatch(); @@ -275,7 +288,7 @@ const RejectModal = ({ guild, updateTable }) => { return ( setText(e.target.value)} /> @@ -286,12 +299,22 @@ const RejectModal = ({ guild, updateTable }) => { disabled={!text} onClick={() => { dispatch( - checkKillhouseRequestGuildService({ - guilds_key: guild.key, - state: "rejected", - message: text, - role: getRoleFromUrl(), - }) + IS_STEWARD + ? updateStewardService({ + body: { + province_accept_state: "rejected", + province_message: text, + }, + params: { + id: item?.id, + }, + }) + : checkKillhouseRequestGuildService({ + guilds_key: item.key, + state: "rejected", + message: text, + role: getRoleFromUrl(), + }) ).then((r) => { if (r.payload.error) { openNotif({ diff --git a/src/features/province/components/manage-guilds-requests/ManageGuildsRequests.js b/src/features/province/components/manage-guilds-requests/ManageGuildsRequests.js index 4fd9bd6..fd78c65 100644 --- a/src/features/province/components/manage-guilds-requests/ManageGuildsRequests.js +++ b/src/features/province/components/manage-guilds-requests/ManageGuildsRequests.js @@ -53,8 +53,8 @@ export const ManageGuildsRequests = ({ userType }) => { }) ); dispatch(LOADING_END()); - setData(response.data?.results || []); - setTotalRows(response.data?.count || 0); + setData(response.payload?.data?.results || []); + setTotalRows(response.payload?.data?.count || 0); }; const handlePageChange = (page) => { @@ -72,6 +72,7 @@ export const ManageGuildsRequests = ({ userType }) => { }; useEffect(() => { + console.log(data); const d = data?.map((item, i) => { return [ page === 1 ? i + 1 : i + perPage * (page - 1) + 1, @@ -79,21 +80,21 @@ export const ManageGuildsRequests = ({ userType }) => { item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " " }`, item?.licenseNumber || "-", - item?.guildsName || "-", + item?.name || "-", `${item?.user?.fullname || "-"} (${item?.user?.mobile || "-"})`, item?.user?.nationalId || "-", item?.typeActivity || "-", item?.areaActivity || "-", item?.address?.postalCode || "-", - `${item?.address?.province?.name || "-"}/${ + `${item?.address?.province?.name || "-"} / ${ item?.address?.city?.name || "-" - }/${item?.address?.address || "-"}`, + } / ${item?.address?.address || "-"}`, item?.hasInquiry ? "استعلامی" : "دستی", item?.activeRegisterCode ? "انجام شده" : "انجام نشده", , ]; @@ -121,8 +122,8 @@ export const ManageGuildsRequests = ({ userType }) => { state: "pending", }) ); - setData(response.data?.results || []); - setTotalRows(response.data?.count || 0); + setData(response.payload?.data?.results || []); + setTotalRows(response.payload?.data?.count || 0); dispatch(LOADING_END()); } catch (error) { console.error("Error fetching data:", error); @@ -182,14 +183,14 @@ export const ManageGuildsRequests = ({ userType }) => { columns={[ "ردیف", "ثبت کننده", - `${IS_STEWARD ? "مباشر" : "صنف"} شناسه`, + `شناسه ${IS_STEWARD ? "مباشر" : "صنف"}`, `نام ${IS_STEWARD ? "مباشر" : "واحد صنفی"}`, "نام شخص/شرکت", - "کدملی", + "کد ملی", "نوع فعالیت", "حوزه فعالیت", "کدپستی", - "استان/شهر/آدرس", + "استان / شهر / آدرس", "نوع ثبت", "احراز شماره موبایل", "عملیات", diff --git a/src/features/province/components/manage-guilds/ManageGuilds.js b/src/features/province/components/manage-guilds/ManageGuilds.js index 1e26261..ce6ae3d 100644 --- a/src/features/province/components/manage-guilds/ManageGuilds.js +++ b/src/features/province/components/manage-guilds/ManageGuilds.js @@ -13,6 +13,7 @@ import { SPACING } from "../../../../data/spacing"; import { SimpleTable } from "../../../../components/simple-table/SimpleTable"; import { CreateGuilds } from "../create-guilds/CreateGuilds"; import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith"; +import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards"; export const ManageGuilds = ({ userType }) => { const IS_STEWARD = userType === "steward"; @@ -37,18 +38,30 @@ export const ManageGuilds = ({ userType }) => { const fetchApiData = async (page) => { const response = await dispatch( - provinceGetTotalGuildsService({ - search: "filter", - value: textValue, - page: page, - page_size: perPage, - steward: false, - active_state: activeState, - is_real_person: true, - role_key: checkPathStartsWith("province") - ? selectedSubUser?.key || "" - : "", - }) + IS_STEWARD + ? provinceGetTotalStewardsService({ + search: "filter", + value: textValue, + page: page, + page_size: perPage, + active_state: activeState, + is_real_person: true, + role_key: checkPathStartsWith("province") + ? selectedSubUser?.key || "" + : "", + }) + : provinceGetTotalGuildsService({ + search: "filter", + value: textValue, + page: page, + page_size: perPage, + steward: false, + active_state: activeState, + is_real_person: true, + role_key: checkPathStartsWith("province") + ? selectedSubUser?.key || "" + : "", + }) ); if (response.payload.error) { @@ -88,15 +101,15 @@ export const ManageGuilds = ({ userType }) => { const commonData = [ page === 1 ? i + 1 : i + perPage * (page - 1) + 1, item?.licenseNumber || "-", - item?.guildsName || "-", + (IS_STEWARD ? item?.name : item?.guildsName) || "-", `${item?.user?.fullname || "-"} (${item?.user?.mobile || "-"})`, item?.user?.nationalId ? item?.user?.nationalId : "-", item?.typeActivity || "-", item?.areaActivity || "-", item?.address?.postalCode || "-", - `${item?.address?.province?.name || "-"}/${ + `${item?.address?.province?.name || "-"} / ${ item?.address?.city?.name || "-" - }/${item?.address?.address || "-"}`, + } / ${item?.address?.address || "-"}`, item?.steward ? "می باشد" : "نمی باشد", item?.limitationAllocation ? "دارد" : "ندارد", item?.allocationLimit ? item?.allocationLimit : "-", @@ -196,7 +209,8 @@ export const ManageGuilds = ({ userType }) => { if (getRoleFromUrl() !== "KillHouse") { commonData.push( @@ -346,7 +360,7 @@ export const ManageGuilds = ({ userType }) => { getRoleFromUrl() === "CityJahad" || getRoleFromUrl() === "CityPoultry" ? [ "ردیف", - "شناسه صنف", + IS_STEWARD ? "شناسه مباشر" : "شناسه صنف", "نام واحد صنفی", "نام شخص/شرکت", "کدملی", @@ -367,7 +381,7 @@ export const ManageGuilds = ({ userType }) => { : getRoleFromUrl() === "KillHouse" ? [ "ردیف", - "شناسه صنف", + IS_STEWARD ? "شناسه مباشر" : "شناسه صنف", "نام واحد صنفی", "نام شخص/شرکت", "کدملی", @@ -386,7 +400,7 @@ export const ManageGuilds = ({ userType }) => { ] : [ "ردیف", - "شناسه صنف", + IS_STEWARD ? "شناسه مباشر" : "شناسه صنف", "نام واحد صنفی", "نام شخص/شرکت", "کدملی", diff --git a/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsForm.js b/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsForm.js index 1fedb72..1e197ab 100644 --- a/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsForm.js +++ b/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsForm.js @@ -17,20 +17,26 @@ import { Select, MenuItem, InputLabel, + Autocomplete, } from "@mui/material"; import BusinessIcon from "@mui/icons-material/Business"; -import PublicIcon from "@mui/icons-material/Public"; import PersonIcon from "@mui/icons-material/Person"; import BadgeIcon from "@mui/icons-material/Badge"; import { Grid } from "../../../../components/grid/Grid"; import { SPACING } from "../../../../data/spacing"; -import { CLOSE_MODAL, OPEN_MODAL } from "../../../../lib/redux/slices/appSlice"; +import { + CLOSE_MODAL, + LOADING_END, + LOADING_START, + OPEN_MODAL, +} from "../../../../lib/redux/slices/appSlice"; import { AppContext } from "../../../../contexts/AppContext"; import { provinceGetLegalPersonUnitInfoService } from "../../services/province-get-legal-person-unit-info"; import { provinceCreateLegalGuildService } from "../../services/province-create-legal-guild"; -import { provinceGetCitiesService } from "../../services/province-get-cities"; import { provinceGetTypeActivity } from "../../services/provinceGetTypeActivity"; import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl"; +import { cityGetProvinces } from "../../../city/services/CityGetProvinces"; +import { cityGetCity } from "../../../city/services/city-get-city"; let preservedUserData = null; let preservedUserFound = false; @@ -90,10 +96,11 @@ const getValidationSchema = (isAdmin, userFound) => .string() .required("شناسه حقوقی الزامی است") .matches(/^[0-9]{11}$/, "شناسه حقوقی باید 11 رقم باشد"), - first_name: isAdmin || !userFound ? yup.string() : yup.string(), - last_name: isAdmin || !userFound ? yup.string() : yup.string(), - unit_name: isAdmin || !userFound ? yup.string() : yup.string(), - province: isAdmin || !userFound ? yup.string() : yup.string(), + first_name: yup.string(), + last_name: yup.string(), + unit_name: yup.string(), + name: yup.string(), + province: yup.string(), city: yup.string(), mobile: isAdmin || !userFound @@ -106,25 +113,56 @@ const getValidationSchema = (isAdmin, userFound) => (value) => !value || /^[0-9]{11}$/.test(value) ) : yup.string(), - type_activity: isAdmin || !userFound ? yup.string() : yup.string(), + type_activity: yup.string(), }); -const LegalGuildForm = ({ formik, isAdmin, cities, typeActivities }) => { +const LegalGuildForm = ({ formik, isAdmin, typeActivities, userType }) => { + 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 (
- - - اطلاعات واحد حقوقی - - - @@ -205,19 +243,23 @@ const LegalGuildForm = ({ formik, isAdmin, cities, typeActivities }) => { label="نام واحد" variant="outlined" fullWidth - id="unit_name" - name="unit_name" - value={formik.values.unit_name} + id={IS_STEWARD ? "name" : "unit_name"} + name={IS_STEWARD ? "name" : "unit_name"} + value={formik.values[IS_STEWARD ? "name" : "unit_name"]} onChange={formik.handleChange} onBlur={formik.handleBlur} - error={Boolean(formik.errors.unit_name)} - helperText={formik.errors.unit_name} + error={Boolean( + formik.errors[IS_STEWARD ? "name" : "unit_name"] + )} + helperText={ + formik.errors[IS_STEWARD ? "name" : "unit_name"] + } /> ) : ( )} @@ -227,61 +269,56 @@ const LegalGuildForm = ({ formik, isAdmin, cities, typeActivities }) => { - {isAdmin ? ( - - ) : ( - - )} + ({ + id: i.key, + label: i.name, + })) + : [] + } + onChange={(e, value) => { + formik.setFieldValue("province", value ? value.id : ""); + formik.setFieldValue("city", ""); + }} + renderInput={(params) => ( + + )} + /> - - شهرستان - - + ({ id: i.name, label: i.name })) + : [] + } + onChange={(e, value) => { + formik.setFieldValue("city", value ? value.id : ""); + }} + renderInput={(params) => ( + + )} + /> @@ -396,44 +433,45 @@ const InquiryForm = ({ onInquiry, nationalCode, setNationalCode }) => { export const ProvinceLegalGuildsForm = ({ onClose, updateTable, - guild, + item, userType, }) => { const IS_STEWARD = userType === "steward"; + const userInitialValue = { + national_id: item?.user?.national_id || "", + first_name: item?.user?.firstName || "", + last_name: item?.user?.lastName || "", + province: item?.address?.province?.name || "", + city: item?.address?.city?.name || "", + address: item?.address?.address || "", + mobile: item?.user?.mobile || "", + type_activity: item?.typeActivity || "", + }; + + if (IS_STEWARD) { + userInitialValue["name"] = item?.name; + } else { + userInitialValue["unit_name"] = item?.unitName; + } + const dispatch = useDispatch(); const [openNotif] = useContext(AppContext); const [nationalCode, setNationalCode] = useState( - guild?.user?.national_id || - guild?.national_code || + item?.user?.national_id || + item?.national_code || preservedNationalCode || "" ); const [userData, setUserData] = useState( - guild - ? { - national_id: guild?.user?.national_id || guild?.national_code || "", - first_name: guild?.user?.first_name || "", - last_name: guild?.user?.last_name || "", - unit_name: guild?.guilds_name || "", - province: guild?.address?.province?.name || "", - city: guild?.address?.city?.name || "", - address: guild?.address?.address || "", - mobile: guild?.user?.mobile || "", - type_activity: guild?.type_activity || "", - } - : preservedUserData + item ? userInitialValue : preservedUserData ); - const [userFound, setUserFound] = useState(guild ? true : preservedUserFound); - const [cities, setCities] = useState([]); + const [userFound, setUserFound] = useState(item ? true : preservedUserFound); const [typeActivities, setTypeActivities] = useState([]); const currentRole = getRoleFromUrl(); const isAdmin = currentRole === "AdminX"; useEffect(() => { - dispatch(provinceGetCitiesService()).then((r) => { - setCities(r.payload.data || []); - }); dispatch(provinceGetTypeActivity()).then((r) => { setTypeActivities(r.payload.data || []); }); @@ -460,11 +498,14 @@ export const ProvinceLegalGuildsForm = ({ // Update modal with larger size dispatch( OPEN_MODAL({ - title: `ثبت ${IS_STEWARD ? "مباشر" : "صنف"} حقوقی`, + title: `${item ? "ویرایش" : "ثبت"} ${ + IS_STEWARD ? "مباشر" : "صنف" + } حقوقی`, content: ( ), size: { xs: "96vw", md: "90vw", lg: "600px" }, @@ -489,16 +530,29 @@ export const ProvinceLegalGuildsForm = ({ setUserFound(false); if (isAdmin) { // Admin can create even if user not found - setUserData({ - is_real_person: false, - first_name: "", - last_name: "", - national_id: nationalCode, - province: "", - unit_name: "", - mobile: "", - type_activity: "", - }); + setUserData( + IS_STEWARD + ? { + is_real_person: false, + first_name: "", + last_name: "", + national_id: nationalCode, + province: "", + name: "", + mobile: "", + type_activity: "", + } + : { + is_real_person: false, + first_name: "", + last_name: "", + national_id: nationalCode, + province: "", + unit_name: "", + mobile: "", + type_activity: "", + } + ); } else { openNotif({ vertical: "top", @@ -524,21 +578,28 @@ export const ProvinceLegalGuildsForm = ({ }); } }); - }, [dispatch, nationalCode, openNotif, isAdmin]); + }, [dispatch, nationalCode, openNotif, isAdmin, IS_STEWARD]); + + const formikIntitialValues = { + national_id: userData?.national_id || userData?.nationalId || "", + first_name: userData?.first_name || userData?.firstName || "", + last_name: userData?.last_name || userData?.lastName || "", + province: userData?.province || "", + city: userData?.city || "", + address: userData?.address || "", + mobile: userData?.mobile || "", + type_activity: userData?.type_activity || "", + }; + + if (IS_STEWARD) { + formikIntitialValues["name"] = userData?.name; + } else { + formikIntitialValues["unit_name"] = userData?.unit_name; + } const formik = useFormik({ - initialValues: { - national_id: userData?.national_id || userData?.nationalId || "", - first_name: userData?.first_name || userData?.firstName || "", - last_name: userData?.last_name || userData?.lastName || "", - unit_name: userData?.unit_name || userData?.unitName || "", - province: userData?.province || "", - city: userData?.city || "", - address: userData?.address || "", - mobile: userData?.mobile || "", - type_activity: userData?.type_activity || "", - }, - validationSchema: getValidationSchema(isAdmin, userFound), + initialValues: formikIntitialValues, + validationSchema: getValidationSchema(isAdmin, userFound, userType), enableReinitialize: true, onSubmit: (values) => { // Find type_activity key from the title @@ -553,13 +614,18 @@ export const ProvinceLegalGuildsForm = ({ national_id: values.national_id, province: values.province, address: values.address || "", - unit_name: values.unit_name, mobile: values.mobile || "", city: values.city, type_activity: typeActivityKey, // Send key instead of title - ...(guild?.key && { guilds_key: guild.key }), // Include guild key for editing + ...(item?.key && { guilds_key: item.key }), // Include guild key for editing }; + if (IS_STEWARD) { + submitData["name"] = values?.name; + } else { + submitData["unit_name"] = values?.unit_name; + } + dispatch(provinceCreateLegalGuildService(submitData)).then((r) => { if (r.payload.error) { openNotif({ @@ -584,7 +650,7 @@ export const ProvinceLegalGuildsForm = ({ }, }); - if (!userData && !guild) { + if (!userData && !item) { return ( ); }; diff --git a/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsInProvince.js b/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsInProvince.js index da0c6a7..ad83c4f 100644 --- a/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsInProvince.js +++ b/src/features/province/components/province-legal-guilds-in-province/ProvinceLegalGuildsInProvince.js @@ -1,8 +1,6 @@ import React, { useEffect, useState } from "react"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; import { Button, TextField } from "@mui/material"; -import { DatePicker } from "@mui/x-date-pickers"; -import moment from "moment"; import { Grid } from "../../../../components/grid/Grid"; import { SPACING } from "../../../../data/spacing"; import { CLOSE_MODAL, OPEN_MODAL } from "../../../../lib/redux/slices/appSlice"; @@ -11,6 +9,8 @@ import { ProvinceLegalGuildsForm } from "./ProvinceLegalGuildsForm"; import { ProvinceLegalGuildsOperations } from "./ProvinceLegalGuildsOperations"; import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable"; import { RiSearchLine } from "react-icons/ri"; +import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards"; +import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith"; export const ProvinceLegalGuildsInProvince = ({ userType }) => { const IS_STEWARD = userType === "steward"; @@ -22,29 +22,40 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => { const [textValue, setTextValue] = useState(""); const [page, setPage] = useState(1); const [tableData, setTableData] = useState([]); - const [selectedDate1, setSelectedDate1] = useState(null); - const [selectedDate2, setSelectedDate2] = useState(null); + const selectedSubUser = useSelector( + (state) => state.userSlice.selectedSubUser + ); const handleTextChange = (e) => setTextValue(e.target.value); const fetchApiData = async (pageNum) => { - const response = await dispatch( - provinceGetTotalGuildsService({ - search: "filter", - value: textValue, - page: pageNum, - page_size: perPage, - steward: false, - active_state: "all", - is_real_person: false, - ...(selectedDate1 && { - date_from: moment(selectedDate1).format("YYYY-MM-DD"), - }), - ...(selectedDate2 && { - date_to: moment(selectedDate2).format("YYYY-MM-DD"), - }), - }) - ); + 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, + }) + ); + } if (response.payload.error) { console.error("Error fetching data:", response.payload.error); @@ -80,7 +91,7 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => { return [ page === 1 ? i + 1 : i + perPage * (page - 1) + 1, item?.nationalId || "-", - item?.guildsName || "-", + (IS_STEWARD ? item?.name : item?.guildsName) || "-", `${item?.user?.fullname || "-"}`, item?.user?.mobile || "-", item?.address?.province?.name || "-", @@ -89,7 +100,7 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => { item?.active ? "فعال" : "غیر فعال", , @@ -119,12 +130,6 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => { steward: false, active_state: "all", is_real_person: false, - ...(selectedDate1 && { - date_from: moment(selectedDate1).format("YYYY-MM-DD"), - }), - ...(selectedDate2 && { - date_to: moment(selectedDate2).format("YYYY-MM-DD"), - }), }) ); @@ -156,13 +161,13 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => { }; return ( - +