Skip to content

Commit

Permalink
review fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mithunhegde-egov committed Dec 20, 2024
1 parent fd93e5a commit d2cc13a
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -316,55 +316,64 @@ const DigitJSONForm = ({
};
const secondFormatLocalizationMutation = Digit.Hooks.useCustomAPIMutationHook(reqCriteriaSecondUpsert);

const onSubmitV2 = async ({ formData }, e) => {
let locale = Digit.SessionStorage.get("locale") || Digit.Utils.getDefaultLanguage();
const transformedFormData = { ...formData };

for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
if (fieldProps?.localizationCode) {
transformedFormData[fieldName] = fieldProps.mdmsCode;
}
const transformFormDataWithProperties = (formData, additionalProperties) => {
const transformedFormData = { ...formData };
for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
if (fieldProps?.localizationCode) {
transformedFormData[fieldName] = fieldProps.mdmsCode;
}
}
}
return transformedFormData;
};

const schemaCodeParts = schema?.code?.split(".") || [];
const firstPart = schemaCodeParts[0]?.toLowerCase() || "default";
const secondPart = schemaCodeParts[1]?.toUpperCase() || "";

const secondFormatMessages = [];
for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
const { mdmsCode, localizationMessage } = fieldProps;
if (mdmsCode && localizationMessage) {
const code = `${secondPart}.${mdmsCode}`;
secondFormatMessages.push({
code: code,
message: localizationMessage,
module: firstPart,
locale: "en_IN",
});
}
// Utility function to construct second format localization messages
const buildSecondFormatMessages = (additionalProperties, schemaCode, locale) => {
const schemaCodeParts = schemaCode?.split(".") || [];
const firstPart = schemaCodeParts[0]?.toLowerCase() || "default";
const secondPart = schemaCodeParts[1]?.toUpperCase() || "";

const messages = [];
for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
const { mdmsCode, localizationMessage } = fieldProps;
if (mdmsCode && localizationMessage) {
const code = `${secondPart}.${mdmsCode}`;
messages.push({
code: code,
message: localizationMessage,
module: firstPart,
locale: locale,
});
}
}
}
return messages;
};

if (secondFormatMessages.length > 0) {
try {
await secondFormatLocalizationMutation.mutateAsync({
params: {},
body: {
tenantId: tenantId,
messages: secondFormatMessages
}
});
} catch (err) {
console.error("Second format localization upsert failed:", err);
}
const onSubmitV2 = async ({ formData }, e) => {
let locale = Digit.StoreData.getCurrentLanguage();
const transformedFormData = transformFormDataWithProperties(formData, additionalProperties);
const secondFormatMessages = buildSecondFormatMessages(additionalProperties, schema?.code, locale);
if (secondFormatMessages.length > 0) {
try {
await secondFormatLocalizationMutation.mutateAsync({
params: {},
body: {
tenantId: tenantId,
messages: secondFormatMessages,
},
});
} catch (err) {
console.error("Second format localization upsert failed:", err);
}
onSubmit && onSubmit(transformedFormData, additionalProperties);
};
}
onSubmit && onSubmit(transformedFormData, additionalProperties);
};


const customWidgets = { SelectWidget: v2 ? CustomDropdown : CustomDropdownV2, CheckboxWidget: CustomCheckbox };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useHistory } from "react-router-dom";
import { DigitJSONForm } from "../../Module";
import _ from "lodash";
import { DigitLoader } from "../../components/DigitLoader";
import { buildLocalizationMessages } from "./localizationUtility";

/*
Expand Down Expand Up @@ -120,41 +121,24 @@ const MDMSAdd = ({ defaultFormData, updatesToUISchema, screenType = "add", onVie
};

const onSubmit = (data, additionalProperties) => {
let locale = Digit.SessionStorage.get("locale") || Digit.Utils.getDefaultLanguage();
let locale = Digit.StoreData.getCurrentLanguage();
toggleSpinner(true);

const onSuccess = async (resp) => {
// After main MDMS add success
const jsonPath = api?.responseJson ? api?.responseJson : "mdms[0].id";
setShowToast(`${t("WBH_SUCCESS_MDMS_MSG")} ${_.get(resp, jsonPath, "NA")}`);
setShowErrorToast(false);
let locModuleName= `digit-mdms-${schema?.code}`;
let transformedModuleName= tranformLocModuleName(locModuleName);
// Build messages array from additionalProperties for localization
const messages = [];
if (additionalProperties && typeof additionalProperties === "object") {
for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
let transformedLocCode= tranformLocModuleName(fieldProps?.localizationCode);
if (fieldProps?.localizationCode && fieldProps?.localizationMessage) {
messages.push({
code: transformedLocCode,
message: fieldProps.localizationMessage,
// Append "digit_mdms_" to localization code for module
module: transformedModuleName,
locale: "en_IN",
});
}
}
}
}


const locModuleName = `digit-mdms-${schema?.code}`;
const messages = buildLocalizationMessages(additionalProperties, locModuleName, locale);

if (messages.length > 0) {
const localizationBody = {
tenantId: tenantId,
messages: messages,
};

// Perform localization upsert
localizationMutation.mutate(
{
Expand All @@ -168,7 +152,7 @@ const MDMSAdd = ({ defaultFormData, updatesToUISchema, screenType = "add", onVie
setShowErrorToast(true);
closeToast();
},
onSuccess: (upsertResp) => {
onSuccess: () => {
toggleSpinner(false);
setSessionFormData({});
setSession({});
Expand All @@ -186,14 +170,14 @@ const MDMSAdd = ({ defaultFormData, updatesToUISchema, screenType = "add", onVie
gotoView();
}
};

const onError = (resp) => {
toggleSpinner(false);
setShowToast(`${t("WBH_ERROR_MDMS_DATA")} ${t(resp?.response?.data?.Errors?.[0]?.code)}`);
setShowErrorToast(true);
closeToast();
};

_.set(body, api?.requestJson ? api?.requestJson : "Mdms.data", { ...data });
mutation.mutate(
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import MDMSAdd from "./MDMSAddV2";
import { Loader, Toast } from "@egovernments/digit-ui-react-components";
import { useTranslation } from "react-i18next";
import { useHistory } from "react-router-dom";
import { buildLocalizationMessages } from "./localizationUtility";
import _ from "lodash";

const MDMSEdit = ({ ...props }) => {
Expand Down Expand Up @@ -64,7 +65,6 @@ const MDMSEdit = ({ ...props }) => {
uniqueFields.forEach((field) => {
updatesToUiSchema[field] = { "ui:readonly": true };
});
updatesToUiSchema["complaintSubTypeCode"] = { "ui:readonly": true }; // Explicitly disable Complaint Sub-Type Code
return { schema: data?.SchemaDefinitions?.[0], updatesToUiSchema };
},
},
Expand All @@ -78,8 +78,8 @@ const MDMSEdit = ({ ...props }) => {
};

// Localization Search
const localizationModule = tranformLocModuleName(`DIGIT_MDMS_${data?.schemaCode}`)
let locale = Digit.SessionStorage.get("locale") || Digit.Utils.getDefaultLanguage();
const localizationModule = tranformLocModuleName(`DIGIT_MDMS_${data?.schemaCode}`).toLowerCase();
let locale=Digit.StoreData.getCurrentLanguage();

const localizationReqCriteria = {
url: `/localization/messages/v1/_search?locale=${locale}&tenantId=${stateId}&module=${localizationModule}`,
Expand Down Expand Up @@ -129,29 +129,13 @@ const MDMSEdit = ({ ...props }) => {
};

const mutation = Digit.Hooks.useCustomAPIMutationHook(reqCriteriaUpdate);

const handleUpdate = async (formData, additionalProperties) => {
const transformedFormData = { ...formData };

// Prepare Localization Messages
const messages = [];
if (additionalProperties && typeof additionalProperties === "object") {
for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
const transformedLocCode=tranformLocModuleName(fieldProps.localizationCode)
if (fieldProps?.localizationCode && fieldProps?.localizationMessage) {
messages.push({
code: transformedLocCode,
message: fieldProps.localizationMessage,
module: localizationModule,
locale: locale,
});
}
}
}
}

const locale = Digit.StoreData.getCurrentLanguage();

// Prepare Localization Messages using the utility function
const messages = buildLocalizationMessages(additionalProperties, localizationModule, locale);

try {
if (messages.length > 0) {
await localizationUpsertMutation.mutateAsync({
Expand All @@ -164,7 +148,7 @@ const MDMSEdit = ({ ...props }) => {
closeToast();
return;
}

// Perform MDMS Update
mutation.mutate(
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ const MDMSView = ({ ...props }) => {
if (!localModuleName) return null;
return localModuleName.replace(/[^a-zA-Z0-9]/g, "-").toUpperCase();
};
const localizationModule = tranformLocModuleName(`DIGIT-MDMS-${rawSchemaCode}`);
const localizationModule = tranformLocModuleName(`DIGIT-MDMS-${rawSchemaCode}`).toLowerCase();

const createLocalizationCode = (fieldName, fieldValue) => {
const upperFieldName = fieldName.toUpperCase();
Expand All @@ -151,7 +151,7 @@ const MDMSView = ({ ...props }) => {
localizationCodes = localisableFields.map(field => createLocalizationCode(field.fieldPath, data.data[field.fieldPath]));
}

let locale = Digit.SessionStorage.get("locale") || Digit.Utils.getDefaultLanguage();
let locale=Digit.StoreData.getCurrentLanguage();
const localizationReqCriteria = {
url: `/localization/messages/v1/_search?locale=${locale}&tenantId=${tenantId}&module=${localizationModule}`,
params: {},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
export const buildLocalizationMessages = (additionalProperties, moduleName, locale) => {
if (!additionalProperties || typeof additionalProperties !== "object") return [];

const transformedModuleName = tranformLocModuleName(moduleName).toLowerCase();
const messages = [];

for (const fieldName in additionalProperties) {
if (additionalProperties.hasOwnProperty(fieldName)) {
const fieldProps = additionalProperties[fieldName];
const transformedLocCode = tranformLocModuleName(fieldProps?.localizationCode);

if (fieldProps?.localizationCode && fieldProps?.localizationMessage) {
messages.push({
code: transformedLocCode,
message: fieldProps.localizationMessage,
module: transformedModuleName,
locale: locale,
});
}
}
}

return messages;
};

// Utility function to transform a localization module name
export const tranformLocModuleName = (moduleName) => {
if (!moduleName) return null;
return moduleName.replace(/[^a-zA-Z0-9]/g, "-").toUpperCase();
};

0 comments on commit d2cc13a

Please sign in to comment.