fixed form for create guilds basiclly
This commit is contained in:
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
@@ -1,3 +1,14 @@
|
|||||||
{
|
{
|
||||||
"workbench.editor.enablePreviewFromCodeNavigation": true
|
"workbench.editor.enablePreviewFromCodeNavigation": true,
|
||||||
|
"launch": {
|
||||||
|
"configurations": [],
|
||||||
|
"compounds": []
|
||||||
|
},
|
||||||
|
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint",
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"notebook.defaultFormatter": "rvest.vs-code-prettier-eslint",
|
||||||
|
"notebook.formatOnSave.enabled": true,
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import { provinceGetFieldOfWorks } from "../../services/ProvinceGetFieldOfWorks"
|
|||||||
import { provinceGetTypeActivity } from "../../services/provinceGetTypeActivity";
|
import { provinceGetTypeActivity } from "../../services/provinceGetTypeActivity";
|
||||||
import { provinceGetRegisterCodeStateService } from "../../services/province-get-register-code-state";
|
import { provinceGetRegisterCodeStateService } from "../../services/province-get-register-code-state";
|
||||||
import { mainGetGuildsForUpdateOrCreateService } from "../../services/main-get-guilds-for-update-or-create";
|
import { mainGetGuildsForUpdateOrCreateService } from "../../services/main-get-guilds-for-update-or-create";
|
||||||
|
import { cityGetProvinces } from "../../../city/services/CityGetProvinces";
|
||||||
|
import { cityGetCity } from "../../../city/services/city-get-city";
|
||||||
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
|
||||||
import { PersonalInfoSection } from "./components/PersonalInfoSection";
|
import { PersonalInfoSection } from "./components/PersonalInfoSection";
|
||||||
import { InquiryForm } from "./components/InquiryForm";
|
import { InquiryForm } from "./components/InquiryForm";
|
||||||
@@ -87,6 +89,8 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
return [];
|
return [];
|
||||||
});
|
});
|
||||||
const [cities, setCities] = useState([]);
|
const [cities, setCities] = useState([]);
|
||||||
|
const [provinces, setProvinces] = useState([]);
|
||||||
|
const [provinceCities, setProvinceCities] = useState([]);
|
||||||
const [typeActivities, setTypeActivities] = useState([]);
|
const [typeActivities, setTypeActivities] = useState([]);
|
||||||
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
||||||
const [deleteDialogIndex, setDeleteDialogIndex] = useState(null);
|
const [deleteDialogIndex, setDeleteDialogIndex] = useState(null);
|
||||||
@@ -109,6 +113,7 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
const combinedValues = {
|
const combinedValues = {
|
||||||
...values, // Personal info (shared)
|
...values, // Personal info (shared)
|
||||||
...guildValues, // Guild-specific info (overrides if same keys exist)
|
...guildValues, // Guild-specific info (overrides if same keys exist)
|
||||||
|
national_id: values?.national_id,
|
||||||
};
|
};
|
||||||
return prepareSubmitData(
|
return prepareSubmitData(
|
||||||
combinedValues,
|
combinedValues,
|
||||||
@@ -117,7 +122,7 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
hasInquiry
|
hasInquiry
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
console.log(guildsDataArray);
|
||||||
dispatch(updateGuildByNationalIdNewService(guildsDataArray)).then(
|
dispatch(updateGuildByNationalIdNewService(guildsDataArray)).then(
|
||||||
(result) => {
|
(result) => {
|
||||||
if (result.payload.error) {
|
if (result.payload.error) {
|
||||||
@@ -151,12 +156,78 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
dispatch(provinceGetTypeActivity()).then((r) => {
|
dispatch(provinceGetTypeActivity()).then((r) => {
|
||||||
setTypeActivities(r.payload.data || []);
|
setTypeActivities(r.payload.data || []);
|
||||||
});
|
});
|
||||||
|
// Fetch provinces for province/city selection
|
||||||
|
dispatch(cityGetProvinces()).then((r) => {
|
||||||
|
if (r?.payload?.data) {
|
||||||
|
setProvinces(r.payload.data);
|
||||||
|
}
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
// Initialize Formik's guilds array if we have initial guild data
|
||||||
|
if (guild && guildsList.length > 0) {
|
||||||
|
const guildsForFormik = guildsList.map((guildItem) => {
|
||||||
|
const combinedGuild = {
|
||||||
|
...guildItem,
|
||||||
|
user: guild?.user || {},
|
||||||
|
};
|
||||||
|
const initialValues = getInitialValues(combinedGuild);
|
||||||
|
return {
|
||||||
|
steward: initialValues.steward || false,
|
||||||
|
guild: initialValues.guild || false,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
formik.setFieldValue("guilds", guildsForFormik, false).then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
|
}
|
||||||
formik.validateForm();
|
formik.validateForm();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// Set province ID from state name when provinces are loaded
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
formik.values.state &&
|
||||||
|
provinces.length > 0 &&
|
||||||
|
!formik.values.province
|
||||||
|
) {
|
||||||
|
const province = provinces.find((p) => p.name === formik.values.state);
|
||||||
|
if (province) {
|
||||||
|
formik.setFieldValue("province", province.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [provinces, formik.values.state, formik.values.province]);
|
||||||
|
|
||||||
|
// Fetch cities when province is selected
|
||||||
|
useEffect(() => {
|
||||||
|
if (formik.values.province) {
|
||||||
|
dispatch(cityGetCity(formik.values.province)).then((r) => {
|
||||||
|
if (r?.payload?.data) {
|
||||||
|
setProvinceCities(r.payload.data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setProvinceCities([]);
|
||||||
|
}
|
||||||
|
}, [formik.values.province, dispatch]);
|
||||||
|
|
||||||
|
// Set city ID from person_city name when provinceCities are loaded
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
formik.values.person_city &&
|
||||||
|
!formik.values.city &&
|
||||||
|
provinceCities.length > 0
|
||||||
|
) {
|
||||||
|
const city = provinceCities.find(
|
||||||
|
(c) => c.name === formik.values.person_city
|
||||||
|
);
|
||||||
|
if (city) {
|
||||||
|
formik.setFieldValue("city", city.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [provinceCities, formik.values.person_city, formik.values.city]);
|
||||||
|
|
||||||
const mapResponseToFormFields = useCallback(
|
const mapResponseToFormFields = useCallback(
|
||||||
(responseData) => {
|
(responseData) => {
|
||||||
const guildsData = Array.isArray(responseData.guilds)
|
const guildsData = Array.isArray(responseData.guilds)
|
||||||
@@ -187,10 +258,34 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
return getInitialValues(combinedGuild);
|
return getInitialValues(combinedGuild);
|
||||||
});
|
});
|
||||||
setGuildsFormValues(initialGuildValues);
|
setGuildsFormValues(initialGuildValues);
|
||||||
|
|
||||||
|
// Update Formik's guilds array for validation
|
||||||
|
const guildsForFormik = guildsData.map((guildItem) => ({
|
||||||
|
steward:
|
||||||
|
typeof guildItem?.steward === "boolean"
|
||||||
|
? guildItem.steward
|
||||||
|
: typeof guildItem?.isSteward === "boolean"
|
||||||
|
? guildItem.isSteward
|
||||||
|
: false,
|
||||||
|
guild:
|
||||||
|
typeof guildItem?.guild === "boolean"
|
||||||
|
? guildItem.guild
|
||||||
|
: typeof guildItem?.isGuild === "boolean"
|
||||||
|
? guildItem.isGuild
|
||||||
|
: false,
|
||||||
|
}));
|
||||||
|
formik.setFieldValue("guilds", guildsForFormik, true).then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
|
|
||||||
setExpandedAccordion(0);
|
setExpandedAccordion(0);
|
||||||
} else {
|
} else {
|
||||||
setGuildsList([]);
|
setGuildsList([]);
|
||||||
setGuildsFormValues([]);
|
setGuildsFormValues([]);
|
||||||
|
|
||||||
|
formik.setFieldValue("guilds", [], true).then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -333,6 +428,19 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
const newIndex = guildsList.length;
|
const newIndex = guildsList.length;
|
||||||
setGuildsList([...guildsList, null]);
|
setGuildsList([...guildsList, null]);
|
||||||
setGuildsFormValues([...guildsFormValues, getInitialValues(null)]);
|
setGuildsFormValues([...guildsFormValues, getInitialValues(null)]);
|
||||||
|
|
||||||
|
// Add to Formik's guilds array for validation
|
||||||
|
const currentGuilds = formik.values.guilds || [];
|
||||||
|
formik
|
||||||
|
.setFieldValue(
|
||||||
|
"guilds",
|
||||||
|
[...currentGuilds, { steward: false, guild: false }],
|
||||||
|
true
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
|
|
||||||
setExpandedAccordion(newIndex);
|
setExpandedAccordion(newIndex);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -346,6 +454,19 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
if (guildsList.length > 1) {
|
if (guildsList.length > 1) {
|
||||||
setGuildsList(guildsList.filter((_, i) => i !== index));
|
setGuildsList(guildsList.filter((_, i) => i !== index));
|
||||||
setGuildsFormValues(guildsFormValues.filter((_, i) => i !== index));
|
setGuildsFormValues(guildsFormValues.filter((_, i) => i !== index));
|
||||||
|
|
||||||
|
// Remove from Formik's guilds array
|
||||||
|
const currentGuilds = formik.values.guilds || [];
|
||||||
|
formik
|
||||||
|
.setFieldValue(
|
||||||
|
"guilds",
|
||||||
|
currentGuilds.filter((_, i) => i !== index),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
|
|
||||||
if (expandedAccordion === index) {
|
if (expandedAccordion === index) {
|
||||||
setExpandedAccordion(0);
|
setExpandedAccordion(0);
|
||||||
} else if (expandedAccordion > index) {
|
} else if (expandedAccordion > index) {
|
||||||
@@ -386,6 +507,19 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
setGuildsFormValues(
|
setGuildsFormValues(
|
||||||
guildsFormValues.filter((_, i) => i !== deleteDialogIndex)
|
guildsFormValues.filter((_, i) => i !== deleteDialogIndex)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Remove from Formik's guilds array
|
||||||
|
const currentGuilds = formik.values.guilds || [];
|
||||||
|
formik
|
||||||
|
.setFieldValue(
|
||||||
|
"guilds",
|
||||||
|
currentGuilds.filter((_, i) => i !== deleteDialogIndex),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
|
|
||||||
// If deleted accordion was expanded, expand the first one
|
// If deleted accordion was expanded, expand the first one
|
||||||
if (expandedAccordion === deleteDialogIndex) {
|
if (expandedAccordion === deleteDialogIndex) {
|
||||||
setExpandedAccordion(0);
|
setExpandedAccordion(0);
|
||||||
@@ -408,19 +542,38 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGuildValuesChange = useCallback((index, fieldName, value) => {
|
const handleGuildValuesChange = useCallback(
|
||||||
setGuildsFormValues((prev) => {
|
(index, fieldName, value) => {
|
||||||
const newValues = [...prev];
|
setGuildsFormValues((prev) => {
|
||||||
if (!newValues[index]) {
|
const newValues = [...prev];
|
||||||
newValues[index] = getInitialValues(null);
|
if (!newValues[index]) {
|
||||||
|
newValues[index] = getInitialValues(null);
|
||||||
|
}
|
||||||
|
newValues[index] = {
|
||||||
|
...newValues[index],
|
||||||
|
[fieldName]: value,
|
||||||
|
};
|
||||||
|
return newValues;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Sync with Formik's guilds array for steward and guild fields
|
||||||
|
if (fieldName === "steward" || fieldName === "guild") {
|
||||||
|
const currentGuilds = formik.values.guilds || [];
|
||||||
|
const updatedGuilds = [...currentGuilds];
|
||||||
|
if (!updatedGuilds[index]) {
|
||||||
|
updatedGuilds[index] = { steward: false, guild: false };
|
||||||
|
}
|
||||||
|
updatedGuilds[index] = {
|
||||||
|
...updatedGuilds[index],
|
||||||
|
[fieldName]: value,
|
||||||
|
};
|
||||||
|
formik.setFieldValue("guilds", updatedGuilds, true).then(() => {
|
||||||
|
formik.validateField("guilds");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
newValues[index] = {
|
},
|
||||||
...newValues[index],
|
[formik]
|
||||||
[fieldName]: value,
|
);
|
||||||
};
|
|
||||||
return newValues;
|
|
||||||
});
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const handleAccordionChange = (index) => (event, isExpanded) => {
|
const handleAccordionChange = (index) => (event, isExpanded) => {
|
||||||
setExpandedAccordion(isExpanded ? index : false);
|
setExpandedAccordion(isExpanded ? index : false);
|
||||||
@@ -438,6 +591,8 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
const shouldShowInquiryForm = !guild && !isInquiryDone;
|
const shouldShowInquiryForm = !guild && !isInquiryDone;
|
||||||
const shouldShowFormContent = guild || isInquiryDone;
|
const shouldShowFormContent = guild || isInquiryDone;
|
||||||
|
|
||||||
|
console.log(formik.errors);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={formik.handleSubmit}>
|
<form onSubmit={formik.handleSubmit}>
|
||||||
<Grid
|
<Grid
|
||||||
@@ -483,6 +638,9 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
isSuperAdmin={isSuperAdmin}
|
isSuperAdmin={isSuperAdmin}
|
||||||
isKillHouse={isKillHouse}
|
isKillHouse={isKillHouse}
|
||||||
|
provinces={provinces}
|
||||||
|
provinceCities={provinceCities}
|
||||||
|
guildsList={guildsList}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
@@ -507,7 +665,10 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
guildData={guildItem}
|
guildData={guildItem}
|
||||||
guildActive={guildActive}
|
guildActive={guildActive}
|
||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
cities={cities}
|
isSuperAdmin={isSuperAdmin}
|
||||||
|
cities={
|
||||||
|
provinceCities.length > 0 ? provinceCities : cities
|
||||||
|
}
|
||||||
typeActivities={typeActivities}
|
typeActivities={typeActivities}
|
||||||
onDelete={() => handleDeleteGuild(index)}
|
onDelete={() => handleDeleteGuild(index)}
|
||||||
canDelete={
|
canDelete={
|
||||||
@@ -561,6 +722,18 @@ export const CreateGuilds = ({ guild, updateTable }) => {
|
|||||||
!isSuperAdmin &&
|
!isSuperAdmin &&
|
||||||
!isKillHouse
|
!isKillHouse
|
||||||
}
|
}
|
||||||
|
formData={guildsList.map((guildItem, index) => {
|
||||||
|
const guildValues = guildsFormValues[index];
|
||||||
|
const combinedValues = {
|
||||||
|
...guildValues, // Guild-specific info (overrides if same keys exist)
|
||||||
|
};
|
||||||
|
return prepareSubmitData(
|
||||||
|
combinedValues,
|
||||||
|
guildItem,
|
||||||
|
originalPhoneNumber,
|
||||||
|
hasInquiry
|
||||||
|
);
|
||||||
|
})}
|
||||||
isKillHouse={isKillHouse}
|
isKillHouse={isKillHouse}
|
||||||
onSubmit={formik.handleSubmit}
|
onSubmit={formik.handleSubmit}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -19,11 +19,14 @@ export const FormActions = ({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For KillHouse: check if area_activity contains "مرغ"
|
|
||||||
const isAreaActivityValid = isKillHouse
|
const isAreaActivityValid = isKillHouse
|
||||||
? formik.values.area_activity && formik.values.area_activity.includes("مرغ")
|
? formik.values.area_activity && formik.values.area_activity.includes("مرغ")
|
||||||
: true;
|
: true;
|
||||||
|
|
||||||
|
// Check if guilds validation has errors
|
||||||
|
const hasGuildsError = formik.errors.guilds;
|
||||||
|
const hasGuilds = formik.values.guilds && formik.values.guilds.length > 0;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
@@ -44,7 +47,9 @@ export const FormActions = ({
|
|||||||
disabled={
|
disabled={
|
||||||
formik.errors.isAccepted ||
|
formik.errors.isAccepted ||
|
||||||
Boolean(formik.errors.national_id) ||
|
Boolean(formik.errors.national_id) ||
|
||||||
!isAreaActivityValid
|
!isAreaActivityValid ||
|
||||||
|
hasGuildsError ||
|
||||||
|
!hasGuilds
|
||||||
}
|
}
|
||||||
color="primary"
|
color="primary"
|
||||||
fullWidth
|
fullWidth
|
||||||
@@ -63,6 +68,15 @@ export const FormActions = ({
|
|||||||
رسته واحد صنفی باید شامل کلمه "مرغ" باشد
|
رسته واحد صنفی باید شامل کلمه "مرغ" باشد
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
|
{hasGuildsError && (
|
||||||
|
<Typography
|
||||||
|
variant="caption"
|
||||||
|
color="error"
|
||||||
|
sx={{ mt: 1, display: "block" }}
|
||||||
|
>
|
||||||
|
{formik.errors.guilds}
|
||||||
|
</Typography>
|
||||||
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export const GuildInfoAccordionItem = ({
|
|||||||
guildData,
|
guildData,
|
||||||
guildActive,
|
guildActive,
|
||||||
isAdmin,
|
isAdmin,
|
||||||
|
isSuperAdmin,
|
||||||
cities,
|
cities,
|
||||||
typeActivities,
|
typeActivities,
|
||||||
onDelete,
|
onDelete,
|
||||||
@@ -86,6 +87,7 @@ export const GuildInfoAccordionItem = ({
|
|||||||
guild={guildData}
|
guild={guildData}
|
||||||
guildActive={guildActive}
|
guildActive={guildActive}
|
||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
|
isSuperAdmin={isSuperAdmin}
|
||||||
cities={cities}
|
cities={cities}
|
||||||
typeActivities={typeActivities}
|
typeActivities={typeActivities}
|
||||||
hideTitle={true}
|
hideTitle={true}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
MenuItem,
|
MenuItem,
|
||||||
InputLabel,
|
InputLabel,
|
||||||
Checkbox,
|
Checkbox,
|
||||||
|
Autocomplete,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { DatePicker } from "@mui/x-date-pickers";
|
import { DatePicker } from "@mui/x-date-pickers";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
@@ -40,6 +41,7 @@ export const GuildInfoSection = ({
|
|||||||
guild,
|
guild,
|
||||||
guildActive,
|
guildActive,
|
||||||
isAdmin,
|
isAdmin,
|
||||||
|
isSuperAdmin,
|
||||||
cities,
|
cities,
|
||||||
typeActivities,
|
typeActivities,
|
||||||
hideTitle = false,
|
hideTitle = false,
|
||||||
@@ -81,7 +83,7 @@ export const GuildInfoSection = ({
|
|||||||
xs={12}
|
xs={12}
|
||||||
md={6}
|
md={6}
|
||||||
px={SPACING.TINY}
|
px={SPACING.TINY}
|
||||||
gap={SPACING.TINY}
|
gap={SPACING.SMALL}
|
||||||
>
|
>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{isAdmin ? (
|
{isAdmin ? (
|
||||||
@@ -150,60 +152,47 @@ export const GuildInfoSection = ({
|
|||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{isAdmin ? (
|
{isAdmin ? (
|
||||||
<TextField
|
<Autocomplete
|
||||||
label="استان"
|
size="small"
|
||||||
variant="outlined"
|
style={{ width: "100%" }}
|
||||||
fullWidth
|
disablePortal
|
||||||
id="state"
|
id="city_name"
|
||||||
name="state"
|
disabled={!cities || cities.length === 0}
|
||||||
value={formik.values.state}
|
options={
|
||||||
onChange={formik.handleChange}
|
cities
|
||||||
onBlur={formik.handleBlur}
|
? cities.map((i) => ({
|
||||||
|
id: i.key,
|
||||||
|
label: i.name,
|
||||||
|
}))
|
||||||
|
: []
|
||||||
|
}
|
||||||
|
value={
|
||||||
|
cities.find((c) => c.name === formik.values.city_name)
|
||||||
|
? {
|
||||||
|
id: cities.find(
|
||||||
|
(c) => c.name === formik.values.city_name
|
||||||
|
)?.key,
|
||||||
|
label: formik.values.city_name,
|
||||||
|
}
|
||||||
|
: formik.values.city_name
|
||||||
|
? {
|
||||||
|
id: null,
|
||||||
|
label: formik.values.city_name,
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
onChange={(e, value) => {
|
||||||
|
formik.setFieldValue("city_name", value ? value.label : "");
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField {...params} label="شهرستان" />
|
||||||
|
)}
|
||||||
/>
|
/>
|
||||||
) : (
|
|
||||||
<InfoBox
|
|
||||||
icon={PublicIcon}
|
|
||||||
label="استان"
|
|
||||||
value={formik.values.state}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12}>
|
|
||||||
{isAdmin ? (
|
|
||||||
<FormControl fullWidth>
|
|
||||||
<InputLabel id="city-select-label">شهرستان</InputLabel>
|
|
||||||
<Select
|
|
||||||
labelId="city-select-label"
|
|
||||||
id="city"
|
|
||||||
name="city"
|
|
||||||
value={formik.values.city || ""}
|
|
||||||
label="شهرستان"
|
|
||||||
onChange={(e) => {
|
|
||||||
formik.setFieldValue("city", e.target.value);
|
|
||||||
}}
|
|
||||||
onBlur={formik.handleBlur}
|
|
||||||
>
|
|
||||||
{cities.map((city) => (
|
|
||||||
<MenuItem key={city.key} value={city.name}>
|
|
||||||
{city.name}
|
|
||||||
</MenuItem>
|
|
||||||
))}
|
|
||||||
{/* Show current value if it doesn't exist in options */}
|
|
||||||
{formik.values.city &&
|
|
||||||
!cities.some(
|
|
||||||
(city) => city.name === formik.values.city
|
|
||||||
) && (
|
|
||||||
<MenuItem key="current-value" value={formik.values.city}>
|
|
||||||
{formik.values.city}
|
|
||||||
</MenuItem>
|
|
||||||
)}
|
|
||||||
</Select>
|
|
||||||
</FormControl>
|
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
icon={LocationCityIcon}
|
icon={LocationCityIcon}
|
||||||
label="شهرستان"
|
label="شهرستان"
|
||||||
value={formik.values.city}
|
value={formik.values.city_name}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -332,7 +321,7 @@ export const GuildInfoSection = ({
|
|||||||
md={6}
|
md={6}
|
||||||
px={SPACING.TINY}
|
px={SPACING.TINY}
|
||||||
direction="column"
|
direction="column"
|
||||||
gap={SPACING.TINY}
|
gap={SPACING.SMALL}
|
||||||
>
|
>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{isAdmin ? (
|
{isAdmin ? (
|
||||||
@@ -345,6 +334,8 @@ export const GuildInfoSection = ({
|
|||||||
value={formik.values.postal_code}
|
value={formik.values.postal_code}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
|
error={Boolean(formik.errors.postal_code)}
|
||||||
|
helperText={formik.errors.postal_code}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
@@ -365,6 +356,13 @@ export const GuildInfoSection = ({
|
|||||||
value={formik.values.phone_number}
|
value={formik.values.phone_number}
|
||||||
onChange={formik.handleChange}
|
onChange={formik.handleChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={formik.handleBlur}
|
||||||
|
error={
|
||||||
|
formik.touched.phone_number &&
|
||||||
|
Boolean(formik.errors.phone_number)
|
||||||
|
}
|
||||||
|
helperText={
|
||||||
|
formik.touched.phone_number && formik.errors.phone_number
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
@@ -505,7 +503,7 @@ export const GuildInfoSection = ({
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} sx={{ display: "flex", mt: 2, pl: 2, mb: 2 }}>
|
<Grid item xs={12} sx={{ display: "flex", mt: 2, pl: 2, mb: 2 }}>
|
||||||
{isAdmin ? (
|
{isAdmin || isSuperAdmin ? (
|
||||||
<>
|
<>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
control={
|
control={
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import {
|
|||||||
FormControl,
|
FormControl,
|
||||||
Radio,
|
Radio,
|
||||||
FormControlLabel,
|
FormControlLabel,
|
||||||
|
Autocomplete,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { DatePicker } from "@mui/x-date-pickers";
|
import { DatePicker } from "@mui/x-date-pickers";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
@@ -16,6 +17,7 @@ import CakeIcon from "@mui/icons-material/Cake";
|
|||||||
import FaceIcon from "@mui/icons-material/Face";
|
import FaceIcon from "@mui/icons-material/Face";
|
||||||
import LocationCityIcon from "@mui/icons-material/LocationCity";
|
import LocationCityIcon from "@mui/icons-material/LocationCity";
|
||||||
import FavoriteIcon from "@mui/icons-material/Favorite";
|
import FavoriteIcon from "@mui/icons-material/Favorite";
|
||||||
|
import PublicIcon from "@mui/icons-material/Public";
|
||||||
import { Grid } from "../../../../../components/grid/Grid";
|
import { Grid } from "../../../../../components/grid/Grid";
|
||||||
import { SPACING } from "../../../../../data/spacing";
|
import { SPACING } from "../../../../../data/spacing";
|
||||||
import { LabelField } from "../../../../../components/label-field/LabelField";
|
import { LabelField } from "../../../../../components/label-field/LabelField";
|
||||||
@@ -33,6 +35,8 @@ export const PersonalInfoSection = ({
|
|||||||
isAdmin,
|
isAdmin,
|
||||||
isSuperAdmin,
|
isSuperAdmin,
|
||||||
isKillHouse,
|
isKillHouse,
|
||||||
|
provinces = [],
|
||||||
|
provinceCities = [],
|
||||||
}) => {
|
}) => {
|
||||||
const getGenderDisplay = (gender) => {
|
const getGenderDisplay = (gender) => {
|
||||||
if (gender === "True" || gender === true) return GENDER_VALUES.MALE;
|
if (gender === "True" || gender === true) return GENDER_VALUES.MALE;
|
||||||
@@ -305,21 +309,106 @@ export const PersonalInfoSection = ({
|
|||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{isAdmin ? (
|
{isAdmin ? (
|
||||||
<TextField
|
<Autocomplete
|
||||||
label="شهر"
|
size="small"
|
||||||
variant="outlined"
|
style={{ width: "100%" }}
|
||||||
fullWidth
|
disablePortal
|
||||||
id="person_city"
|
id="province"
|
||||||
name="person_city"
|
options={
|
||||||
value={formik.values.person_city}
|
provinces
|
||||||
onChange={formik.handleChange}
|
? provinces.map((i) => ({
|
||||||
onBlur={formik.handleBlur}
|
id: i.key,
|
||||||
|
label: i.name,
|
||||||
|
}))
|
||||||
|
: []
|
||||||
|
}
|
||||||
|
value={
|
||||||
|
provinces.find((p) => p.key === formik.values.province)
|
||||||
|
? {
|
||||||
|
id: formik.values.province,
|
||||||
|
label:
|
||||||
|
provinces.find(
|
||||||
|
(p) => p.key === formik.values.province
|
||||||
|
)?.name || "",
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
onChange={(e, value) => {
|
||||||
|
formik.setFieldValue("province", value ? value.id : "");
|
||||||
|
formik.setFieldValue("city", "");
|
||||||
|
formik.setFieldValue("person_city", "");
|
||||||
|
}}
|
||||||
|
disabled={guild}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField {...params} label="استان" />
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<InfoBox
|
||||||
|
icon={PublicIcon}
|
||||||
|
label="استان"
|
||||||
|
value={
|
||||||
|
provinces.find((p) => p.key === formik.values.province)
|
||||||
|
?.name ||
|
||||||
|
formik.values.state ||
|
||||||
|
"-"
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={12}>
|
||||||
|
{isAdmin ? (
|
||||||
|
<Autocomplete
|
||||||
|
size="small"
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
disablePortal
|
||||||
|
id="city"
|
||||||
|
disabled={!formik.values.province}
|
||||||
|
options={
|
||||||
|
provinceCities
|
||||||
|
? provinceCities.map((i) => ({
|
||||||
|
id: i.key,
|
||||||
|
label: i.name,
|
||||||
|
}))
|
||||||
|
: []
|
||||||
|
}
|
||||||
|
value={
|
||||||
|
provinceCities.find((c) => c.key === formik.values.city)
|
||||||
|
? {
|
||||||
|
id: formik.values.city,
|
||||||
|
label:
|
||||||
|
provinceCities.find(
|
||||||
|
(c) => c.key === formik.values.city
|
||||||
|
)?.name || "",
|
||||||
|
}
|
||||||
|
: formik.values.person_city
|
||||||
|
? {
|
||||||
|
id: null,
|
||||||
|
label: formik.values.person_city,
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
onChange={(e, value) => {
|
||||||
|
formik.setFieldValue("city", value ? value.id : "");
|
||||||
|
formik.setFieldValue(
|
||||||
|
"person_city",
|
||||||
|
value ? value.label : ""
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField {...params} label="شهر" />
|
||||||
|
)}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
icon={LocationCityIcon}
|
icon={LocationCityIcon}
|
||||||
label="شهر"
|
label="شهر"
|
||||||
value={formik.values.person_city}
|
value={
|
||||||
|
provinceCities.find((c) => c.key === formik.values.city)
|
||||||
|
?.name ||
|
||||||
|
formik.values.person_city ||
|
||||||
|
"-"
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -25,7 +25,12 @@ export const prepareSubmitData = (
|
|||||||
values.birth_date || "",
|
values.birth_date || "",
|
||||||
hasInquiry === true
|
hasInquiry === true
|
||||||
),
|
),
|
||||||
city: values.city || "",
|
// city is for user info (personal info) - use person_city from personal info
|
||||||
|
city: values.person_city || values.city || "",
|
||||||
|
// city_name is for guild info
|
||||||
|
city_name: values.city_name || "",
|
||||||
|
// province is stored as ID when selected, or as name from state field
|
||||||
|
province: values.province || "",
|
||||||
address: values.address || "",
|
address: values.address || "",
|
||||||
postalcode: values.postal_code || "",
|
postalcode: values.postal_code || "",
|
||||||
licenseNumber: values.license_number || "",
|
licenseNumber: values.license_number || "",
|
||||||
@@ -177,7 +182,8 @@ export const mapResponseDataToFormFields = (
|
|||||||
? guildData.isicname || ""
|
? guildData.isicname || ""
|
||||||
: firstGuild.areaActivity || "",
|
: firstGuild.areaActivity || "",
|
||||||
state: isExternalApi ? guildData.state || "" : provinceData.name || "",
|
state: isExternalApi ? guildData.state || "" : provinceData.name || "",
|
||||||
city: isExternalApi ? guildData.city || "" : cityData.name || "",
|
province: isExternalApi ? "" : provinceData.key || "",
|
||||||
|
city: isExternalApi ? guildData.city || "" : cityData.key || "",
|
||||||
address: isExternalApi
|
address: isExternalApi
|
||||||
? guildData.address || ""
|
? guildData.address || ""
|
||||||
: addressData.address || "",
|
: addressData.address || "",
|
||||||
|
|||||||
@@ -43,6 +43,27 @@ export const getValidationSchema = (isEditMode) =>
|
|||||||
return val === true;
|
return val === true;
|
||||||
})
|
})
|
||||||
.required("این فیلد اجباری است!"),
|
.required("این فیلد اجباری است!"),
|
||||||
|
guilds: yup
|
||||||
|
.array()
|
||||||
|
.min(1, "حداقل یک واحد صنفی باید وجود داشته باشد")
|
||||||
|
.of(
|
||||||
|
yup.object({
|
||||||
|
steward: yup.boolean().default(false),
|
||||||
|
guild: yup.boolean().default(false),
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.test(
|
||||||
|
"steward-guild-required",
|
||||||
|
"برای هر واحد صنفی، حداقل یکی از گزینههای مباشر یا صنف باید انتخاب شود",
|
||||||
|
function (guilds) {
|
||||||
|
if (!guilds || guilds.length === 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return guilds.every(
|
||||||
|
(guild) => guild?.steward === true || guild?.guild === true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const getInitialValues = (guild) => ({
|
export const getInitialValues = (guild) => ({
|
||||||
@@ -56,10 +77,11 @@ export const getInitialValues = (guild) => ({
|
|||||||
gender: guild?.user?.gender || "",
|
gender: guild?.user?.gender || "",
|
||||||
person_city: guild?.user?.city || "",
|
person_city: guild?.user?.city || "",
|
||||||
is_alive: guild?.user?.isAlive || "",
|
is_alive: guild?.user?.isAlive || "",
|
||||||
guild_name: guild?.guildsName || "",
|
guild_name: guild?.guildsName || guild?.name || "",
|
||||||
area_activity: guild?.areaActivity || "",
|
area_activity: guild?.areaActivity || "",
|
||||||
state: guild?.address?.province?.name || "",
|
state: guild?.address?.province?.name || "",
|
||||||
city: guild?.address?.city?.name || "",
|
province: guild?.address?.province?.key || "",
|
||||||
|
city_name: guild?.address?.city?.name || "",
|
||||||
address: guild?.address?.address || "",
|
address: guild?.address?.address || "",
|
||||||
license_expire_date: normalizeDatabaseDate(guild?.licenseExpireDate || ""),
|
license_expire_date: normalizeDatabaseDate(guild?.licenseExpireDate || ""),
|
||||||
license_status: guild?.licenseStatus || "",
|
license_status: guild?.licenseStatus || "",
|
||||||
@@ -92,4 +114,22 @@ export const getInitialValues = (guild) => ({
|
|||||||
company_identifier: guild?.companyIdentifier || "",
|
company_identifier: guild?.companyIdentifier || "",
|
||||||
type_activity_name: guild?.typeActivityName || "",
|
type_activity_name: guild?.typeActivityName || "",
|
||||||
active: guild?.active ?? null,
|
active: guild?.active ?? null,
|
||||||
|
guilds: guild
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
steward:
|
||||||
|
typeof guild?.steward === "boolean"
|
||||||
|
? guild.steward
|
||||||
|
: typeof guild?.isSteward === "boolean"
|
||||||
|
? guild.isSteward
|
||||||
|
: false,
|
||||||
|
guild:
|
||||||
|
typeof guild?.guild === "boolean"
|
||||||
|
? guild.guild
|
||||||
|
: typeof guild?.isGuild === "boolean"
|
||||||
|
? guild.isGuild
|
||||||
|
: false,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: [],
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Button, TextField } from "@mui/material";
|
import { Button, TextField, Typography } from "@mui/material";
|
||||||
import { useDispatch } from "react-redux";
|
import { useDispatch } from "react-redux";
|
||||||
import { RiSearchLine } from "react-icons/ri";
|
import { RiSearchLine } from "react-icons/ri";
|
||||||
import {
|
import {
|
||||||
|
CLOSE_MODAL,
|
||||||
LOADING_END,
|
LOADING_END,
|
||||||
LOADING_START,
|
LOADING_START,
|
||||||
OPEN_MODAL,
|
OPEN_MODAL,
|
||||||
@@ -14,6 +15,8 @@ import { ManageGuildsRequestsOperations } from "../manage-guilds-requests-operat
|
|||||||
import { CreateGuilds } from "../create-guilds/CreateGuilds";
|
import { CreateGuilds } from "../create-guilds/CreateGuilds";
|
||||||
import { provinceGetTotalGuildsService } from "../../services/province-get-total-guilds";
|
import { provinceGetTotalGuildsService } from "../../services/province-get-total-guilds";
|
||||||
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
||||||
|
import { formatTime } from "../../../../utils/formatTime";
|
||||||
|
import { ProvinceLegalGuildsForm } from "../province-legal-guilds-in-province/ProvinceLegalGuildsForm";
|
||||||
|
|
||||||
export const ManageGuildsRequests = ({ userType }) => {
|
export const ManageGuildsRequests = ({ userType }) => {
|
||||||
const IS_STEWARD = userType === "steward";
|
const IS_STEWARD = userType === "steward";
|
||||||
@@ -76,6 +79,7 @@ export const ManageGuildsRequests = ({ userType }) => {
|
|||||||
const d = data?.map((item, i) => {
|
const d = data?.map((item, i) => {
|
||||||
return [
|
return [
|
||||||
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
||||||
|
formatTime(item?.createDate) || "-",
|
||||||
`${item?.registerarFullname || ""} ${
|
`${item?.registerarFullname || ""} ${
|
||||||
item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " "
|
item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " "
|
||||||
}`,
|
}`,
|
||||||
@@ -130,7 +134,9 @@ export const ManageGuildsRequests = ({ userType }) => {
|
|||||||
dispatch(LOADING_END());
|
dispatch(LOADING_END());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
{
|
||||||
|
/* */
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Grid container xs={12} justifyContent="center" alignItems="center" gap={2}>
|
<Grid container xs={12} justifyContent="center" alignItems="center" gap={2}>
|
||||||
<Grid
|
<Grid
|
||||||
@@ -148,12 +154,71 @@ export const ManageGuildsRequests = ({ userType }) => {
|
|||||||
OPEN_MODAL({
|
OPEN_MODAL({
|
||||||
title: `ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`,
|
title: `ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`,
|
||||||
size: window.innerWidth <= 600 ? "small" : "auto",
|
size: window.innerWidth <= 600 ? "small" : "auto",
|
||||||
content: <CreateGuilds updateTable={updateTable} />,
|
content: (
|
||||||
|
<Grid container>
|
||||||
|
<Grid xs={12} mb={2}>
|
||||||
|
<Typography>{`نوع ${
|
||||||
|
IS_STEWARD ? "مباشر" : "صنف"
|
||||||
|
}:`}</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid container justifyContent="flex-end" gap={1} xs={12}>
|
||||||
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
onClick={() => {
|
||||||
|
dispatch(CLOSE_MODAL());
|
||||||
|
dispatch(
|
||||||
|
OPEN_MODAL({
|
||||||
|
title: `ثبت ${
|
||||||
|
IS_STEWARD ? "مباشر" : "صنف"
|
||||||
|
} حقیقی جدید`,
|
||||||
|
size:
|
||||||
|
window.innerWidth <= 600 ? "small" : "auto",
|
||||||
|
content: (
|
||||||
|
<CreateGuilds updateTable={updateTable} />
|
||||||
|
),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
>
|
||||||
|
حقیقی
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
variant="outlined"
|
||||||
|
color="primary"
|
||||||
|
onClick={() => {
|
||||||
|
dispatch(CLOSE_MODAL());
|
||||||
|
dispatch(
|
||||||
|
OPEN_MODAL({
|
||||||
|
title: `ثبت ${
|
||||||
|
IS_STEWARD
|
||||||
|
? "مباشر حقوقی جدید"
|
||||||
|
: "صنف حقوقی جدید"
|
||||||
|
}`,
|
||||||
|
content: (
|
||||||
|
<ProvinceLegalGuildsForm
|
||||||
|
onClose={() => dispatch(CLOSE_MODAL())}
|
||||||
|
updateTable={updateTable}
|
||||||
|
userType={userType}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
size: 400,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
حقوقی
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
),
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{`ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`}
|
{`ثبت ${IS_STEWARD ? "مباشر" : "صنف"}`}
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@@ -182,6 +247,7 @@ export const ManageGuildsRequests = ({ userType }) => {
|
|||||||
data={tableData}
|
data={tableData}
|
||||||
columns={[
|
columns={[
|
||||||
"ردیف",
|
"ردیف",
|
||||||
|
"تاریخ ثبت",
|
||||||
"ثبت کننده",
|
"ثبت کننده",
|
||||||
`شناسه ${IS_STEWARD ? "مباشر" : "صنف"}`,
|
`شناسه ${IS_STEWARD ? "مباشر" : "صنف"}`,
|
||||||
`نام ${IS_STEWARD ? "مباشر" : "واحد صنفی"}`,
|
`نام ${IS_STEWARD ? "مباشر" : "واحد صنفی"}`,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import { SimpleTable } from "../../../../components/simple-table/SimpleTable";
|
|||||||
import { CreateGuilds } from "../create-guilds/CreateGuilds";
|
import { CreateGuilds } from "../create-guilds/CreateGuilds";
|
||||||
import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith";
|
import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith";
|
||||||
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
||||||
|
import { formatTime } from "../../../../utils/formatTime";
|
||||||
|
|
||||||
export const ManageGuilds = ({ userType }) => {
|
export const ManageGuilds = ({ userType }) => {
|
||||||
const IS_STEWARD = userType === "steward";
|
const IS_STEWARD = userType === "steward";
|
||||||
@@ -100,6 +101,10 @@ export const ManageGuilds = ({ userType }) => {
|
|||||||
const d = data.map((item, i) => {
|
const d = data.map((item, i) => {
|
||||||
const commonData = [
|
const commonData = [
|
||||||
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
||||||
|
formatTime(item?.createDate) || "-",
|
||||||
|
`${item?.registerarFullname || ""} ${
|
||||||
|
item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " "
|
||||||
|
}`,
|
||||||
item?.licenseNumber || "-",
|
item?.licenseNumber || "-",
|
||||||
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
||||||
`${item?.user?.fullname || "-"} (${item?.user?.mobile || "-"})`,
|
`${item?.user?.fullname || "-"} (${item?.user?.mobile || "-"})`,
|
||||||
@@ -268,24 +273,22 @@ export const ManageGuilds = ({ userType }) => {
|
|||||||
>
|
>
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
<Grid container alignItems="center" gap={SPACING.SMALL}>
|
<Grid container alignItems="center" gap={SPACING.SMALL}>
|
||||||
{["KillHouse", "GuildRoom"].includes(getRoleFromUrl()) && (
|
<Button
|
||||||
<Button
|
variant="contained"
|
||||||
variant="contained"
|
onClick={() => {
|
||||||
onClick={() => {
|
dispatch(
|
||||||
dispatch(
|
OPEN_MODAL({
|
||||||
OPEN_MODAL({
|
right: !(window.innerWidth <= 600),
|
||||||
right: !(window.innerWidth <= 600),
|
bottom: window.innerWidth <= 600,
|
||||||
bottom: window.innerWidth <= 600,
|
size: window.innerWidth <= 600 ? "small" : "auto",
|
||||||
size: window.innerWidth <= 600 ? "small" : "auto",
|
title: `ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`,
|
||||||
title: `ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`,
|
content: <CreateGuilds updateTable={updateTable} />,
|
||||||
content: <CreateGuilds updateTable={updateTable} />,
|
})
|
||||||
})
|
);
|
||||||
);
|
}}
|
||||||
}}
|
>
|
||||||
>
|
{`ثبت ${IS_STEWARD ? "مباشر" : "صنف"}`}
|
||||||
{`ثبت ${IS_STEWARD ? "مباشر" : "صنف"} جدید`}
|
</Button>
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
size="small"
|
size="small"
|
||||||
@@ -360,6 +363,8 @@ export const ManageGuilds = ({ userType }) => {
|
|||||||
getRoleFromUrl() === "CityJahad" || getRoleFromUrl() === "CityPoultry"
|
getRoleFromUrl() === "CityJahad" || getRoleFromUrl() === "CityPoultry"
|
||||||
? [
|
? [
|
||||||
"ردیف",
|
"ردیف",
|
||||||
|
"تاریخ ثبت",
|
||||||
|
"ثبت کننده",
|
||||||
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
||||||
"نام واحد صنفی",
|
"نام واحد صنفی",
|
||||||
"نام شخص/شرکت",
|
"نام شخص/شرکت",
|
||||||
@@ -381,6 +386,8 @@ export const ManageGuilds = ({ userType }) => {
|
|||||||
: getRoleFromUrl() === "KillHouse"
|
: getRoleFromUrl() === "KillHouse"
|
||||||
? [
|
? [
|
||||||
"ردیف",
|
"ردیف",
|
||||||
|
"تاریخ ثبت",
|
||||||
|
"ثبت کننده",
|
||||||
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
||||||
"نام واحد صنفی",
|
"نام واحد صنفی",
|
||||||
"نام شخص/شرکت",
|
"نام شخص/شرکت",
|
||||||
@@ -400,6 +407,8 @@ export const ManageGuilds = ({ userType }) => {
|
|||||||
]
|
]
|
||||||
: [
|
: [
|
||||||
"ردیف",
|
"ردیف",
|
||||||
|
"تاریخ ثبت",
|
||||||
|
"ثبت کننده",
|
||||||
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
IS_STEWARD ? "شناسه مباشر" : "شناسه صنف",
|
||||||
"نام واحد صنفی",
|
"نام واحد صنفی",
|
||||||
"نام شخص/شرکت",
|
"نام شخص/شرکت",
|
||||||
|
|||||||
@@ -90,30 +90,27 @@ const InfoBox = ({ icon: Icon, label, value, iconSx }) => (
|
|||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|
||||||
const getValidationSchema = (isAdmin, userFound) =>
|
const getValidationSchema = () =>
|
||||||
yup.object({
|
yup.object({
|
||||||
national_id: yup
|
national_id: yup
|
||||||
.string()
|
.string()
|
||||||
.required("شناسه حقوقی الزامی است")
|
.required("شناسه حقوقی الزامی است")
|
||||||
.matches(/^[0-9]{11}$/, "شناسه حقوقی باید 11 رقم باشد"),
|
.matches(/^[0-9]{11}$/, "شناسه حقوقی باید 11 رقم باشد"),
|
||||||
first_name: yup.string(),
|
first_name: yup.string().required("نام اجباری است."),
|
||||||
last_name: yup.string(),
|
last_name: yup.string().required("نام خانوادگی اجباری است."),
|
||||||
unit_name: yup.string(),
|
unit_name: yup.string(),
|
||||||
name: yup.string(),
|
name: yup.string(),
|
||||||
province: yup.string(),
|
province: yup.string(),
|
||||||
city: yup.string(),
|
city: yup.string(),
|
||||||
mobile:
|
mobile: yup
|
||||||
isAdmin || !userFound
|
.string()
|
||||||
? yup
|
.test(
|
||||||
.string()
|
"mobile-format",
|
||||||
.nullable()
|
"شماره تلفن باید 11 رقم باشد",
|
||||||
.test(
|
(value) => !value || /^[0-9]{11}$/.test(value)
|
||||||
"mobile-format",
|
)
|
||||||
"شماره تلفن باید 11 رقم باشد",
|
.required("شماره موبایل اجباری است."),
|
||||||
(value) => !value || /^[0-9]{11}$/.test(value)
|
type_activity: yup.string().required("نوع فعالیت اجباری است."),
|
||||||
)
|
|
||||||
: yup.string(),
|
|
||||||
type_activity: yup.string(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const LegalGuildForm = ({
|
const LegalGuildForm = ({
|
||||||
@@ -125,7 +122,7 @@ const LegalGuildForm = ({
|
|||||||
cities,
|
cities,
|
||||||
}) => {
|
}) => {
|
||||||
const IS_STEWARD = userType === "steward";
|
const IS_STEWARD = userType === "steward";
|
||||||
|
const IS_ADMIN = getRoleFromUrl() === "AdminX";
|
||||||
return (
|
return (
|
||||||
<form onSubmit={formik.handleSubmit}>
|
<form onSubmit={formik.handleSubmit}>
|
||||||
<Grid container gap={SPACING.SMALL} p={2}>
|
<Grid container gap={SPACING.SMALL} p={2}>
|
||||||
@@ -146,7 +143,7 @@ const LegalGuildForm = ({
|
|||||||
error={Boolean(formik.errors.national_id)}
|
error={Boolean(formik.errors.national_id)}
|
||||||
helperText={formik.errors.national_id}
|
helperText={formik.errors.national_id}
|
||||||
inputProps={{ maxLength: 11 }}
|
inputProps={{ maxLength: 11 }}
|
||||||
disabled={true}
|
disabled={!IS_ADMIN}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<InfoBox
|
<InfoBox
|
||||||
@@ -583,8 +580,9 @@ export const ProvinceLegalGuildsForm = ({
|
|||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: formikIntitialValues,
|
initialValues: formikIntitialValues,
|
||||||
validationSchema: getValidationSchema(isAdmin, userFound, userType),
|
validationSchema: getValidationSchema(),
|
||||||
enableReinitialize: true,
|
enableReinitialize: true,
|
||||||
|
validateOnMount: true,
|
||||||
onSubmit: (values) => {
|
onSubmit: (values) => {
|
||||||
// Find type_activity key from the title
|
// Find type_activity key from the title
|
||||||
const typeActivityObj = typeActivities.find(
|
const typeActivityObj = typeActivities.find(
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import ResponsiveTable from "../../../../components/responsive-table/ResponsiveT
|
|||||||
import { RiSearchLine } from "react-icons/ri";
|
import { RiSearchLine } from "react-icons/ri";
|
||||||
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
import { provinceGetTotalStewardsService } from "../../services/province-get-total-stewards";
|
||||||
import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith";
|
import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith";
|
||||||
|
import { formatTime } from "../../../../utils/formatTime";
|
||||||
|
|
||||||
export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
||||||
const IS_STEWARD = userType === "steward";
|
const IS_STEWARD = userType === "steward";
|
||||||
@@ -85,6 +86,10 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
|||||||
const d = data.map((item, i) => {
|
const d = data.map((item, i) => {
|
||||||
return [
|
return [
|
||||||
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
|
||||||
|
formatTime(item?.createDate) || "-",
|
||||||
|
`${item?.registerarFullname || ""} ${
|
||||||
|
item?.registerarMobile ? "(" + item?.registerarMobile + " )" : " "
|
||||||
|
}`,
|
||||||
(IS_STEWARD ? item?.licenseNumber : item?.nationalId) || "-",
|
(IS_STEWARD ? item?.licenseNumber : item?.nationalId) || "-",
|
||||||
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
(IS_STEWARD ? item?.name : item?.guildsName) || "-",
|
||||||
`${item?.user?.fullname || "-"}`,
|
`${item?.user?.fullname || "-"}`,
|
||||||
@@ -195,6 +200,8 @@ export const ProvinceLegalGuildsInProvince = ({ userType }) => {
|
|||||||
title={TABLE_TITLE}
|
title={TABLE_TITLE}
|
||||||
columns={[
|
columns={[
|
||||||
"ردیف",
|
"ردیف",
|
||||||
|
"تاریخ ثبت",
|
||||||
|
"ثبت کننده",
|
||||||
"شناسه حقوقی",
|
"شناسه حقوقی",
|
||||||
"نام واحد",
|
"نام واحد",
|
||||||
"نام و نام خانوادگی",
|
"نام و نام خانوادگی",
|
||||||
|
|||||||
Reference in New Issue
Block a user