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: {