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 { import {
mapResponseDataToFormFields, mapResponseDataToFormFields,
prepareSubmitData, prepareSubmitData,
mapExternalApiGuildToFormValues,
} from "./utils/dataMapping"; } from "./utils/dataMapping";
import { handleSubmitSuccess, handleSubmitError } from "./utils/submitHandlers"; import { handleSubmitSuccess, handleSubmitError } from "./utils/submitHandlers";
@@ -118,7 +119,6 @@ export const CreateGuilds = ({ guild, updateTable }) => {
birth_date: values?.birth_date, birth_date: values?.birth_date,
father_name: values?.father_name, father_name: values?.father_name,
mobile: values?.mobile, mobile: values?.mobile,
// Personal info city: always use current selection (guild section has city_name only)
person_city: values?.person_city, person_city: values?.person_city,
city: values?.city, city: values?.city,
}; };
@@ -224,6 +224,9 @@ export const CreateGuilds = ({ guild, updateTable }) => {
if (responseData.dbRegister === false) { if (responseData.dbRegister === false) {
setDbRegister(false); setDbRegister(false);
setHasInquiry(null); setHasInquiry(null);
if (guildsData.length > 0) {
setGuildActive(guildsData[0]?.active ?? true);
}
} else { } else {
setHasInquiry(responseData.hasInquiry ?? null); setHasInquiry(responseData.hasInquiry ?? null);
const firstGuild = guildsData.length > 0 ? guildsData[0] : null; const firstGuild = guildsData.length > 0 ? guildsData[0] : null;
@@ -235,13 +238,16 @@ export const CreateGuilds = ({ guild, updateTable }) => {
if (guildsData.length > 0) { if (guildsData.length > 0) {
setGuildsList(guildsData); setGuildsList(guildsData);
const initialGuildValues = guildsData.map((guildItem) => { const initialGuildValues =
const combinedGuild = { responseData.dbRegister === false
...guildItem, ? guildsData.map((g) => mapExternalApiGuildToFormValues(g))
user: responseData.user || {}, : guildsData.map((guildItem) => {
}; const combinedGuild = {
return getInitialValues(combinedGuild); ...guildItem,
}); user: responseData.user || {},
};
return getInitialValues(combinedGuild);
});
setGuildsFormValues(initialGuildValues); setGuildsFormValues(initialGuildValues);
// Update Formik's guilds array for validation (include validated fields) // 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 = ( const extractFormFieldsFromExternalApi = (
responseDataFromExternalApi, responseDataFromExternalApi,
inquiryNationalCode inquiryNationalCode
) => { ) => {
const userFromExternalApi = responseDataFromExternalApi.user || {}; const userFromExternalApi = responseDataFromExternalApi.user || {};
const firstGuildFromExternalApi = const firstGuild =
Array.isArray(responseDataFromExternalApi.guilds) && Array.isArray(responseDataFromExternalApi.guilds) &&
responseDataFromExternalApi.guilds.length > 0 responseDataFromExternalApi.guilds.length > 0
? responseDataFromExternalApi.guilds[0] ? responseDataFromExternalApi.guilds[0]
: {}; : {};
const layerTwoFromExternalApi = firstGuildFromExternalApi.layerTwo || {}; const layerTwo = firstGuild.layerTwo || {};
return { return {
// Personal Information Fields
first_name: userFromExternalApi.firstName || "", first_name: userFromExternalApi.firstName || "",
last_name: userFromExternalApi.lastName || "", last_name: userFromExternalApi.lastName || "",
national_id: String( national_id: String(
layerTwoFromExternalApi.nationalcode || layerTwo.nationalcode ||
userFromExternalApi.nationalCode || userFromExternalApi.nationalCode ||
inquiryNationalCode inquiryNationalCode
).trim(), ).trim(),
@@ -191,58 +194,73 @@ const extractFormFieldsFromExternalApi = (
? "False" ? "False"
: "", : "",
person_city: userFromExternalApi.city || "", person_city: userFromExternalApi.city || "",
city: "",
is_alive: is_alive:
userFromExternalApi.isLive === true userFromExternalApi.isLive === true
? "بلی" ? "بلی"
: userFromExternalApi.isLive === false : userFromExternalApi.isLive === false
? "خیر" ? "خیر"
: "", : "",
mobile: layerTwoFromExternalApi.mobilenumber || "", mobile: layerTwo.mobilenumber || "",
};
};
// Guild Information Fields /**
guild_name: firstGuildFromExternalApi.title || "", * Maps one external API guild (dbRegister false) to guild form values.
area_activity: firstGuildFromExternalApi.isicname || "", * All fields are guild data, not personal info.
city: "", // User selects from cities list */
address: firstGuildFromExternalApi.address || "", 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( license_expire_date: normalizeExternalApiDate(
firstGuildFromExternalApi.licenseExpireDate || "" guild?.licenseExpireDate || ""
), ),
license_status: firstGuildFromExternalApi.licenseStatus || "", license_status: guild?.licenseStatus || "",
license_type: firstGuildFromExternalApi.licenseType || "", license_type: guild?.licenseType || "",
license_number: firstGuildFromExternalApi.licenseNumber || "", license_number: guild?.licenseNumber || "",
license_issue_date: normalizeExternalApiDate( license_issue_date: normalizeExternalApiDate(
layerTwoFromExternalApi.licenseIssueDate || "" layerTwo.licenseIssueDate || ""
), ),
union_name: layerTwoFromExternalApi.unionName || "", union_name: layerTwo.unionName || "",
postal_code: layerTwoFromExternalApi.postalcode || "", postal_code: layerTwo.postalcode || "",
phone_number: layerTwoFromExternalApi.phonenumber || "", phone_number: layerTwo.phonenumber || "",
guild_national_id: layerTwoFromExternalApi.nationalId || "", guild_national_id: layerTwo.nationalId || "",
corporation_name: layerTwoFromExternalApi.corporationName || "", corporation_name: layerTwo.corporationName || "",
active: guild?.active ?? true,
// Status Fields
is_foreigner: is_foreigner:
layerTwoFromExternalApi.isForeigner === "خیر" layerTwo.isForeigner === "خیر"
? false ? false
: layerTwoFromExternalApi.isForeigner === "بلی" : layerTwo.isForeigner === "بلی"
? true ? 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, : 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,
}; };
}; };