Fix: create guilds for dbRegister false

This commit is contained in:
2026-02-03 11:50:23 +03:30
parent ec88696465
commit a2a33b0efb
2 changed files with 73 additions and 49 deletions

View File

@@ -33,6 +33,7 @@ import { getValidationSchema, getInitialValues } from "./utils/formUtils";
import {
mapResponseDataToFormFields,
prepareSubmitData,
mapExternalApiGuildToFormValues,
} from "./utils/dataMapping";
import { handleSubmitSuccess, handleSubmitError } from "./utils/submitHandlers";
@@ -118,7 +119,6 @@ export const CreateGuilds = ({ guild, updateTable }) => {
birth_date: values?.birth_date,
father_name: values?.father_name,
mobile: values?.mobile,
// Personal info city: always use current selection (guild section has city_name only)
person_city: values?.person_city,
city: values?.city,
};
@@ -224,6 +224,9 @@ export const CreateGuilds = ({ guild, updateTable }) => {
if (responseData.dbRegister === false) {
setDbRegister(false);
setHasInquiry(null);
if (guildsData.length > 0) {
setGuildActive(guildsData[0]?.active ?? true);
}
} else {
setHasInquiry(responseData.hasInquiry ?? null);
const firstGuild = guildsData.length > 0 ? guildsData[0] : null;
@@ -235,13 +238,16 @@ export const CreateGuilds = ({ guild, updateTable }) => {
if (guildsData.length > 0) {
setGuildsList(guildsData);
const initialGuildValues = guildsData.map((guildItem) => {
const combinedGuild = {
...guildItem,
user: responseData.user || {},
};
return getInitialValues(combinedGuild);
});
const initialGuildValues =
responseData.dbRegister === false
? guildsData.map((g) => mapExternalApiGuildToFormValues(g))
: guildsData.map((guildItem) => {
const combinedGuild = {
...guildItem,
user: responseData.user || {},
};
return getInitialValues(combinedGuild);
});
setGuildsFormValues(initialGuildValues);
// Update Formik's guilds array for validation (include validated fields)

View File

@@ -160,24 +160,27 @@ const extractFormFieldsFromDatabaseInquiry = (
};
};
/**
* Personal info only from external API (dbRegister false).
* Guild data is mapped per guild via mapExternalApiGuildToFormValues.
*/
const extractFormFieldsFromExternalApi = (
responseDataFromExternalApi,
inquiryNationalCode
) => {
const userFromExternalApi = responseDataFromExternalApi.user || {};
const firstGuildFromExternalApi =
const firstGuild =
Array.isArray(responseDataFromExternalApi.guilds) &&
responseDataFromExternalApi.guilds.length > 0
? responseDataFromExternalApi.guilds[0]
: {};
const layerTwoFromExternalApi = firstGuildFromExternalApi.layerTwo || {};
const layerTwo = firstGuild.layerTwo || {};
return {
// Personal Information Fields
first_name: userFromExternalApi.firstName || "",
last_name: userFromExternalApi.lastName || "",
national_id: String(
layerTwoFromExternalApi.nationalcode ||
layerTwo.nationalcode ||
userFromExternalApi.nationalCode ||
inquiryNationalCode
).trim(),
@@ -191,58 +194,73 @@ const extractFormFieldsFromExternalApi = (
? "False"
: "",
person_city: userFromExternalApi.city || "",
city: "",
is_alive:
userFromExternalApi.isLive === true
? "بلی"
: userFromExternalApi.isLive === false
? "خیر"
: "",
mobile: layerTwoFromExternalApi.mobilenumber || "",
mobile: layerTwo.mobilenumber || "",
};
};
// Guild Information Fields
guild_name: firstGuildFromExternalApi.title || "",
area_activity: firstGuildFromExternalApi.isicname || "",
city: "", // User selects from cities list
address: firstGuildFromExternalApi.address || "",
/**
* Maps one external API guild (dbRegister false) to guild form values.
* All fields are guild data, not personal info.
*/
export const mapExternalApiGuildToFormValues = (guild) => {
const layerTwo = guild?.layerTwo || {};
return {
guild_name: guild?.title || "",
area_activity: guild?.isicname || "",
city_name: guild?.city || "",
address: guild?.address || "",
license_expire_date: normalizeExternalApiDate(
firstGuildFromExternalApi.licenseExpireDate || ""
guild?.licenseExpireDate || ""
),
license_status: firstGuildFromExternalApi.licenseStatus || "",
license_type: firstGuildFromExternalApi.licenseType || "",
license_number: firstGuildFromExternalApi.licenseNumber || "",
license_status: guild?.licenseStatus || "",
license_type: guild?.licenseType || "",
license_number: guild?.licenseNumber || "",
license_issue_date: normalizeExternalApiDate(
layerTwoFromExternalApi.licenseIssueDate || ""
layerTwo.licenseIssueDate || ""
),
union_name: layerTwoFromExternalApi.unionName || "",
postal_code: layerTwoFromExternalApi.postalcode || "",
phone_number: layerTwoFromExternalApi.phonenumber || "",
guild_national_id: layerTwoFromExternalApi.nationalId || "",
corporation_name: layerTwoFromExternalApi.corporationName || "",
// Status Fields
union_name: layerTwo.unionName || "",
postal_code: layerTwo.postalcode || "",
phone_number: layerTwo.phonenumber || "",
guild_national_id: layerTwo.nationalId || "",
corporation_name: layerTwo.corporationName || "",
active: guild?.active ?? true,
is_foreigner:
layerTwoFromExternalApi.isForeigner === "خیر"
layerTwo.isForeigner === "خیر"
? false
: layerTwoFromExternalApi.isForeigner === "بلی"
: layerTwo.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,
has_steward:
layerTwo.hasSteward === "خیر"
? false
: layerTwo.hasSteward === "بلی"
? true
: false,
has_partner:
layerTwo.hasPartner === "خیر"
? false
: layerTwo.hasPartner === "بلی"
? true
: false,
steward:
layerTwo.hasSteward === "خیر"
? false
: layerTwo.hasSteward === "بلی"
? true
: false,
guild:
layerTwo.hasSteward === "خیر"
? true
: layerTwo.hasSteward === "بلی"
? true
: true,
};
};