Skip to content

Commit

Permalink
disease linking done in update and create flow
Browse files Browse the repository at this point in the history
  • Loading branch information
suryansh-egov committed Feb 4, 2025
1 parent 7d2b97a commit b9b80d9
Show file tree
Hide file tree
Showing 11 changed files with 313 additions and 205 deletions.
Original file line number Diff line number Diff line change
@@ -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";
Expand Down Expand Up @@ -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();
Expand All @@ -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
}
}}
/>
</TourProvider>
</ErrorBoundary>
Expand Down
Original file line number Diff line number Diff line change
@@ -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 }) => {
Expand All @@ -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);
Expand Down Expand Up @@ -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]);

Expand Down Expand Up @@ -282,6 +296,12 @@ const CampaignSelection = ({ onSelect, formData, formState, ...props }) => {
)}
</div>
)}
{!loading && showToast &&
<Toast
type="error"
label={t("BOUNDARY_USER_NOT ASSIGNED_TO_ANY_BOUNDARY_WITH_HIS_DEPARTMENT")}
/>
}
</>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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: {},
Expand All @@ -65,21 +54,16 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => {
const boundaryData = response?.TenantBoundary?.[0]?.boundary;
setBoundaryHierarchyData(boundaryData);
setLoading(false);


} catch (error) {
console.error("Error fetching boundary hierarchy:", error);
}
};

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(
Expand Down Expand Up @@ -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(() => {
Expand Down Expand Up @@ -181,26 +165,16 @@ const SelectingBoundariesDuplicate = ({ onSelect, formData, ...props }) => {
<Header>{t(`CAMPAIGN_SELECT_BOUNDARY`)}</Header>
<p className="description-type">{t(`CAMPAIGN_SELECT_BOUNDARIES_DESCRIPTION`)}</p>
<Wrapper
// hierarchyType={hierarchyType}
// lowest={lowestHierarchy}
// selectedData={selectedData}
// boundaryOptions={boundaryOptions}
// hierarchyData={props?.props?.hierarchyData}
// isMultiSelect={"true"}
// restrictSelection = {restrictSelection}
// onSelect={(value) => {
// 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);
}}
></Wrapper>
</Card>
<InfoCard
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect, Fragment, useRef, useMemo } from "react";
import React, { useState, useEffect, Fragment, useRef, useMemo, use } from "react";
import { useTranslation } from "react-i18next";
import { Card, CardHeader, Header, CardText } from "@egovernments/digit-ui-react-components";
import { LabelFieldPair, CardLabel } from "@egovernments/digit-ui-components";
Expand Down Expand Up @@ -129,7 +129,6 @@ const SelectingBoundaryComponent = ({
const [parentRoot, setParentRoot] = useState(selectedData?.find((item) => item?.isRoot === true)?.type || {});
const [restrictSelection, setRestrictSelection] = useState(restrictSelectionPage);


useEffect(() => {
setBoundaryOptions(boundaryOptionsPage);
}, [boundaryOptionsPage]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {};

Expand Down Expand Up @@ -48,6 +49,7 @@ const campaign = {
useFetchFromMicroplan,
useReadExcelData,
useUpdateAndUploadExcel,
useEmployeeHierarchyType
};

const Hooks = {
Expand Down
Loading

0 comments on commit b9b80d9

Please sign in to comment.