optimization => create guilds
This commit is contained in:
@@ -72,7 +72,7 @@ export const PersonalInfoSection = ({
|
|||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container xs={12}>
|
<Grid container xs={12}>
|
||||||
<Grid container xs={12} md={6} gap={SPACING.TINY} px={SPACING.TINY}>
|
<Grid container xs={12} md={6} gap={SPACING.SMALL} px={SPACING.TINY}>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
{guild || isAdmin ? (
|
{guild || isAdmin ? (
|
||||||
<TextField
|
<TextField
|
||||||
|
|||||||
@@ -15,3 +15,9 @@ export const ALIVE_STATUS = {
|
|||||||
NO: "خیر",
|
NO: "خیر",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Data source types for guild data
|
||||||
|
export const DATA_SOURCE = {
|
||||||
|
EDIT_MODE: "EDIT_MODE", // When editing existing guild from table
|
||||||
|
INQUIRY_FROM_DATABASE: "INQUIRY_FROM_DATABASE", // Inquiry result from our database (dbRegister: true)
|
||||||
|
INQUIRY_FROM_EXTERNAL: "INQUIRY_FROM_EXTERNAL", // Inquiry result from external API (dbRegister: false)
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,7 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* Data Mapping Utilities for Create Guilds Form
|
||||||
|
*
|
||||||
|
* This module handles mapping data from three different sources:
|
||||||
|
*
|
||||||
|
* 1. EDIT MODE: Guild data passed directly as prop when editing existing guild
|
||||||
|
* - Handled by: getInitialValues() in formUtils.js
|
||||||
|
* - Data structure: guild object with nested user and address objects
|
||||||
|
*
|
||||||
|
* 2. DATABASE INQUIRY: Inquiry by national code returns data from our database
|
||||||
|
* - Handled by: extractFormFieldsFromDatabaseInquiry()
|
||||||
|
* - Condition: responseData.dbRegister === true
|
||||||
|
* - Data structure: responseData.user, responseData.guilds[] with nested address
|
||||||
|
*
|
||||||
|
* 3. EXTERNAL API INQUIRY: Inquiry by national code returns data from external system
|
||||||
|
* - Handled by: extractFormFieldsFromExternalApi()
|
||||||
|
* - Condition: responseData.dbRegister === false
|
||||||
|
* - Data structure: responseData.user, responseData.guilds[] with layerTwo object
|
||||||
|
*/
|
||||||
|
|
||||||
import { getRoleFromUrl } from "../../../../../utils/getRoleFromUrl";
|
import { getRoleFromUrl } from "../../../../../utils/getRoleFromUrl";
|
||||||
import { normalizeExternalApiDate, normalizeDatabaseDate } from "./dateUtils";
|
import { normalizeExternalApiDate, normalizeDatabaseDate } from "./dateUtils";
|
||||||
import { formatDateForSubmit } from "./dateUtils";
|
import { formatDateForSubmit } from "./dateUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepares form data for submission to the API
|
||||||
|
*
|
||||||
|
* Three data sources can provide the initial data:
|
||||||
|
* 1. Edit mode: Guild data passed as prop (guild parameter)
|
||||||
|
* 2. Database inquiry: Inquiry returns data from our database (hasInquiry === false)
|
||||||
|
* 3. External API inquiry: Inquiry returns data from external system (hasInquiry === true)
|
||||||
|
*
|
||||||
|
* @param {Object} values - Form values from Formik
|
||||||
|
* @param {Object} guild - Guild data when editing existing guild (edit mode)
|
||||||
|
* @param {string} originalPhoneNumber - Original phone number before edit
|
||||||
|
* @param {boolean} hasInquiry - Whether data came from external API inquiry (true) or database (false)
|
||||||
|
*/
|
||||||
export const prepareSubmitData = (
|
export const prepareSubmitData = (
|
||||||
values,
|
values,
|
||||||
guild,
|
guild,
|
||||||
@@ -68,171 +101,207 @@ export const prepareSubmitData = (
|
|||||||
return baseData;
|
return baseData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts form field values from database inquiry response
|
||||||
|
* Data source: Inquiry national code which returns data from our database (dbRegister === true)
|
||||||
|
*/
|
||||||
|
const extractFormFieldsFromDatabaseInquiry = (
|
||||||
|
responseDataFromDb,
|
||||||
|
inquiryNationalCode
|
||||||
|
) => {
|
||||||
|
const userFromDb = responseDataFromDb.user || {};
|
||||||
|
const firstGuildFromDb =
|
||||||
|
Array.isArray(responseDataFromDb.guilds) &&
|
||||||
|
responseDataFromDb.guilds.length > 0
|
||||||
|
? responseDataFromDb.guilds[0]
|
||||||
|
: {};
|
||||||
|
const addressFromDb = firstGuildFromDb?.address || {};
|
||||||
|
const provinceFromDb = addressFromDb.province || {};
|
||||||
|
const cityFromDb = addressFromDb.city || {};
|
||||||
|
|
||||||
|
return {
|
||||||
|
// Personal Information Fields
|
||||||
|
first_name: userFromDb.firstName || "",
|
||||||
|
last_name: userFromDb.lastName || "",
|
||||||
|
national_id: String(userFromDb.nationalId || inquiryNationalCode).trim(),
|
||||||
|
national_code: userFromDb.nationalCode || "",
|
||||||
|
birth_date: normalizeDatabaseDate(userFromDb.birthday || ""),
|
||||||
|
father_name: userFromDb.fatherName || "",
|
||||||
|
gender: userFromDb.gender || "",
|
||||||
|
person_city: userFromDb.city || "",
|
||||||
|
is_alive:
|
||||||
|
userFromDb.isAlive === false
|
||||||
|
? "خیر"
|
||||||
|
: userFromDb.isAlive === true
|
||||||
|
? "بلی"
|
||||||
|
: "",
|
||||||
|
mobile: userFromDb.mobile || "",
|
||||||
|
|
||||||
|
// Guild Information Fields
|
||||||
|
guild_name: firstGuildFromDb.guildsName || "",
|
||||||
|
area_activity: firstGuildFromDb.areaActivity || "",
|
||||||
|
state: provinceFromDb.name || "",
|
||||||
|
province: provinceFromDb.key || "",
|
||||||
|
city: cityFromDb.key || "",
|
||||||
|
address: addressFromDb.address || "",
|
||||||
|
license_expire_date: normalizeDatabaseDate(
|
||||||
|
firstGuildFromDb.licenseExpireDate || ""
|
||||||
|
),
|
||||||
|
license_status: firstGuildFromDb.licenseStatus || "",
|
||||||
|
license_type: firstGuildFromDb.licenseType || "",
|
||||||
|
license_number: firstGuildFromDb.licenseNumber || "",
|
||||||
|
license_issue_date: normalizeDatabaseDate(
|
||||||
|
responseDataFromDb.licenseIssueDate || ""
|
||||||
|
),
|
||||||
|
union_name: firstGuildFromDb.unionName || "",
|
||||||
|
postal_code: addressFromDb.postalCode || "",
|
||||||
|
phone_number: firstGuildFromDb.phoneNumber || "",
|
||||||
|
guild_national_id: firstGuildFromDb.nationalCode || "",
|
||||||
|
corporation_name: firstGuildFromDb.companyName || "",
|
||||||
|
|
||||||
|
// Status Fields
|
||||||
|
is_foreigner:
|
||||||
|
responseDataFromDb.isForeignNational === false
|
||||||
|
? false
|
||||||
|
: responseDataFromDb.isForeignNational === true
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
has_steward:
|
||||||
|
responseDataFromDb.steward === false
|
||||||
|
? false
|
||||||
|
: responseDataFromDb.steward === true
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
has_partner:
|
||||||
|
responseDataFromDb.hasPartner === false
|
||||||
|
? false
|
||||||
|
: responseDataFromDb.hasPartner === true
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
steward: firstGuildFromDb.isSteward || false,
|
||||||
|
guild:
|
||||||
|
typeof firstGuildFromDb.guild === "boolean"
|
||||||
|
? firstGuildFromDb.guild
|
||||||
|
: false,
|
||||||
|
|
||||||
|
// Additional Database Fields
|
||||||
|
company_name: firstGuildFromDb.companyName || "",
|
||||||
|
company_identifier: firstGuildFromDb.companyIdentifier || "",
|
||||||
|
type_activity_name: firstGuildFromDb.typeActivity || "",
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts form field values from external API inquiry response
|
||||||
|
* Data source: Inquiry national code which doesn't return data from our database (dbRegister === false)
|
||||||
|
*/
|
||||||
|
const extractFormFieldsFromExternalApi = (
|
||||||
|
responseDataFromExternalApi,
|
||||||
|
inquiryNationalCode
|
||||||
|
) => {
|
||||||
|
const userFromExternalApi = responseDataFromExternalApi.user || {};
|
||||||
|
const firstGuildFromExternalApi =
|
||||||
|
Array.isArray(responseDataFromExternalApi.guilds) &&
|
||||||
|
responseDataFromExternalApi.guilds.length > 0
|
||||||
|
? responseDataFromExternalApi.guilds[0]
|
||||||
|
: {};
|
||||||
|
const layerTwoFromExternalApi = firstGuildFromExternalApi.layerTwo || {};
|
||||||
|
|
||||||
|
return {
|
||||||
|
// Personal Information Fields
|
||||||
|
first_name: userFromExternalApi.firstName || "",
|
||||||
|
last_name: userFromExternalApi.lastName || "",
|
||||||
|
national_id: String(
|
||||||
|
layerTwoFromExternalApi.nationalcode ||
|
||||||
|
userFromExternalApi.nationalCode ||
|
||||||
|
inquiryNationalCode
|
||||||
|
).trim(),
|
||||||
|
national_code: userFromExternalApi.identityNo || "",
|
||||||
|
birth_date: normalizeExternalApiDate(userFromExternalApi.birthDate || ""),
|
||||||
|
father_name: userFromExternalApi.fatherName || "",
|
||||||
|
gender:
|
||||||
|
userFromExternalApi.gender === true
|
||||||
|
? "True"
|
||||||
|
: userFromExternalApi.gender === false
|
||||||
|
? "False"
|
||||||
|
: "",
|
||||||
|
person_city: userFromExternalApi.city || "",
|
||||||
|
is_alive:
|
||||||
|
userFromExternalApi.isLive === true
|
||||||
|
? "بلی"
|
||||||
|
: userFromExternalApi.isLive === false
|
||||||
|
? "خیر"
|
||||||
|
: "",
|
||||||
|
mobile: layerTwoFromExternalApi.mobilenumber || "",
|
||||||
|
|
||||||
|
// Guild Information Fields
|
||||||
|
guild_name: firstGuildFromExternalApi.title || "",
|
||||||
|
area_activity: firstGuildFromExternalApi.isicname || "",
|
||||||
|
state: firstGuildFromExternalApi.state || "",
|
||||||
|
province: "", // External API doesn't provide province ID
|
||||||
|
city: firstGuildFromExternalApi.city || "",
|
||||||
|
address: firstGuildFromExternalApi.address || "",
|
||||||
|
license_expire_date: normalizeExternalApiDate(
|
||||||
|
firstGuildFromExternalApi.licenseExpireDate || ""
|
||||||
|
),
|
||||||
|
license_status: firstGuildFromExternalApi.licenseStatus || "",
|
||||||
|
license_type: firstGuildFromExternalApi.licenseType || "",
|
||||||
|
license_number: firstGuildFromExternalApi.licenseNumber || "",
|
||||||
|
license_issue_date: normalizeExternalApiDate(
|
||||||
|
layerTwoFromExternalApi.licenseIssueDate || ""
|
||||||
|
),
|
||||||
|
union_name: layerTwoFromExternalApi.unionName || "",
|
||||||
|
postal_code: layerTwoFromExternalApi.postalcode || "",
|
||||||
|
phone_number: layerTwoFromExternalApi.phonenumber || "",
|
||||||
|
guild_national_id: layerTwoFromExternalApi.nationalId || "",
|
||||||
|
corporation_name: layerTwoFromExternalApi.corporationName || "",
|
||||||
|
|
||||||
|
// Status Fields
|
||||||
|
is_foreigner:
|
||||||
|
layerTwoFromExternalApi.isForeigner === "خیر"
|
||||||
|
? false
|
||||||
|
: layerTwoFromExternalApi.isForeigner === "بلی"
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
has_steward:
|
||||||
|
layerTwoFromExternalApi.hasSteward === "خیر"
|
||||||
|
? false
|
||||||
|
: layerTwoFromExternalApi.hasSteward === "بلی"
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
has_partner:
|
||||||
|
layerTwoFromExternalApi.hasPartner === "خیر"
|
||||||
|
? false
|
||||||
|
: layerTwoFromExternalApi.hasPartner === "بلی"
|
||||||
|
? true
|
||||||
|
: "",
|
||||||
|
steward: false, // External API doesn't provide steward status
|
||||||
|
guild:
|
||||||
|
typeof firstGuildFromExternalApi.guild === "boolean"
|
||||||
|
? firstGuildFromExternalApi.guild
|
||||||
|
: false,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps response data to form fields based on data source
|
||||||
|
*
|
||||||
|
* Three data sources:
|
||||||
|
* 1. Edit mode: Guild data passed as prop (handled by getInitialValues in formUtils.js)
|
||||||
|
* 2. Database inquiry: Inquiry national code which returns data from our database (dbRegister === true)
|
||||||
|
* 3. External API inquiry: Inquiry national code which doesn't return data from our database (dbRegister === false)
|
||||||
|
*/
|
||||||
export const mapResponseDataToFormFields = (
|
export const mapResponseDataToFormFields = (
|
||||||
responseData,
|
responseData,
|
||||||
inquiryNationalCode,
|
inquiryNationalCode,
|
||||||
formik
|
formik
|
||||||
) => {
|
) => {
|
||||||
const isExternalApi = responseData.dbRegister === false;
|
const isFromExternalApi = responseData.dbRegister === false;
|
||||||
|
|
||||||
// New structure: user is at top level, guilds is an array
|
// Route to appropriate extractor based on data source
|
||||||
const userData = responseData.user || {};
|
const formFieldValues = isFromExternalApi
|
||||||
// For personal info, we use the first guild's data if available, or empty
|
? extractFormFieldsFromExternalApi(responseData, inquiryNationalCode)
|
||||||
const firstGuild =
|
: extractFormFieldsFromDatabaseInquiry(responseData, inquiryNationalCode);
|
||||||
Array.isArray(responseData.guilds) && responseData.guilds.length > 0
|
|
||||||
? responseData.guilds[0]
|
|
||||||
: {};
|
|
||||||
const guildData = firstGuild || {};
|
|
||||||
const layerTwo = guildData.layerTwo || {};
|
|
||||||
const addressData = firstGuild?.address || guildData.address || {};
|
|
||||||
const provinceData = addressData.province || {};
|
|
||||||
const cityData = addressData.city || {};
|
|
||||||
|
|
||||||
const nationalIdValue = isExternalApi
|
formik.setValues({ ...formik.values, ...formFieldValues });
|
||||||
? String(
|
|
||||||
layerTwo.nationalcode || userData.nationalCode || inquiryNationalCode
|
|
||||||
).trim()
|
|
||||||
: String(userData.nationalId || inquiryNationalCode).trim();
|
|
||||||
|
|
||||||
const birthDatePersian = isExternalApi
|
|
||||||
? normalizeExternalApiDate(userData.birthDate || "")
|
|
||||||
: normalizeDatabaseDate(userData.birthday || "");
|
|
||||||
|
|
||||||
const licenseExpireDatePersian = isExternalApi
|
|
||||||
? normalizeExternalApiDate(guildData.licenseExpireDate || "")
|
|
||||||
: normalizeDatabaseDate(firstGuild.licenseExpireDate || "");
|
|
||||||
|
|
||||||
const licenseIssueDatePersian = isExternalApi
|
|
||||||
? normalizeExternalApiDate(layerTwo.licenseIssueDate || "")
|
|
||||||
: normalizeDatabaseDate(responseData.licenseIssueDate || "");
|
|
||||||
|
|
||||||
const genderValue = isExternalApi
|
|
||||||
? userData.gender === true
|
|
||||||
? "True"
|
|
||||||
: userData.gender === false
|
|
||||||
? "False"
|
|
||||||
: ""
|
|
||||||
: userData.gender || "";
|
|
||||||
|
|
||||||
const isAliveValue = isExternalApi
|
|
||||||
? userData.isLive === true
|
|
||||||
? "بلی"
|
|
||||||
: userData.isLive === false
|
|
||||||
? "خیر"
|
|
||||||
: ""
|
|
||||||
: userData.isAlive === false
|
|
||||||
? "خیر"
|
|
||||||
: userData.isAlive === true
|
|
||||||
? "بلی"
|
|
||||||
: "";
|
|
||||||
|
|
||||||
const isForeignerValue = isExternalApi
|
|
||||||
? layerTwo.isForeigner === "خیر"
|
|
||||||
? false
|
|
||||||
: layerTwo.isForeigner === "بلی"
|
|
||||||
? true
|
|
||||||
: ""
|
|
||||||
: responseData.isForeignNational === false
|
|
||||||
? false
|
|
||||||
: responseData.isForeignNational === true
|
|
||||||
? true
|
|
||||||
: "";
|
|
||||||
|
|
||||||
const hasStewardValue = isExternalApi
|
|
||||||
? layerTwo.hasSteward === "خیر"
|
|
||||||
? false
|
|
||||||
: layerTwo.hasSteward === "بلی"
|
|
||||||
? true
|
|
||||||
: ""
|
|
||||||
: responseData.steward === false
|
|
||||||
? false
|
|
||||||
: responseData.steward === true
|
|
||||||
? true
|
|
||||||
: "";
|
|
||||||
|
|
||||||
const hasPartnerValue = isExternalApi
|
|
||||||
? layerTwo.hasPartner === "خیر"
|
|
||||||
? false
|
|
||||||
: layerTwo.hasPartner === "بلی"
|
|
||||||
? true
|
|
||||||
: ""
|
|
||||||
: responseData.hasPartner === false
|
|
||||||
? false
|
|
||||||
: responseData.hasPartner === true
|
|
||||||
? true
|
|
||||||
: "";
|
|
||||||
|
|
||||||
const values = {
|
|
||||||
first_name: userData.firstName || "",
|
|
||||||
last_name: userData.lastName || "",
|
|
||||||
national_id: nationalIdValue,
|
|
||||||
national_code: isExternalApi
|
|
||||||
? userData.identityNo || ""
|
|
||||||
: userData.nationalCode || "",
|
|
||||||
birth_date: birthDatePersian,
|
|
||||||
father_name: userData.fatherName || "",
|
|
||||||
gender: genderValue,
|
|
||||||
person_city: userData.city || "",
|
|
||||||
is_alive: isAliveValue,
|
|
||||||
// Guild fields - will be set per guild in accordion, so we set empty or first guild's data
|
|
||||||
guild_name: isExternalApi
|
|
||||||
? guildData.title || ""
|
|
||||||
: firstGuild.guildsName || "",
|
|
||||||
area_activity: isExternalApi
|
|
||||||
? guildData.isicname || ""
|
|
||||||
: firstGuild.areaActivity || "",
|
|
||||||
state: isExternalApi ? guildData.state || "" : provinceData.name || "",
|
|
||||||
province: isExternalApi ? "" : provinceData.key || "",
|
|
||||||
city: isExternalApi ? guildData.city || "" : cityData.key || "",
|
|
||||||
address: isExternalApi
|
|
||||||
? guildData.address || ""
|
|
||||||
: addressData.address || "",
|
|
||||||
license_expire_date: licenseExpireDatePersian,
|
|
||||||
license_status: isExternalApi
|
|
||||||
? guildData.licenseStatus || ""
|
|
||||||
: firstGuild.licenseStatus || "",
|
|
||||||
license_type: isExternalApi
|
|
||||||
? guildData.licenseType || ""
|
|
||||||
: firstGuild.licenseType || "",
|
|
||||||
license_number: isExternalApi
|
|
||||||
? guildData.licenseNumber || ""
|
|
||||||
: firstGuild.licenseNumber || "",
|
|
||||||
union_name: isExternalApi
|
|
||||||
? layerTwo.unionName || ""
|
|
||||||
: firstGuild.unionName || "",
|
|
||||||
postal_code: isExternalApi
|
|
||||||
? layerTwo.postalcode || ""
|
|
||||||
: addressData.postalCode || "",
|
|
||||||
phone_number: isExternalApi
|
|
||||||
? layerTwo.phonenumber || ""
|
|
||||||
: firstGuild.phoneNumber || "",
|
|
||||||
mobile: isExternalApi ? layerTwo.mobilenumber || "" : userData.mobile || "",
|
|
||||||
guild_national_id: isExternalApi
|
|
||||||
? layerTwo.nationalId || ""
|
|
||||||
: firstGuild.nationalCode || "",
|
|
||||||
is_foreigner: isForeignerValue,
|
|
||||||
corporation_name: isExternalApi
|
|
||||||
? layerTwo.corporationName || ""
|
|
||||||
: firstGuild.companyName || "",
|
|
||||||
has_steward: hasStewardValue,
|
|
||||||
has_partner: hasPartnerValue,
|
|
||||||
steward: isExternalApi ? false : firstGuild.isSteward || false,
|
|
||||||
guild: isExternalApi
|
|
||||||
? typeof guildData.guild === "boolean"
|
|
||||||
? guildData.guild
|
|
||||||
: false
|
|
||||||
: typeof firstGuild.guild === "boolean"
|
|
||||||
? firstGuild.guild
|
|
||||||
: false,
|
|
||||||
license_issue_date: licenseIssueDatePersian,
|
|
||||||
...(isExternalApi
|
|
||||||
? {}
|
|
||||||
: {
|
|
||||||
company_name: firstGuild.companyName || "",
|
|
||||||
company_identifier: firstGuild.companyIdentifier || "",
|
|
||||||
type_activity_name: firstGuild.typeActivity || "",
|
|
||||||
}),
|
|
||||||
};
|
|
||||||
|
|
||||||
formik.setValues({ ...formik.values, ...values });
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
import * as yup from "yup";
|
import * as yup from "yup";
|
||||||
import { normalizeDatabaseDate } from "./dateUtils";
|
import { normalizeDatabaseDate } from "./dateUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates validation schema for the form
|
||||||
|
* @param {boolean} isEditMode - Whether we're editing an existing guild
|
||||||
|
*/
|
||||||
export const getValidationSchema = (isEditMode) =>
|
export const getValidationSchema = (isEditMode) =>
|
||||||
yup.object({
|
yup.object({
|
||||||
national_id: yup
|
national_id: yup
|
||||||
@@ -66,70 +70,100 @@ export const getValidationSchema = (isEditMode) =>
|
|||||||
),
|
),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const getInitialValues = (guild) => ({
|
/**
|
||||||
first_name: guild?.user?.firstName || "",
|
* Extracts initial form values from guild data for edit mode
|
||||||
last_name: guild?.user?.lastName || "",
|
*
|
||||||
corporation_name: guild?.companyName || "",
|
* Data source: Guild data passed directly when editing existing guild
|
||||||
national_id: guild?.user?.nationalId || "",
|
* This is used when the component receives a guild prop (edit mode)
|
||||||
national_code: guild?.user?.nationalCode || "",
|
*
|
||||||
birth_date: normalizeDatabaseDate(guild?.user?.birthday || ""),
|
* @param {Object} guildDataForEdit - Guild data object from our database (edit mode)
|
||||||
father_name: guild?.user?.fatherName || "",
|
* @returns {Object} Initial form values for Formik
|
||||||
gender: guild?.user?.gender || "",
|
*/
|
||||||
person_city: guild?.user?.city || "",
|
export const getInitialValues = (guildDataForEdit) => {
|
||||||
is_alive: guild?.user?.isAlive || "",
|
// Extract user data from edit mode guild object
|
||||||
guild_name: guild?.guildsName || guild?.name || "",
|
const userDataFromEdit = guildDataForEdit?.user || {};
|
||||||
area_activity: guild?.areaActivity || "",
|
const addressDataFromEdit = guildDataForEdit?.address || {};
|
||||||
state: guild?.address?.province?.name || "",
|
const provinceDataFromEdit = addressDataFromEdit?.province || {};
|
||||||
province: guild?.address?.province?.key || "",
|
const cityDataFromEdit = addressDataFromEdit?.city || {};
|
||||||
city_name: guild?.address?.city?.name || "",
|
|
||||||
address: guild?.address?.address || "",
|
return {
|
||||||
license_expire_date: normalizeDatabaseDate(guild?.licenseExpireDate || ""),
|
// Personal Information Fields (from user object in edit mode)
|
||||||
license_status: guild?.licenseStatus || "",
|
first_name: userDataFromEdit.firstName || "",
|
||||||
license_type: guild?.licenseType || "",
|
last_name: userDataFromEdit.lastName || "",
|
||||||
union_name: guild?.unionName || "",
|
national_id: userDataFromEdit.nationalId || "",
|
||||||
postal_code: guild?.address?.postalCode || "",
|
national_code: userDataFromEdit.nationalCode || "",
|
||||||
phone_number: guild?.phoneNumber || "",
|
birth_date: normalizeDatabaseDate(userDataFromEdit.birthday || ""),
|
||||||
mobile: guild?.user?.mobile || "",
|
father_name: userDataFromEdit.fatherName || "",
|
||||||
is_foreigner: guild?.is_foreign_national || "",
|
gender: userDataFromEdit.gender || "",
|
||||||
has_steward: guild?.hasSteward || "",
|
person_city: userDataFromEdit.city || "",
|
||||||
has_partner: guild?.hasPartner || "",
|
is_alive: userDataFromEdit.isAlive || "",
|
||||||
license_number: guild?.licenseNumber || "",
|
mobile: userDataFromEdit.mobile || "",
|
||||||
isAccepted: guild?.provinceAcceptState === "accepted" || false,
|
|
||||||
|
// Guild Information Fields (from guild object in edit mode)
|
||||||
|
guild_name: guildDataForEdit?.guildsName || guildDataForEdit?.name || "",
|
||||||
|
area_activity: guildDataForEdit?.areaActivity || "",
|
||||||
|
state: provinceDataFromEdit.name || "",
|
||||||
|
province: provinceDataFromEdit.key || "",
|
||||||
|
city_name: cityDataFromEdit.name || "",
|
||||||
|
address: addressDataFromEdit.address || "",
|
||||||
|
license_expire_date: normalizeDatabaseDate(
|
||||||
|
guildDataForEdit?.licenseExpireDate || ""
|
||||||
|
),
|
||||||
|
license_status: guildDataForEdit?.licenseStatus || "",
|
||||||
|
license_type: guildDataForEdit?.licenseType || "",
|
||||||
|
union_name: guildDataForEdit?.unionName || "",
|
||||||
|
postal_code: addressDataFromEdit.postalCode || "",
|
||||||
|
phone_number: guildDataForEdit?.phoneNumber || "",
|
||||||
|
license_number: guildDataForEdit?.licenseNumber || "",
|
||||||
|
guild_national_id: guildDataForEdit?.nationalId || "",
|
||||||
|
corporation_name: guildDataForEdit?.companyName || "",
|
||||||
|
license_issue_date: normalizeDatabaseDate(
|
||||||
|
guildDataForEdit?.licenseIssueDate || ""
|
||||||
|
),
|
||||||
|
|
||||||
|
// Status Fields (from guild object in edit mode)
|
||||||
|
is_foreigner: guildDataForEdit?.is_foreign_national || "",
|
||||||
|
has_steward: guildDataForEdit?.hasSteward || "",
|
||||||
|
has_partner: guildDataForEdit?.hasPartner || "",
|
||||||
steward:
|
steward:
|
||||||
typeof guild?.steward === "boolean"
|
typeof guildDataForEdit?.steward === "boolean"
|
||||||
? guild.steward
|
? guildDataForEdit.steward
|
||||||
: typeof guild?.isSteward === "boolean"
|
: typeof guildDataForEdit?.isSteward === "boolean"
|
||||||
? guild.isSteward
|
? guildDataForEdit.isSteward
|
||||||
: false,
|
: false,
|
||||||
guild:
|
guild:
|
||||||
typeof guild?.guild === "boolean"
|
typeof guildDataForEdit?.guild === "boolean"
|
||||||
? guild.guild
|
? guildDataForEdit.guild
|
||||||
: typeof guild?.isGuild === "boolean"
|
: typeof guildDataForEdit?.isGuild === "boolean"
|
||||||
? guild.isGuild
|
? guildDataForEdit.isGuild
|
||||||
: false,
|
: false,
|
||||||
verify_mobile: guild?.verifyMobile || false,
|
verify_mobile: guildDataForEdit?.verifyMobile || false,
|
||||||
guild_national_id: guild?.nationalId || "",
|
active: guildDataForEdit?.active ?? null,
|
||||||
license_issue_date: normalizeDatabaseDate(guild?.licenseIssueDate || ""),
|
isAccepted: guildDataForEdit?.provinceAcceptState === "accepted" || false,
|
||||||
company_name: guild?.companyName || "",
|
|
||||||
company_identifier: guild?.companyIdentifier || "",
|
// Additional Edit Mode Fields
|
||||||
type_activity_name: guild?.typeActivityName || "",
|
company_name: guildDataForEdit?.companyName || "",
|
||||||
active: guild?.active ?? null,
|
company_identifier: guildDataForEdit?.companyIdentifier || "",
|
||||||
guilds: guild
|
type_activity_name: guildDataForEdit?.typeActivityName || "",
|
||||||
|
|
||||||
|
// Guilds array for validation (edit mode)
|
||||||
|
guilds: guildDataForEdit
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
steward:
|
steward:
|
||||||
typeof guild?.steward === "boolean"
|
typeof guildDataForEdit?.steward === "boolean"
|
||||||
? guild.steward
|
? guildDataForEdit.steward
|
||||||
: typeof guild?.isSteward === "boolean"
|
: typeof guildDataForEdit?.isSteward === "boolean"
|
||||||
? guild.isSteward
|
? guildDataForEdit.isSteward
|
||||||
: false,
|
: false,
|
||||||
guild:
|
guild:
|
||||||
typeof guild?.guild === "boolean"
|
typeof guildDataForEdit?.guild === "boolean"
|
||||||
? guild.guild
|
? guildDataForEdit.guild
|
||||||
: typeof guild?.isGuild === "boolean"
|
: typeof guildDataForEdit?.isGuild === "boolean"
|
||||||
? guild.isGuild
|
? guildDataForEdit.isGuild
|
||||||
: false,
|
: false,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
: [],
|
: [],
|
||||||
});
|
};
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user