From 13a67bb74cfdfaa61f87d05db3ebfc1ba8d7d050 Mon Sep 17 00:00:00 2001 From: Suryansh Date: Tue, 24 Dec 2024 12:04:53 +0530 Subject: [PATCH 1/6] help text and checklist create call order corrected --- .../src/pages/employee/CreateChecklist.js | 55 ++++++++++++++----- .../src/pages/employee/UpdateChecklist.js | 28 +++++++++- .../src/pages/employee/ViewChecklist.js | 17 ++++++ 3 files changed, 84 insertions(+), 16 deletions(-) diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js index e1219b2b03..5eca486054 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js @@ -43,6 +43,7 @@ const CreateChecklist = () => { const history = useHistory(); const [serviceCode, setServiceCode] = useState(null); const [def_data, setDef_Data] = useState(null); + const [helpText, setHelpText] = useState(""); module = "hcm-checklist"; @@ -428,7 +429,8 @@ const CreateChecklist = () => { value: { name: checklistName, type: checklistType, - role: role + role: role, + helpText: helpText } } ] @@ -447,28 +449,38 @@ const CreateChecklist = () => { } setSubmitting(true); try { - const data = await mutateAsync(payload); // Use mutateAsync for await support - // Handle successful checklist creation - // Proceed with localization if needed + // Prepare localization data let checklistTypeTemp = checklistType.toUpperCase().replace(/ /g, "_"); if (checklistTypeCode) checklistTypeTemp = checklistTypeCode; let roleTemp = role.toUpperCase().replace(/ /g, "_"); + let helpTextCode = helpText.toUpperCase().replace(/ /g, "_"); uniqueLocal.push({ code: `${campaignName}.${checklistTypeTemp}.${roleTemp}`, locale: locale, message: `${t(checklistTypeLocal)} ${t(roleLocal)}`, module: "hcm-checklist" }); + uniqueLocal.push({ + code: `${campaignName}.${checklistTypeTemp}.${roleTemp}.${helpTextCode}`, + locale: locale, + message: helpText, + module: "hcm-checklist" + }); + + // Call upsert first + const localisations = uniqueLocal; + const localisationResult = await localisationMutateAsync(localisations); + + if (!localisationResult.success) { + // Exit if upsert (localisation) fails + setShowToast({ label: "LOCALIZATION_FAILED_PLEASE_TRY_AGAIN", isError: "true" }); + return; + } + + // Proceed to create checklist + const data = await mutateAsync(payload); + if (data.success) { // Replace with your actual condition - const localisations = uniqueLocal; - const localisationResult = await localisationMutateAsync(localisations); - // Check if localization succeeded - if (!localisationResult.success) { - setShowToast({ label: "CHECKLIST_CREATED_LOCALISATION_ERROR", isError: "true" }); - return; // Exit if localization fails - } - - // setShowToast({ label: "CHECKLIST_AND_LOCALISATION_CREATED_SUCCESSFULLY"}); history.push(`/${window.contextPath}/employee/campaign/response?isSuccess=${true}`, { message: "ES_CHECKLIST_CREATE_SUCCESS_RESPONSE", preText: "ES_CHECKLIST_CREATE_SUCCESS_RESPONSE_PRE_TEXT", @@ -478,11 +490,11 @@ const CreateChecklist = () => { secondaryActionLink: `/${window?.contextPath}/employee/campaign/my-campaign`, }); } else { - setShowToast({ label: "CHECKLIST_CREATED_FAILED", isError: "true" }); + setShowToast({ label: "CHECKLIST_UPDATE_FAILED", isError: "true" }); } } catch (error) { // Handle error scenario - setShowToast({ label: "CHECKLIST_CREATED_FAILED", isError: "true" }); + setShowToast({ label: "CHECKLIST_UPDATE_FAILED", isError: "true" }); // console.error("Error creating checklist:", error); } finally { setSubmitting(false); @@ -610,6 +622,19 @@ const CreateChecklist = () => { placeholder={"Checklist Name"} /> +
+
{t("CHECKLIST_HELP_TEXT")}
+ setHelpText(event.target.value)} + placeholder={t("CHECKLIST_HELP_TEXT_PALCEHOLDER")} + /> +
{ const [previewData, setPreviewData] = useState([]); const [showPopUp, setShowPopUp] = useState(false); const [curActive, setCurActive] = useState(false); + const [helpText, setHelpText] = useState(""); const popShow = () => { @@ -73,6 +74,7 @@ const UpdateChecklist = () => { select: (res) => { if (res?.ServiceDefinitions?.[0]?.attributes) { setCurActive(res?.ServiceDefinitions?.[0].isActive); + setHelpText(res?.ServiceDefinitions?.[0]?.additionalFields?.fields?.[0]?.value?.helpText); let temp_data = res?.ServiceDefinitions?.[0]?.attributes let formatted_data = temp_data.map((item) => item.additionalFields?.fields?.[0]?.value); let nvd = formatted_data.filter((value, index, self) => @@ -375,7 +377,8 @@ const UpdateChecklist = () => { value: { name: checklistName, type: checklistType, - role: role + role: role, + helpText: helpText } } ] @@ -398,12 +401,19 @@ const UpdateChecklist = () => { let checklistTypeTemp = checklistType.toUpperCase().replace(/ /g, "_"); if (checklistTypeCode) checklistTypeTemp = checklistTypeCode; let roleTemp = role.toUpperCase().replace(/ /g, "_"); + let helpTextCode = helpText.toUpperCase().replace(/ /g, "_"); uniqueLocal.push({ code: `${campaignName}.${checklistTypeTemp}.${roleTemp}`, locale: locale, message: `${t(checklistTypeLocal)} ${t(roleLocal)}`, module: "hcm-checklist" }); + uniqueLocal.push({ + code: `${campaignName}.${checklistTypeTemp}.${roleTemp}.${helpTextCode}`, + locale: locale, + message: helpText, + module: "hcm-checklist" + }); // Call upsert first const localisations = uniqueLocal; @@ -454,6 +464,7 @@ const UpdateChecklist = () => { { label: "CHECKLIST_ROLE", value: roleLocal }, { label: "TYPE_OF_CHECKLIST", value: checklistTypeLocal }, { label: "CAMPAIGN_NAME", value: campaignName }, + // { label: "CHECKLIST_HELP_TEXT", value: helpText } // { label: "CHECKLIST_NAME", value: name} ]; @@ -532,6 +543,21 @@ const UpdateChecklist = () => { {index !== fieldPairs.length - 1 &&
} ))} + { +
+
{t("CHECKLIST_HELP_TEXT")}
+ setHelpText(event.target.value)} + placeholder={t("CHECKLIST_HELP_TEXT_PALCEHOLDER")} + /> +
+ }
{!isLoading && { const [config, setConfig] = useState(null); const [showPopUp, setShowPopUp] = useState(false); const [previewData, setPreviewData] = useState([]); + const [helpText, setHelpText] = useState(""); const [viewData, setViewData] = useState(null); @@ -43,6 +44,7 @@ const ViewChecklist = () => { select: (res) => { if (res?.ServiceDefinitions?.[0]?.attributes) { setServiceDefId(res?.ServiceDefinitions?.[0]?.id); + setHelpText(res?.ServiceDefinitions?.[0]?.additionalFields?.fields?.[0]?.value?.helpText); const temp_data = res?.ServiceDefinitions?.[0]?.attributes const formatted_data = temp_data.map((item) => item.additionalFields?.fields?.[0]?.value); const nvd = formatted_data.filter((value, index, self) => @@ -253,6 +255,21 @@ const ViewChecklist = () => { {index !== fieldPairs.length - 1 &&
} ))} + { +
+
{t("CHECKLIST_HELP_TEXT")}
+ setHelpText(event.target.value)} + placeholder={t("CHECKLIST_HELP_TEXT_PALCEHOLDER")} + /> +
+ }
From 5bb6c9b20a419db30381ad1d1fced806abf323ed Mon Sep 17 00:00:00 2001 From: Suryansh Date: Tue, 24 Dec 2024 12:07:40 +0530 Subject: [PATCH 2/6] localisations changed --- .../campaign-manager/src/pages/employee/CreateChecklist.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js index 5eca486054..c0fdf068f3 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/CreateChecklist.js @@ -490,11 +490,11 @@ const CreateChecklist = () => { secondaryActionLink: `/${window?.contextPath}/employee/campaign/my-campaign`, }); } else { - setShowToast({ label: "CHECKLIST_UPDATE_FAILED", isError: "true" }); + setShowToast({ label: "CHECKLIST_CREATED_FAILED", isError: "true" }); } } catch (error) { // Handle error scenario - setShowToast({ label: "CHECKLIST_UPDATE_FAILED", isError: "true" }); + setShowToast({ label: "CHECKLIST_CREATED_FAILED", isError: "true" }); // console.error("Error creating checklist:", error); } finally { setSubmitting(false); From a27768bfbc8a5fd4f35dd4d7358553583779d984 Mon Sep 17 00:00:00 2001 From: Suryansh Date: Fri, 31 Jan 2025 16:39:58 +0530 Subject: [PATCH 3/6] consoles removed --- .../src/components/SelectingBoundaries.js | 2 - .../src/configs/CampaignConfig.js | 83 ------------------- .../src/hooks/useBoundaryHome.js | 3 - .../src/pages/employee/BoundaryHome.js | 4 +- 4 files changed, 1 insertion(+), 91 deletions(-) diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundaries.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundaries.js index 3e43c1939d..49500eac30 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundaries.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundaries.js @@ -55,8 +55,6 @@ function SelectingBoundaries({ onSelect, formData, ...props }) { const isDraft = searchParams.get("draft"); const draftBoundary = searchParams.get("draftBoundary"); - console.log("propjjjjjjs", props); - function updateUrlParams(params) { const url = new URL(window.location.href); Object.entries(params).forEach(([key, value]) => { diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/configs/CampaignConfig.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/configs/CampaignConfig.js index d7a2639668..207b45efe6 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/configs/CampaignConfig.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/configs/CampaignConfig.js @@ -1,84 +1,4 @@ -// import React from "react"; - -// // Fetch hierarchies from MDMS -// const fetchHierarchies = async () => { -// // Return early if data already exists -// if (window.hierarchyData) { -// return window.hierarchyData; -// } - -// const tenantId = Digit.ULBService.getStateId(); - -// try { -// const response = await Digit.CustomService.getResponse({ -// url: '/mdms-v2/v1/_search', -// params: {}, -// body: { -// MdmsCriteria: { -// tenantId, -// moduleDetails: [{ -// moduleName: "HCM-ADMIN-CONSOLE", -// masterDetails: [{ -// name: "HierarchySchema" -// }] -// }] -// } -// } -// }); -// window.hierarchyData = response?.MdmsRes?.["HCM-ADMIN-CONSOLE"]?.HierarchySchema || []; -// return window.hierarchyData; -// } catch (error) { -// console.error("Error fetching hierarchies:", error); -// window.hierarchyData = []; -// return []; -// } -// }; - -// const fetchEmployeeDetails = async () => { -// // Return early if data already exists -// if (window.employeeDetails) { -// return window.employeeDetails; -// } - -// const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; -// const tenantId = Digit.ULBService.getStateId(); -// try { -// const userName = Digit.UserService.getUser()?.info?.userName; -// const res = await Digit.CustomService.getResponse({ -// url: `/${HRMS_CONTEXT_PATH}/employees/_search`, -// params: { -// tenantId: tenantId, -// codes: userName, -// sortOrder: "ASC", -// }, -// body: {}, -// }); -// window.employeeDetails = res?.Employees?.[0]; -// return res?.Employees?.[0]; -// } catch (error) { -// console.error("Error fetching employee details:", error); -// return null; -// } -// }; - -// // Initialize data once -// const initializeData = () => { -// if (!window.dataInitialized) { -// Promise.all([ -// fetchEmployeeDetails(), -// fetchHierarchies() -// ]).then(() => { -// window.dataInitialized = true; -// }); -// } -// }; - export const CampaignConfig = (totalFormData, dataParams, isSubmitting, summaryErrors, hierarchyData, allHierarchy, employeeDetails) => { - - // initializeData(); - console.log("hierachy dta from setup", allHierarchy); - console.log("employee det frmo setup", employeeDetails); - return [ { @@ -103,8 +23,6 @@ export const CampaignConfig = (totalFormData, dataParams, isSubmitting, summaryE isSubmitting: isSubmitting, employeeDetails: employeeDetails, allHierarchy: allHierarchy - // getEmployeeDetails: () => window.employeeDetails, // Function to get employee details - // getHierarchies: () => window.hierarchyData // Function to get hierarchies }, populators: { name: "projectType", @@ -212,7 +130,6 @@ export const CampaignConfig = (totalFormData, dataParams, isSubmitting, summaryE hierarchyData: hierarchyData, employeeDetails: employeeDetails, allHierarchy: allHierarchy - // getEmployeeDetails: () => window.employeeDetails // Function to get employee details }, populators: { name: "boundaryType", diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js index 6fa308ea2d..23c9199a63 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js @@ -44,7 +44,6 @@ const fetchBoundaryHierarchy = async (hierarchyType, tenantId) => { }; const fetchEmployeeDetails = async (userName, tenantId) => { - console.log("inside"); try { // Second API Call: Fetch Service Definitions const res = await Digit.CustomService.getResponse({ @@ -56,7 +55,6 @@ const fetchEmployeeDetails = async (userName, tenantId) => { }, body: {}, }); - console.log("Res is", res); return res?.Employees?.[0]; } catch (error) { console.error("Error fetching service definition:", error); @@ -114,7 +112,6 @@ const useBoundaryHome = ({ screenType = "campaign", defaultHierarchyType = "", h hierarchyName, defaultHierarchyName }; - console.log("merged data", mergedData); resolve(mergedData); }); } catch (error) { diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js index de58826556..09bd91636f 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js @@ -52,9 +52,7 @@ const BoundaryHome = () => { const type=searchParams.get("type")|| config?.type; const {isLoading,data,error}=Digit.Hooks.campaign.useBoundaryHome({ screenType: type,defaultHierarchyType:searchParams?.get("defaultHierarchyType"),hierarchyType:searchParams?.get("hierarchyType"),userName:Digit.UserService.getUser()?.info?.userName,tenantId }); - useEffect(()=>{ - console.log("hehehihihi", data); - }, [data]) + if (isLoading) return ; return ( From b9b80d93ad816a23936cdb58ec7f2c7f7db9f225 Mon Sep 17 00:00:00 2001 From: Suryansh Date: Tue, 4 Feb 2025 15:17:21 +0530 Subject: [PATCH 4/6] disease linking done in update and create flow --- .../modules/campaign-manager/src/Module.js | 51 ++++--- .../src/components/CampaignType.js | 26 +++- .../SelectingBoundariesDuplicate.js | 84 ++++-------- .../components/SelectingBoundaryComponent.js | 3 +- .../src/components/UpdateBoundaryWrapper.js | 23 +++- .../campaign-manager/src/hooks/index.js | 2 + .../src/hooks/useBoundaryHome.js | 126 +++++++----------- .../src/hooks/useEmployeeHierarchyType.js | 94 +++++++++++++ .../src/pages/employee/BoundaryHome.js | 24 +++- .../src/pages/employee/SetupCampaign.js | 59 ++++---- .../src/pages/employee/UpdateCampaign.js | 26 +++- 11 files changed, 313 insertions(+), 205 deletions(-) create mode 100644 health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js index 224c2bab5c..2811c3776a 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js @@ -1,5 +1,5 @@ -import { Loader, TourProvider } from "@egovernments/digit-ui-react-components"; -import React from "react"; +import { Body, Loader, TourProvider } from "@egovernments/digit-ui-react-components"; +import React, { useState, useEffect } from "react"; import { useRouteMatch } from "react-router-dom"; import EmployeeApp from "./pages/employee"; import { CustomisedHooks } from "./hooks"; @@ -68,27 +68,30 @@ export const CONSOLE_MDMS_MODULENAME = "HCM-ADMIN-CONSOLE"; */ const CampaignModule = ({ stateCode, userType, tenants }) => { const tenantId = Digit.ULBService.getCurrentTenantId(); - const { data: BOUNDARY_HIERARCHY_TYPE, isLoading: hierarchyLoading } = Digit.Hooks.useCustomMDMS( - tenantId, - CONSOLE_MDMS_MODULENAME, - [ - { - name: "HierarchySchema", - filter: `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]`, - }, - ], - { - select: (data) => { - return data?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.[0]?.hierarchy; - }, - }, - { schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` } - ); + const [filteredHierarchyType, setFilteredHierarchyType] = useState(null); + const [employeeData, setEmployeeData] = useState(null); + const [loading, setLoading] = useState(true); + const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; + + // Using the new custom hook + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: hierarchyData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); + + const hierarchyRelationData = Digit.Hooks.campaign.useBoundaryRelationshipSearch({ + BOUNDARY_HIERARCHY_TYPE, + tenantId + }); - const hierarchyData = Digit.Hooks.campaign.useBoundaryRelationshipSearch({ BOUNDARY_HIERARCHY_TYPE, tenantId }); const modulePrefix = "hcm"; + const moduleCode = BOUNDARY_HIERARCHY_TYPE + ? [`boundary-${BOUNDARY_HIERARCHY_TYPE}`] + : ["campaignmanager", "schema", "admin-schemas", "checklist", "appconfiguration"]; - const moduleCode = BOUNDARY_HIERARCHY_TYPE ? [`boundary-${BOUNDARY_HIERARCHY_TYPE}`] : ["campaignmanager", "schema", "admin-schemas", "checklist", "appconfiguration"]; const { path, url } = useRouteMatch(); const language = Digit.StoreData.getCurrentLanguage(); @@ -112,7 +115,13 @@ const CampaignModule = ({ stateCode, userType, tenants }) => { stateCode={stateCode} url={url} userType={userType} - hierarchyData={hierarchyData} + hierarchyData={hierarchyRelationData} + employeeDetails={hierarchyData?.employee} + allHierarchy={{ + [CONSOLE_MDMS_MODULENAME]: { + HierarchySchema: hierarchyData?.allHierarchies + } + }} /> diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/CampaignType.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/CampaignType.js index b3d242742e..2992f67ac8 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/CampaignType.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/CampaignType.js @@ -1,7 +1,7 @@ import React, { useState, useMemo, useRef, useEffect, Fragment } from "react"; import { Header } from "@egovernments/digit-ui-react-components"; import { useTranslation } from "react-i18next"; -import { InfoCard, LabelFieldPair } from "@egovernments/digit-ui-components"; +import { InfoCard, LabelFieldPair, Toast } from "@egovernments/digit-ui-components"; import { Button, CardText, Dropdown, ErrorMessage, PopUp, Stepper, TextBlock , Card, Loader} from "@egovernments/digit-ui-components"; const CampaignSelection = ({ onSelect, formData, formState, ...props }) => { @@ -20,14 +20,27 @@ const CampaignSelection = ({ onSelect, formData, formState, ...props }) => { const [currentStep , setCurrentStep] = useState(1); const currentKey = searchParams.get("key"); const source = searchParams.get("source"); + const [showToast, setShowToast] = useState(false); const [key, setKey] = useState(() => { const keyParam = searchParams.get("key"); return keyParam ? parseInt(keyParam) : 1; }); const [loading, setLoading] = useState(true); - const employeeDetails = props?.props?.employeeDetails?.Employees?.[0]; - const hierarchies = props?.props?.allHierarchy?.MdmsRes?.["HCM-ADMIN-CONSOLE"]?.HierarchySchema || []; + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: rawData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); + + const employeeDetails = useMemo(() => { + return rawData?.employee; + }, [rawData]); + const hierarchies = useMemo(()=>{ + return rawData?.allHierarchies; + }, [rawData]) function updateUrlParams(params) { const url = new URL(window.location.href); @@ -95,6 +108,7 @@ const CampaignSelection = ({ onSelect, formData, formState, ...props }) => { const filtered = filterProjectTypesByHierarchy(employeeDetails, hierarchies, projectType); setLoading(false); setFilteredProjectTypes(filtered); + if(!filtered) setShowToast(true); } }, [employeeDetails, projectType, hierarchies]); @@ -282,6 +296,12 @@ const CampaignSelection = ({ onSelect, formData, formState, ...props }) => { )}
)} + {!loading && showToast && + + } ); }; diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundariesDuplicate.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundariesDuplicate.js index a09de5aed6..df57e61b51 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundariesDuplicate.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/SelectingBoundariesDuplicate.js @@ -19,44 +19,33 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => { // "filter": `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]` // }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` }); + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: rawData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); + const lowestHierarchy = useMemo(() => { + return rawData?.matchingHierarchy?.lowestHierarchy; + }, [rawData]); + const hierarchyType = useMemo(()=>{ + return BOUNDARY_HIERARCHY_TYPE; + }, [BOUNDARY_HIERARCHY_TYPE]) + const [boundaryHierarchyData, setBoundaryHierarchyData] = useState(null); - const [hierarchyType, setHierarchyType] = useState(null); - const [HierarchySchema, setHierarchySchema] = useState(null); - const [lowestHierarchy, setLowestHierarchy] = useState(null); const [loading, setLoading] = useState(true); - useEffect(() => { - const fetchBoundaryHierarchy = async () => { - const employeeDepartments = employee?.assignments?.map((assignment) => assignment.department) || []; - - // Find first hierarchy where any group matches any employee department - const firstMatchingSchema = hierarchies.find( - schema => (schema.department || []).some(dept => employeeDepartments.includes(dept)) - ); - - const hierarchyType = firstMatchingSchema ? [firstMatchingSchema] : []; - - const hierschema = { - "HCM-ADMIN-CONSOLE": { - "HierarchySchema": hierarchyType - } - }; - - setHierarchySchema(hierschema); - setLowestHierarchy(hierschema?.["HCM-ADMIN-CONSOLE"]?.HierarchySchema?.[0]?.lowestHierarchy); - setHierarchyType(hierarchyType?.[0]?.hierarchy); - - if (!hierarchyType?.[0]?.hierarchy) return; - + if(!hierarchyType) return null; + const fetchBoundaryHierarchy = async () => { try { - // Using regular fetch instead of hook const response = await Digit.CustomService.getResponse({ url: '/boundary-service/boundary-relationships/_search', params: { tenantId: tenantId, - hierarchyType: hierarchyType?.[0]?.hierarchy, + hierarchyType: hierarchyType, includeChildren: true }, body: {}, @@ -65,7 +54,6 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => { const boundaryData = response?.TenantBoundary?.[0]?.boundary; setBoundaryHierarchyData(boundaryData); setLoading(false); - } catch (error) { console.error("Error fetching boundary hierarchy:", error); @@ -73,13 +61,9 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => { }; fetchBoundaryHierarchy(); - }, [employee, tenantId]); + }, [hierarchyType]); const { data: mailConfig } = Digit.Hooks.useCustomMDMS(tenantId, CONSOLE_MDMS_MODULENAME, [{ name: "mailConfig" }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.mailConfig` }); - // const lowestHierarchy = useMemo(() => { - // console.log("lowest",HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.[0]?.lowestHierarchy ); - // return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.[0]?.lowestHierarchy; - // }, [HierarchySchema]); const [selectedData, setSelectedData] = useState(props?.props?.sessionData?.HCM_CAMPAIGN_SELECTING_BOUNDARY_DATA?.boundaryType?.selectedData || []); const [boundaryOptions, setBoundaryOptions] = useState( @@ -108,7 +92,7 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => { }; useEffect(() => { - onSelect("boundaryType", { selectedData: selectedData, boundaryData: boundaryOptions , updateBoundary: !restrictSelection}); + onSelect("boundaryType", { selectedData: selectedData, boundaryData: boundaryOptions , updateBoundary: !restrictSelection }); }, [selectedData, boundaryOptions , restrictSelection]); useEffect(() => { @@ -181,26 +165,16 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => {
{t(`CAMPAIGN_SELECT_BOUNDARY`)}

{t(`CAMPAIGN_SELECT_BOUNDARIES_DESCRIPTION`)}

{ - // handleBoundaryChange(value); - // }} - hierarchyType={hierarchyType} - lowest={lowestHierarchy} - selectedData={selectedData} - boundaryOptions={boundaryOptions} - hierarchyData={boundaryHierarchyData} // Pass the fetched boundary hierarchy data - isMultiSelect={"true"} - restrictSelection={restrictSelection} - onSelect={(value) => { - handleBoundaryChange(value); - }} + hierarchyType={hierarchyType} + lowest={lowestHierarchy} + selectedData={selectedData} + boundaryOptions={boundaryOptions} + hierarchyData={boundaryHierarchyData} + isMultiSelect={"true"} + restrictSelection = {restrictSelection} + onSelect={(value) => { + handleBoundaryChange(value); + }} > item?.isRoot === true)?.type || {}); const [restrictSelection, setRestrictSelection] = useState(restrictSelectionPage); - useEffect(() => { setBoundaryOptions(boundaryOptionsPage); }, [boundaryOptionsPage]); diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/UpdateBoundaryWrapper.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/UpdateBoundaryWrapper.js index 1a19b1dd57..ee77dd793c 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/UpdateBoundaryWrapper.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/components/UpdateBoundaryWrapper.js @@ -15,19 +15,30 @@ const UpdateBoundaryWrapper = ({ onSelect,...props }) => { const id = searchParams.get("id"); const isDraft = searchParams.get("draft"); // const hierarchyType = props?.props?.hierarchyType; - const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS(tenantId, CONSOLE_MDMS_MODULENAME, [{ - name: "HierarchySchema", - "filter": `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]` - }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` }); + // const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS(tenantId, CONSOLE_MDMS_MODULENAME, [{ + // name: "HierarchySchema", + // "filter": `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]` + // }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` }); const [selectedData, setSelectedData] = useState(props?.props?.sessionData?.HCM_CAMPAIGN_SELECTING_BOUNDARY_DATA?.boundaryType?.selectedData || []); const [boundaryOptions, setBoundaryOptions] = useState( props?.props?.sessionData?.HCM_CAMPAIGN_SELECTING_BOUNDARY_DATA?.boundaryType?.boundaryData || {} ); const campaignName = searchParams.get("campaignName"); const [hierarchyType , SetHierarchyType] = useState(props?.props?.hierarchyType); + // const lowestHierarchy = useMemo(() => { + // return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.find((item) => item.hierarchy === hierarchyType)?.lowestHierarchy; + // }, [HierarchySchema, hierarchyType]); + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: rawData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); const lowestHierarchy = useMemo(() => { - return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.find((item) => item.hierarchy === hierarchyType)?.lowestHierarchy; - }, [HierarchySchema, hierarchyType]); + return rawData?.matchingHierarchy?.lowestHierarchy; + }, [rawData]); + const reqCriteriaCampaign = { url: `/project-factory/v1/project-type/search`, diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/index.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/index.js index da35cdc455..cda87de23a 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/index.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/index.js @@ -19,6 +19,7 @@ import useMDMSServiceSearch from "./useMDMSServiceSearch"; import useBoundaryHome from "./useBoundaryHome"; import useFetchFromMicroplan from "./useFetchFromMicroplan"; import { useReadExcelData, useUpdateAndUploadExcel } from "./useReadExcelData"; +import useEmployeeHierarchyType from "./useEmployeeHierarchyType"; const UserService = {}; @@ -48,6 +49,7 @@ const campaign = { useFetchFromMicroplan, useReadExcelData, useUpdateAndUploadExcel, + useEmployeeHierarchyType }; const Hooks = { diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js index 23c9199a63..03006b5fde 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useBoundaryHome.js @@ -1,29 +1,10 @@ import { useQuery } from "react-query"; -import { CONSOLE_MDMS_MODULENAME } from "../Module"; const MDMS_V2_CONTEXT_PATH = window?.globalConfigs?.getConfig("MDMS_V2_CONTEXT_PATH") || "mdms-v2"; const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; - - -const generateFile = async (hierarchyType, tenantId) => { - const res = await Digit.CustomService.getResponse({ - url: `/project-factory/v1/data/_generate`, - body: {}, - params: { - tenantId: tenantId, - type: "boundaryManagement", - forceUpdate: true, - hierarchyType: hierarchyType, - campaignId: "default", - }, - }); - return res; -}; - const fetchBoundaryHierarchy = async (hierarchyType, tenantId) => { try { - // Second API Call: Fetch Service Definitions const res = await Digit.CustomService.getResponse({ url: `/boundary-service/boundary-hierarchy-definition/_search`, params: {}, @@ -38,14 +19,13 @@ const fetchBoundaryHierarchy = async (hierarchyType, tenantId) => { }); return res?.BoundaryHierarchy?.[0] || {}; } catch (error) { - console.error("Error fetching service definition:", error); + console.error("Error fetching boundary hierarchy:", error); return error; } }; const fetchEmployeeDetails = async (userName, tenantId) => { try { - // Second API Call: Fetch Service Definitions const res = await Digit.CustomService.getResponse({ url: `/${HRMS_CONTEXT_PATH}/employees/_search`, params: { @@ -57,71 +37,68 @@ const fetchEmployeeDetails = async (userName, tenantId) => { }); return res?.Employees?.[0]; } catch (error) { - console.error("Error fetching service definition:", error); + console.error("Error fetching employee details:", error); return error; } }; -const selectData = (data) => { - return data?.mdms - ?.map((e) => e?.data) - .reduce((acc, curr) => { - acc[curr?.type] = curr; - return acc; - }, {}); +const fetchHierarchies = async (tenantId) => { + try { + const res = await Digit.CustomService.getResponse({ + url: `/egov-mdms-service/v1/_search`, + body: { + MdmsCriteria: { + tenantId: tenantId, + moduleDetails: [{ + moduleName: "HCM-ADMIN-CONSOLE", + masterDetails: [{ + name: "HierarchySchema" + }] + }] + }, + }, + }); + return res?.MdmsRes?.["HCM-ADMIN-CONSOLE"]?.HierarchySchema|| []; + } catch (error) { + console.error("Error fetching hierarchies:", error); + return []; + } }; -const useBoundaryHome = ({ screenType = "campaign", defaultHierarchyType = "", hierarchyType = "", userName, tenantId }) => { +const useBoundaryHome = ({ hierarchyType = "", userName, tenantId }) => { const fetchConsolidatedData = async () => { try { - // First API Call: Fetch MDMS Data - const mdmsResponse = await Digit.CustomService.getResponse({ - url: `/${MDMS_V2_CONTEXT_PATH}/v2/_search`, - body: { - MdmsCriteria: { - tenantId: tenantId, - schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema`, - isActive: true - }, - }, - }); - // Second API Call: Merge MDMS Data with Service Definition - const final = selectData(mdmsResponse); - // let final = selectData(mdmsResponse); - // final.campaign.hierarchyType="BOUNDARYDEMO35"; - - const boundaryConfig = final?.[screenType]; - - const employeeDetails = (boundaryConfig?.department?.length > 0 && (await fetchEmployeeDetails(userName, tenantId))) || null; - const hierarchyName=hierarchyType || boundaryConfig?.hierarchy; - const defaultHierarchyName=defaultHierarchyType || final?.["default"]?.hierarchy; - const boundaryData = await fetchBoundaryHierarchy(hierarchyName, tenantId); - const defaultBoundaryData = await fetchBoundaryHierarchy(defaultHierarchyName, tenantId); - // boundaryData && generateFile(hierarchyType || boundaryConfig?.hierarchy, tenantId); + // Fetch all hierarchies + const hierarchies = await fetchHierarchies(tenantId); + + // Fetch employee details + const employeeDetails = await fetchEmployeeDetails(userName, tenantId); + const employeeDepartments = employeeDetails?.assignments?.map(assignment => assignment.department) || []; + // Find matching hierarchy based on employee departments + const matchingHierarchy = hierarchies.find( + schema => (schema.department || []).some(dept => employeeDepartments.includes(dept)) + ); + const hierarchyName = hierarchyType || matchingHierarchy?.hierarchy; + + // Fetch boundary data for the matched hierarchy + const boundaryData = hierarchyName ? await fetchBoundaryHierarchy(hierarchyName, tenantId) : null; - // Return a promise that resolves after both API calls are complete - return new Promise((resolve) => { - // Once the second call (`mergeData`) is done, resolve the final data + return { + boundaryData, + employeeDetails, + hierarchyName, + matchingHierarchy, + hierarchies + }; - // Merge the MDMS data with the service data - const mergedData = { - boundaryConfig: final, - defaultBoundaryData, - boundaryData, - employeeDetails, - hierarchyName, - defaultHierarchyName - }; - resolve(mergedData); - }); } catch (error) { - console.error("Error fetching MDMS data:", error); - return []; + console.error("Error in consolidated data fetch:", error); + return {}; } }; const { data, isFetching, refetch, isLoading, error } = useQuery( - ["mdmsData", screenType, defaultHierarchyType, hierarchyType, userName, tenantId], + ["boundaryData", hierarchyType, userName, tenantId], fetchConsolidatedData, { cacheTime: 0, @@ -133,11 +110,8 @@ const useBoundaryHome = ({ screenType = "campaign", defaultHierarchyType = "", h isLoading, error, refetch, - isFetching, - revalidate: () => { - // final && client.invalidateQueries({ queryKey: [url].filter((e) => e) }); - }, + isFetching }; }; -export default useBoundaryHome; +export default useBoundaryHome; \ No newline at end of file diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js new file mode 100644 index 0000000000..2c825c17ed --- /dev/null +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js @@ -0,0 +1,94 @@ +import { useEffect, useState, useCallback, useMemo } from 'react'; + +const useEmployeeHierarchyType = (tenantId, options = {}) => { + const [data, setData] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; + const CONSOLE_MDMS_MODULENAME = "HCM-ADMIN-CONSOLE"; + + const fetchEmployeeAndHierarchy = useCallback(async () => { + try { + setIsLoading(true); + + // Fetch employee details + const employeeResponse = await Digit.CustomService.getResponse({ + url: `/${HRMS_CONTEXT_PATH}/employees/_search`, + params: { + tenantId, + codes: Digit.UserService.getUser()?.info?.userName, + SortOrder: "ASC" + }, + body: {} + }); + + const employee = employeeResponse?.Employees?.[0]; + + // Fetch hierarchies using MDMS + const mdmsResponse = await Digit.CustomService.getResponse( + { + url: '/egov-mdms-service/v1/_search', + params: {}, + body: { + MdmsCriteria: { + tenantId, + moduleDetails: [{ + moduleName: "HCM-ADMIN-CONSOLE", + masterDetails: [{ + name: "HierarchySchema" + }] + }] + } + } + } + ); + + // Get employee departments + const employeeDepartments = employee?.assignments?.map(assignment => assignment.department) || []; + const hierarchies = mdmsResponse?.MdmsRes?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema || []; + + // Find matching hierarchy + const matchingHierarchy = hierarchies.find( + schema => (schema.department || []).some(dept => employeeDepartments.includes(dept)) + ); + + const result = { + hierarchy: matchingHierarchy?.hierarchy || null, + employee, + allHierarchies: hierarchies, + matchingHierarchy + }; + + setData(result); + setIsLoading(false); + return result; + + } catch (err) { + console.error("Error in useEmployeeHierarchyType:", err); + setError(err); + setIsLoading(false); + return null; + } + }, [tenantId]); + + useEffect(() => { + fetchEmployeeAndHierarchy(); + }, [fetchEmployeeAndHierarchy]); + + const select = options?.select || (data => data?.hierarchy); + const queryData = useMemo(() => { + if (!data) return null; + return select(data); + }, [data, select]); + + return { + data: queryData, + isLoading, + error, + refetch: fetchEmployeeAndHierarchy, + rawData: data + }; +}; + +export default useEmployeeHierarchyType; \ No newline at end of file diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js index 09bd91636f..bf27a05273 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/BoundaryHome.js @@ -47,11 +47,17 @@ const BoundaryHome = () => { const [showPopUp, setShowPopUp] = useState(false); const [authorized, setAuthorized] = useState(false); const [geoPodeData, setGeoPodeData] = useState(false); + const [disButton, setDisButton] = useState(true); const history = useHistory(); + const user = Digit.UserService.getUser(); const type=searchParams.get("type")|| config?.type; const {isLoading,data,error}=Digit.Hooks.campaign.useBoundaryHome({ screenType: type,defaultHierarchyType:searchParams?.get("defaultHierarchyType"),hierarchyType:searchParams?.get("hierarchyType"),userName:Digit.UserService.getUser()?.info?.userName,tenantId }); + useEffect(()=>{ + if(user?.info?.roles?.some(role => role.code === "BOUNDARY_MANAGER")) setAuthorized(true); + setDisButton(!data?.boundaryData || !data?.hierarchyName); + }, [data]); if (isLoading) return ; @@ -72,7 +78,7 @@ const BoundaryHome = () => { size={"large"} variation={"secondary"} label={t(key)} - isDisabled={isEditDisabled || isCreateDisabled} + isDisabled={isEditDisabled || isCreateDisabled || disButton || !authorized} onClick={()=>navigate(history,key,data,setShowPopUp)} style={{ width: "35rem", height: "5rem" }} textStyles={{ fontSize: "1.5rem" }} @@ -80,7 +86,7 @@ const BoundaryHome = () => { })} - { {t(`HIERARCHY_CREATED_ON`)} {": "} {new Date(data?.boundaryData?.auditDetails?.createdTime).toLocaleDateString()}, {t(`HIERARCHY_LAST_MODIFIED_ON`)} {": "} {new Date(data?.boundaryData?.auditDetails?.lastModifiedTime).toLocaleDateString()}, ]} - /> + /> } + {disButton && + + } + {!authorized && + + } ); }; diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/SetupCampaign.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/SetupCampaign.js index c464d1f0fe..eb186ebbad 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/SetupCampaign.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/SetupCampaign.js @@ -66,21 +66,31 @@ const SetupCampaign = ({ hierarchyType, hierarchyData }) => { const [fetchUpload, setFetchUpload] = useState(false); const [active, setActive] = useState(0); const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; - const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS( - tenantId, - CONSOLE_MDMS_MODULENAME, - [ - { - name: "HierarchySchema", - filter: `[?(@.type=='${window?.Digit?.Utils?.campaign?.getModuleName()}')]`, - }, - ], - { select: (MdmsRes) => MdmsRes }, - { schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` } - ); + // const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS( + // tenantId, + // CONSOLE_MDMS_MODULENAME, + // [ + // { + // name: "HierarchySchema", + // filter: `[?(@.type=='${window?.Digit?.Utils?.campaign?.getModuleName()}')]`, + // }, + // ], + // { select: (MdmsRes) => MdmsRes }, + // { schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` } + // ); + + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: rawData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); + + const lowestHierarchy = useMemo(() => { - return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.[0]?.lowestHierarchy; - }, [HierarchySchema]); + return rawData?.matchingHierarchy?.lowestHierarchy; + }, [rawData]); const { data: DeliveryConfig } = Digit.Hooks.useCustomMDMS( tenantId, @@ -124,22 +134,7 @@ const SetupCampaign = ({ hierarchyType, hierarchyData }) => { } } } - - const { data: allHierarchy } = Digit.Hooks.useCustomAPIHook(reqAllHierarchy); - - const reqEmployeeDetails = { - url: `/${HRMS_CONTEXT_PATH}/employees/_search`, - params: { - tenantId: tenantId, - codes: Digit.UserService.getUser()?.info?.userName, - sortOrder: "ASC", - }, - body: {}, - - } - - const { data: employeeDetails } = Digit.Hooks.useCustomAPIHook(reqEmployeeDetails); - + const { isLoading: draftLoading, data: draftData, error: draftError, refetch: draftRefetch } = Digit.Hooks.campaign.useSearchCampaign({ tenantId: tenantId, filter: { @@ -243,8 +238,8 @@ const SetupCampaign = ({ hierarchyType, hierarchyData }) => { } }, [hierarchyDefinition?.BoundaryHierarchy?.[0], draftData]); useEffect(() => { - setCampaignConfig(CampaignConfig(totalFormData, dataParams, isSubmitting, summaryErrors, hierarchyData, allHierarchy, employeeDetails)); - }, [totalFormData, dataParams, isSubmitting, summaryErrors, hierarchyData, allHierarchy, employeeDetails]); + setCampaignConfig(CampaignConfig(totalFormData, dataParams, isSubmitting, summaryErrors, hierarchyData)); + }, [totalFormData, dataParams, isSubmitting, summaryErrors, hierarchyData]); useEffect(() => { setIsSubmitting(false); diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/UpdateCampaign.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/UpdateCampaign.js index b9a6dd7afd..38a956fbf1 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/UpdateCampaign.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/pages/employee/UpdateCampaign.js @@ -55,17 +55,29 @@ const UpdateCampaign = ({hierarchyData }) => { const [fetchBoundary, setFetchBoundary] = useState(() => Boolean(searchParams.get("fetchBoundary"))); const [fetchUpload, setFetchUpload] = useState(false); const [active, setActive] = useState(0); - const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS(tenantId, CONSOLE_MDMS_MODULENAME, [{ - name: "HierarchySchema", - "filter": `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]` - }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` }); + // const { data: HierarchySchema } = Digit.Hooks.useCustomMDMS(tenantId, CONSOLE_MDMS_MODULENAME, [{ + // name: "HierarchySchema", + // "filter": `[?(@.type=='${window.Digit.Utils.campaign.getModuleName()}')]` + // }],{select:(MdmsRes)=>MdmsRes},{ schemaCode: `${CONSOLE_MDMS_MODULENAME}.HierarchySchema` }); + // const [hierarchyType, setHierarchyType] = useState(); + // const lowestHierarchy = useMemo(() => { + // return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.find((item) => item.hierarchy === hierarchyType)?.lowestHierarchy; + // }, [HierarchySchema, hierarchyType]); + + const { + data: BOUNDARY_HIERARCHY_TYPE, + isLoading: hierarchyLoading, + rawData: rawData + } = Digit.Hooks.campaign.useEmployeeHierarchyType(tenantId, { + select: (data) => data?.hierarchy + }); const [hierarchyType, setHierarchyType] = useState(); const lowestHierarchy = useMemo(() => { - return HierarchySchema?.[CONSOLE_MDMS_MODULENAME]?.HierarchySchema?.find((item) => item.hierarchy === hierarchyType)?.lowestHierarchy; - }, [HierarchySchema, hierarchyType]); + return rawData?.matchingHierarchy?.lowestHierarchy; + }, [rawData]); + const { isLoading, data: projectType } = Digit.Hooks.useCustomMDMS(tenantId, "HCM-PROJECT-TYPES", [{ name: "projectTypes" }],{select:(MdmsRes)=>MdmsRes}, { schemaCode: `${"HCM-PROJECT-TYPES"}.projectTypes` }); - const reqCriteriaCampaign = { url: `/project-factory/v1/project-type/search`, body: { From 26b5c54161cd864ed39f55de48a4862db9d57337 Mon Sep 17 00:00:00 2001 From: nabeelmd-eGov Date: Wed, 5 Feb 2025 15:06:01 +0530 Subject: [PATCH 5/6] Update health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js --- .../packages/modules/campaign-manager/src/Module.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js index 2811c3776a..8594f295d8 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js @@ -1,4 +1,4 @@ -import { Body, Loader, TourProvider } from "@egovernments/digit-ui-react-components"; +import { Loader, TourProvider } from "@egovernments/digit-ui-react-components"; import React, { useState, useEffect } from "react"; import { useRouteMatch } from "react-router-dom"; import EmployeeApp from "./pages/employee"; From 6ae7c1d1338c3c238393441867752e92c18bf6ea Mon Sep 17 00:00:00 2001 From: Suryansh Date: Mon, 10 Feb 2025 11:16:41 +0530 Subject: [PATCH 6/6] review changes --- .../packages/modules/campaign-manager/src/Module.js | 1 - .../campaign-manager/src/hooks/useEmployeeHierarchyType.js | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js index 8594f295d8..89a3c012ed 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/Module.js @@ -71,7 +71,6 @@ const CampaignModule = ({ stateCode, userType, tenants }) => { const [filteredHierarchyType, setFilteredHierarchyType] = useState(null); const [employeeData, setEmployeeData] = useState(null); const [loading, setLoading] = useState(true); - const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; // Using the new custom hook const { diff --git a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js index 2c825c17ed..22931b0e0b 100644 --- a/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js +++ b/health/micro-ui/web/micro-ui-internals/packages/modules/campaign-manager/src/hooks/useEmployeeHierarchyType.js @@ -7,6 +7,8 @@ const useEmployeeHierarchyType = (tenantId, options = {}) => { const HRMS_CONTEXT_PATH = window?.globalConfigs?.getConfig("HRMS_CONTEXT_PATH") || "egov-hrms"; const CONSOLE_MDMS_MODULENAME = "HCM-ADMIN-CONSOLE"; + const MDMS_V2_CONTEXT_PATH = window?.globalConfigs?.getConfig("MDMS_V2_CONTEXT_PATH") || "egov-mdms-service"; + const fetchEmployeeAndHierarchy = useCallback(async () => { try { @@ -28,7 +30,7 @@ const useEmployeeHierarchyType = (tenantId, options = {}) => { // Fetch hierarchies using MDMS const mdmsResponse = await Digit.CustomService.getResponse( { - url: '/egov-mdms-service/v1/_search', + url: `/${MDMS_V2_CONTEXT_PATH}/v1/_search`, params: {}, body: { MdmsCriteria: {