@argusoft/medplat-core 1.0.31 → 1.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AccessRights-DUgY6ewy.js → AccessRights-DBjTQA1-.js} +421 -424
- package/dist/AccessRights-DBjTQA1-.js.map +1 -0
- package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
- package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
- package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
- package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
- package/dist/AddMenuConfiguration.css +1 -1
- package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +45 -45
- package/dist/{BrandsPage-DMw2vT0u-BVhvhc6J.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
- package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js → CategoriesPage-BprQEYJw-CclreTv1.js} +43 -43
- package/dist/{CategoriesPage-D3ihx9Gi-CT58g0ry.js.map → CategoriesPage-BprQEYJw-CclreTv1.js.map} +1 -1
- package/dist/{ChangePasswordModalCore-lQ9GamH1.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
- package/dist/{ChangePasswordModalCore-lQ9GamH1.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
- package/dist/{ConditionConfig-BQBmBHaM.js → ConditionConfig-Bpm6OoV5.js} +3 -3
- package/dist/{ConditionConfig-BQBmBHaM.js.map → ConditionConfig-Bpm6OoV5.js.map} +1 -1
- package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +29 -29
- package/dist/{DashboardPage-asr2XDRu-uOOlX9Vq.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
- package/dist/EntityManagement-BGwJGl9k.js +62 -0
- package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
- package/dist/{EventConfigurations-CUPEN5BV.js → EventConfigurations-B-z7xHh_.js} +3 -3
- package/dist/{EventConfigurations-CUPEN5BV.js.map → EventConfigurations-B-z7xHh_.js.map} +1 -1
- package/dist/{EventsExceptionModal-BX-ArkBE.js → EventsExceptionModal-DafomIv6.js} +2 -2
- package/dist/{EventsExceptionModal-BX-ArkBE.js.map → EventsExceptionModal-DafomIv6.js.map} +1 -1
- package/dist/{EventsUi-D6O9S7BK.js → EventsUi-Dl_yckSA.js} +37 -32
- package/dist/EventsUi-Dl_yckSA.js.map +1 -0
- package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
- package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
- package/dist/{FeatureMenu-CHsBbw3W.js → FeatureMenu-Kc73yPHH.js} +2 -2
- package/dist/{FeatureMenu-CHsBbw3W.js.map → FeatureMenu-Kc73yPHH.js.map} +1 -1
- package/dist/{FhirServerList-iXBPkRVF.js → FhirServerList-CrIHMAxz.js} +19 -19
- package/dist/{FhirServerList-iXBPkRVF.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
- package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
- package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
- package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
- package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
- package/dist/{ImmunizationConfigurationBase-aUtx0JEe.js → ImmunizationConfigurationBase-lKsJZMak.js} +1342 -1301
- package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
- package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
- package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
- package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
- package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
- package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
- package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
- package/dist/{ManageEventConfiguration-DqW3krT6.js → ManageEventConfiguration-DqPbn3Oi.js} +5 -5
- package/dist/{ManageEventConfiguration-DqW3krT6.js.map → ManageEventConfiguration-DqPbn3Oi.js.map} +1 -1
- package/dist/ManageRole-CyfpySt9.js +981 -0
- package/dist/ManageRole-CyfpySt9.js.map +1 -0
- package/dist/{ManageUser-DZltBina.js → ManageUser-Dm0l833u.js} +172 -172
- package/dist/{ManageUser-DZltBina.js.map → ManageUser-Dm0l833u.js.map} +1 -1
- package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +37 -37
- package/dist/{MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
- package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
- package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
- package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
- package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js → MobileTypeEventConfigModal-DodU3beR.js} +3 -3
- package/dist/{MobileTypeEventConfigModal-CMcj7Ozp.js.map → MobileTypeEventConfigModal-DodU3beR.js.map} +1 -1
- package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
- package/dist/NewServerManagement-BdayO78D.js.map +1 -0
- package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
- package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
- package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +56 -56
- package/dist/{PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
- package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +38 -38
- package/dist/{PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
- package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
- package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
- package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
- package/dist/{PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
- package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
- package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
- package/dist/{PickupsPage-D7zyioJB-bHKnARYw.js → PickupsPage-BWblMlic-CWkgeBw0.js} +122 -122
- package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
- package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
- package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
- package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
- package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
- package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +29 -29
- package/dist/{ProductsPage-DvNHIeZt-BoOOJJtk.js.map → ProductsPage-BI22nPb4-CQBjnc-n.js.map} +1 -1
- package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
- package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
- package/dist/{PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +446 -436
- package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
- package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +55 -55
- package/dist/{PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
- package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +61 -61
- package/dist/{PurchasesPage-DgL5T6BY-DePUuE9l.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
- package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
- package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
- package/dist/Roles-BoNGJhtR.js +19 -0
- package/dist/Roles-BoNGJhtR.js.map +1 -0
- package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +33 -33
- package/dist/{SaleCreatePage-CZnIOydv-DKBw-qp7.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
- package/dist/{SalesPage-DPIRrC_O-M8rqnK7z.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +34 -34
- package/dist/SalesPage-eF9Yr42z-BQ9FlXC3.js.map +1 -0
- package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
- package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
- package/dist/{StorageUnitsPage-BDRkdCjW-UF64rf7q.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +213 -190
- package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
- package/dist/{SubMenu-BdMTYtC1.js → SubMenu-OO2zhKiu.js} +2 -2
- package/dist/{SubMenu-BdMTYtC1.js.map → SubMenu-OO2zhKiu.js.map} +1 -1
- package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
- package/dist/TableDetails-Cc40dEUs.js.map +1 -0
- package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
- package/dist/TableList-B5tX4wII.js.map +1 -0
- package/dist/{TransactionsPage-CqWTMNU8-Df6eGFDW.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +185 -170
- package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
- package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
- package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
- package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
- package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
- package/dist/{TypeConfiguration-JbRCN6GR.js → TypeConfiguration-EaFiOzRE.js} +3 -3
- package/dist/{TypeConfiguration-JbRCN6GR.js.map → TypeConfiguration-EaFiOzRE.js.map} +1 -1
- package/dist/UserList-Cf5B-o_1.js +1904 -0
- package/dist/UserList-Cf5B-o_1.js.map +1 -0
- package/dist/Users-MC7txo1V.js +43 -0
- package/dist/{Users-CsJ08Kjm.js.map → Users-MC7txo1V.js.map} +1 -1
- package/dist/VaccineEducation-T_UE57Ef.js +231 -0
- package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
- package/dist/VaccineEducation.css +1 -0
- package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
- package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
- package/dist/VaccineEducationConfigurator.css +4 -0
- package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
- package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
- package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
- package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
- package/dist/{constants-DpXnLsAB-D6lN5cjK.js → constants-BTpJFQe_-CYPZIqQF.js} +160 -61
- package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
- package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
- package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
- package/dist/index-mfoqII2U.js +524 -0
- package/dist/index-mfoqII2U.js.map +1 -0
- package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
- package/dist/index-o8Pyt1Bt.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/{index.lib-ETRQOzvE.js → index.lib-BySa9-Z-.js} +302 -260
- package/dist/index.lib-BySa9-Z-.js.map +1 -0
- package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
- package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
- package/package.json +5 -1
- package/dist/AccessRights-DUgY6ewy.js.map +0 -1
- package/dist/AddMenuConfiguration-c6ZKiN0i.js +0 -8898
- package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +0 -1
- package/dist/EntityManagement-CPQL6qBj.js +0 -50
- package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
- package/dist/EventsUi-D6O9S7BK.js.map +0 -1
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js +0 -79
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js.map +0 -1
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js +0 -665
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.js.map +0 -1
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
- package/dist/ManageRole-CNZBRKGU.js +0 -776
- package/dist/ManageRole-CNZBRKGU.js.map +0 -1
- package/dist/MobileAnalytics-BLOionG_.js +0 -17301
- package/dist/MobileAnalytics-BLOionG_.js.map +0 -1
- package/dist/MobileMenuManagement-68Wijb0X.js +0 -220
- package/dist/MobileMenuManagement-68Wijb0X.js.map +0 -1
- package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js +0 -1812
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +0 -1
- package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +0 -783
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +0 -1
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +0 -1
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +0 -599
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +0 -1
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +0 -1305
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +0 -1
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +0 -675
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +0 -1
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +0 -1
- package/dist/Roles-BIyiic67.js +0 -14
- package/dist/Roles-BIyiic67.js.map +0 -1
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +0 -1
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +0 -676
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js.map +0 -1
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +0 -1
- package/dist/TableDetails-BtafRxXb.js.map +0 -1
- package/dist/TableList-Dpo6dO7S.js.map +0 -1
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +0 -1
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +0 -315
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +0 -1
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +0 -476
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +0 -1
- package/dist/UserList-L41Xw0Q6.js +0 -1129
- package/dist/UserList-L41Xw0Q6.js.map +0 -1
- package/dist/Users-CsJ08Kjm.js +0 -40
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +0 -321
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +0 -1
- package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +0 -1
- package/dist/dashboardLayoutUtils-CJivzaU1.js +0 -408
- package/dist/dashboardLayoutUtils-CJivzaU1.js.map +0 -1
- package/dist/index-D9YNFPn9.js.map +0 -1
- package/dist/index.lib-ETRQOzvE.js.map +0 -1
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +0 -36
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserList-Cf5B-o_1.js","sources":["../src/views/Users/UserFilterForm.jsx","../src/views/Users/CreateAbhaModal.jsx","../src/views/Users/UserList.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React, { lazy, Suspense, useEffect, useState } from \"react\";\nconst LocationSelectionComponent = lazy(\n () =>\n import(\"@/views/feature-components/LocationDirective/LocationDirectiveV2\"),\n);\nimport { Button, InputLabel, Switch } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { getRoles } from \"../../services/Users\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useDispatch } from \"react-redux\";\nimport { setUserDetails } from \"@/store/reducers/AuthenticationReducer\";\nimport { useLocation } from \"react-router\";\nimport {\n UserFilterFormSkeleton,\n UserFilterFormSwitchButtonSkeleton,\n} from \"./Skeletons/UserListSkeleton\";\nimport implementationConfig from \"@/common/config/implementationConfig\";\n\nconst UserFilterForm = ({\n handleOverlayState,\n setIsLoading,\n isLoading,\n setLocationId,\n setRoleDetails,\n roleDetails,\n status,\n setStatus,\n selectedLocation,\n setSelectedLocation,\n filterRequired,\n setUserFilterPreference,\n user,\n setFilterRequired,\n locationIdRef,\n locations,\n setLocations,\n setAdminRoleIdsStats,\n}) => {\n const [roles, setRoles] = useState([]);\n\n const trackEvent = useTrackEvent();\n const { translate } = useTranslateProvider();\n const methods = useForm({ mode: \"onChange\" });\n const dispatch = useDispatch();\n const location = useLocation();\n const {\n control,\n handleSubmit,\n formState: { errors },\n getValues,\n setValue,\n clearErrors,\n } = methods;\n\n const loadInitialData = async () => {\n try {\n const { data } = await getRoles({}, { showLoader: false });\n setRoles(data);\n if (roleDetails?.id) {\n setValue(\"roleId\", roleDetails.id);\n }\n if (status) {\n setValue(\"status\", status);\n }\n if (\n Object.keys(user?.userFilterPreference || {})?.length > 0 &&\n location?.state?.fromManageUser === true\n ) {\n setValue(\"roleId\", user?.userFilterPreference?.roleid);\n setValue(\"status\", user?.userFilterPreference?.status);\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n const onSubmit = async () => {\n try {\n setIsLoading((cur) => !cur);\n setAdminRoleIdsStats([]);\n trackEvent(\"button_click\", {\n button_name: `User Filter-filter-button`,\n button_type: \"filter\",\n button_id: \"userfilterform-search-button\",\n });\n\n const status = getValues(\"status\") || \"BOTH\";\n if (status) {\n setStatus(status);\n }\n const searchObject = {\n limit: 50,\n offset: 0,\n order: \"asc\",\n orderby: \"userName\",\n status,\n };\n\n const selectedLocationId =\n selectedLocation?.finalSelected?.optionSelected?.id;\n if (selectedLocationId) {\n searchObject[\"locationId\"] = selectedLocationId;\n setLocationId(selectedLocationId);\n } else {\n setLocationId(null);\n }\n\n const selectedRole = roles.find(\n (item) => item.id === getValues(\"roleId\"),\n );\n if (selectedRole?.id) {\n searchObject[\"roleid\"] = selectedRole.id;\n setRoleDetails(selectedRole);\n } else {\n setRoleDetails(null);\n }\n setUserFilterPreference(searchObject);\n dispatch(\n setUserDetails({\n ...user,\n userFilterPreference: {\n ...searchObject,\n filterRequired,\n selectedLocation,\n },\n }),\n );\n trackEvent(\"filter\", {\n filter_type: [\"location\", \"role\", \"status\"],\n ...searchObject,\n });\n setIsLoading((cur) => !cur);\n handleOverlayState();\n } catch (error) {\n showToast({ message: `error : ${error?.message}`, type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n return (\n <FormProvider {...methods}>\n <Grid\n className=\"m-[1rem]\"\n component=\"form\"\n onSubmit={(event) => {\n if (Object.keys(errors).length > 0) {\n event.preventDefault(); // Prevent form submission\n return;\n }\n handleSubmit(onSubmit)(event);\n }}\n data-testid=\"userfilterform-container-grid\"\n noValidate\n >\n <UserFilterFormSwitchButtonSkeleton isLoading={isLoading}>\n <Grid className=\"flex items-center\">\n <InputLabel>{translate(\"Location Filter Required\")} :</InputLabel>\n <Switch\n defaultChecked\n checked={filterRequired}\n onChange={(e) => {\n setFilterRequired(e.target.checked);\n if (!e.target.checked) {\n locationIdRef.current = null;\n clearErrors(\"level1\");\n }\n }}\n />\n </Grid>\n </UserFilterFormSwitchButtonSkeleton>\n\n {filterRequired === true && (\n <Suspense>\n <LocationSelectionComponent\n childForm={true}\n selectedLocation={selectedLocation}\n setSelectedLocation={setSelectedLocation}\n templateType=\"inline\"\n disabled={isLoading}\n locations={locations}\n setLocations={setLocations}\n fetchAccordingToUserAoi={implementationConfig.user.filterLocationsByUserAoi}\n // Add any other props needed for your use case\n />\n </Suspense>\n )}\n <UserFilterFormSkeleton isLoading={isLoading}>\n <Grid>\n <InputLabel data-testid=\"userfilterform-role-label\">\n {translate(\"Role\")}\n </InputLabel>\n\n <CustomDropdown\n control={control}\n name=\"roleId\"\n options={roles}\n displayName=\"name\"\n optionValue=\"id\"\n errors={errors}\n dataTestId=\"userfilterform-role-dropdown\"\n className=\"mb-[0.3125rem]\"\n />\n\n <InputLabel\n className=\"mt-2\"\n data-testid=\"userfilterform-status-label\"\n >\n {translate(\"Status\")}\n </InputLabel>\n\n <CustomDropdown\n control={control}\n name=\"status\"\n defaultValue=\"BOTH\"\n options={[\"ACTIVE\", \"INACTIVE\", \"BOTH\"]}\n errors={errors}\n dataTestId=\"userfilterform-status-dropdown\"\n />\n <Grid\n container\n spacing={1}\n marginTop={1}\n justifyContent=\"flex-end\"\n data-testid=\"userfilterform-buttons-container\"\n >\n <Grid item data-testid=\"userfilterform-closebutton-item\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => handleOverlayState()}\n data-testid=\"userfilterform-close-button\"\n >\n {translate(\"Close\")}\n </Button>\n </Grid>\n\n <Grid item data-testid=\"userfilterform-searchbutton-item\">\n <Button\n variant=\"contained\"\n type=\"submit\"\n data-testid=\"userfilterform-search-button\"\n >\n {translate(\"Search\")}\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </UserFilterFormSkeleton>\n </Grid>\n </FormProvider>\n );\n};\n\nexport default UserFilterForm;\n\nUserFilterForm.propTypes = {\n handleOverlayState: PropTypes.any,\n setUsersData: PropTypes.any,\n setIsLoading: PropTypes.any,\n isLoading: PropTypes.any,\n setLocationId: PropTypes.func,\n setRoleDetails: PropTypes.func,\n roleDetails: PropTypes.any,\n status: PropTypes.any,\n setStatus: PropTypes.any,\n selectedLocation: PropTypes.any,\n setSelectedLocation: PropTypes.any,\n filterRequired: PropTypes.any,\n setFilterRequired: PropTypes.any,\n setUserFilterPreference: PropTypes.any,\n user: PropTypes.any,\n resetLocationDirective: PropTypes.any,\n locationIdRef: PropTypes.any,\n setSelectedLocationId: PropTypes.any,\n locations: PropTypes.any,\n setLocations: PropTypes.any,\n setAdminRoleIdsStats: PropTypes.any,\n};\n","import React, { useState, useEffect, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Modal,\n Box,\n Typography,\n Button,\n TextField,\n CircularProgress,\n Alert,\n Checkbox,\n FormControlLabel,\n IconButton,\n Tooltip,\n Chip,\n Paper,\n InputAdornment,\n} from '@mui/material';\nimport CloseRoundedIcon from '@mui/icons-material/CloseRounded';\nimport CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded';\nimport ContentCopyRoundedIcon from '@mui/icons-material/ContentCopyRounded';\nimport BadgeRoundedIcon from '@mui/icons-material/BadgeRounded';\nimport VerifiedUserRoundedIcon from '@mui/icons-material/VerifiedUserRounded';\nimport PhoneIphoneRoundedIcon from '@mui/icons-material/PhoneIphoneRounded';\nimport FingerprintRoundedIcon from '@mui/icons-material/FingerprintRounded';\nimport ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded';\nimport LocationOnRoundedIcon from '@mui/icons-material/LocationOnRounded';\nimport ShieldRoundedIcon from '@mui/icons-material/ShieldRounded';\nimport QrCode2RoundedIcon from '@mui/icons-material/QrCode2Rounded';\nimport RefreshRoundedIcon from '@mui/icons-material/RefreshRounded';\nimport CheckRoundedIcon from '@mui/icons-material/CheckRounded';\nimport KeyRoundedIcon from '@mui/icons-material/KeyRounded';\nimport { useTranslateProvider } from '@/common/languageTranslator/TranslationContext';\nimport { showToast } from '@/common/toaster/toaster.jsx';\nimport { generateUserAadhaarOtp, createUserAbhaUsingAadhaarOtp, getUserHealthIdDetails } from '../../services/Users.js';\n\n/**\n * Format Aadhaar number with spaces (XXXX XXXX XXXX)\n */\nconst formatAadhaarNumber = (value) => {\n const digits = value.replace(/\\D/g, '').slice(0, 12);\n const parts = [];\n for (let i = 0; i < digits.length; i += 4) {\n parts.push(digits.slice(i, i + 4));\n }\n return parts.join(' ');\n};\n\n/**\n * Validate 12-digit Aadhaar number\n * Must be 12 digits, cannot start with 0 or 1\n */\nconst isValidAadhaar = (aadhaar) => {\n const clean = aadhaar.replace(/\\s+/g, '');\n return /^[2-9]{1}[0-9]{11}$/.test(clean);\n};\n\nexport default function CreateAbhaModal({\n open,\n onClose,\n user,\n mode = 'CREATE', // \"CREATE\" or \"VIEW\"\n onSuccess,\n}) {\n const { translate } = useTranslateProvider();\n\n // Mode & Step state: 1 = Aadhaar Input, 2 = OTP & Mobile, 3 = Success Profile Card\n const [step, setStep] = useState(1);\n const [currentMode, setCurrentMode] = useState(mode);\n\n // Form states\n const [aadhaarNumber, setAadhaarNumber] = useState('');\n const [consentAccepted, setConsentAccepted] = useState(false);\n const [otp, setOtp] = useState('');\n const [mobileNumber, setMobileNumber] = useState('');\n\n // API transaction & response states\n const [txnId, setTxnId] = useState('');\n const [txnMessage, setTxnMessage] = useState('');\n const [createdProfile, setCreatedProfile] = useState(null);\n const [existingDetail, setExistingDetail] = useState(null);\n\n // Loading & Error states\n const [loading, setLoading] = useState(false);\n const [viewLoading, setViewLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n // OTP Timer states\n const [timer, setTimer] = useState(0);\n const [canResend, setCanResend] = useState(false);\n const timerRef = useRef(null);\n\n // Target User ID resolution\n const targetUserId = useMemo(() => {\n return user?.userId || user?.id;\n }, [user]);\n\n // Target User display name\n const userDisplayName = useMemo(() => {\n if (!user) return '';\n return user.fullName || `${user.firstName || ''} ${user.lastName || ''}`.trim() || user.userName || '';\n }, [user]);\n\n // Fetch existing ABHA details for VIEW mode\n const fetchExistingDetails = async (userId) => {\n const idToUse = userId || targetUserId;\n if (!idToUse) return;\n setViewLoading(true);\n setErrorMessage('');\n try {\n const response = await getUserHealthIdDetails(idToUse);\n if (response && response.data) {\n setExistingDetail(response.data);\n } else {\n setExistingDetail(null);\n }\n } catch (err) {\n console.warn('Could not fetch details from API, using row data:', err);\n setExistingDetail(null);\n } finally {\n setViewLoading(false);\n }\n };\n\n // Sync mode and prefill on open\n useEffect(() => {\n if (open && user) {\n const hasExistingAbha = !!(user.healthIdNumber || user.healthId);\n const effectiveMode = mode === 'VIEW' || hasExistingAbha ? 'VIEW' : 'CREATE';\n setCurrentMode(effectiveMode);\n setStep(1);\n setAadhaarNumber('');\n setConsentAccepted(false);\n setOtp('');\n setMobileNumber(user.contactNumber || '');\n setTxnId('');\n setTxnMessage('');\n setCreatedProfile(null);\n setErrorMessage('');\n setTimer(0);\n setCanResend(false);\n\n if (effectiveMode === 'VIEW') {\n fetchExistingDetails(user.userId || user.id);\n }\n } else {\n if (timerRef.current) clearInterval(timerRef.current);\n }\n }, [open, user, mode]);\n\n // Timer countdown\n useEffect(() => {\n if (timer > 0) {\n timerRef.current = setTimeout(() => setTimer((t) => t - 1), 1000);\n } else if (timer === 0 && step === 2) {\n setCanResend(true);\n }\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, [timer, step]);\n\n // Step 1 -> Step 2: Generate Aadhaar OTP\n const handleGenerateOtp = async () => {\n const rawAadhaar = aadhaarNumber.replace(/\\s+/g, '');\n if (!isValidAadhaar(rawAadhaar)) {\n setErrorMessage(translate('Please enter a valid 12-digit Aadhaar number.'));\n return;\n }\n if (!consentAccepted) {\n setErrorMessage(translate('Please accept the voluntary Aadhaar consent to proceed.'));\n return;\n }\n\n setLoading(true);\n setErrorMessage('');\n try {\n const payload = {\n userId: targetUserId,\n aadhaarNumber: rawAadhaar,\n };\n const response = await generateUserAadhaarOtp(payload);\n if (response && response.data) {\n const { txnId: newTxnId, message } = response.data;\n setTxnId(newTxnId);\n setTxnMessage(message || translate('OTP sent to Aadhaar registered mobile number.'));\n setStep(2);\n setTimer(60);\n setCanResend(false);\n setOtp('');\n showToast({\n message: message || translate('OTP sent successfully to registered mobile.'),\n type: 'success',\n });\n } else {\n throw new Error(translate('Failed to generate Aadhaar OTP.'));\n }\n } catch (error) {\n const msg =\n error?.response?.data?.message || error?.message || translate('Failed to generate OTP. Please try again.');\n setErrorMessage(msg);\n showToast({ message: msg, type: 'error' });\n } finally {\n setLoading(false);\n }\n };\n\n // Resend OTP\n const handleResendOtp = async () => {\n if (!canResend || loading) return;\n const rawAadhaar = aadhaarNumber.replace(/\\s+/g, '');\n setLoading(true);\n setErrorMessage('');\n try {\n const payload = {\n userId: targetUserId,\n aadhaarNumber: rawAadhaar,\n };\n const response = await generateUserAadhaarOtp(payload);\n if (response && response.data) {\n const { txnId: newTxnId, message } = response.data;\n setTxnId(newTxnId);\n setTxnMessage(message || translate('OTP resent successfully.'));\n setTimer(60);\n setCanResend(false);\n setOtp('');\n showToast({\n message: message || translate('OTP resent to registered mobile number.'),\n type: 'success',\n });\n }\n } catch (error) {\n const msg = error?.response?.data?.message || error?.message || translate('Failed to resend OTP.');\n setErrorMessage(msg);\n showToast({ message: msg, type: 'error' });\n } finally {\n setLoading(false);\n }\n };\n\n // Step 2 -> Step 3: Verify OTP and Create ABHA\n const handleVerifyOtpAndCreate = async () => {\n const rawAadhaar = aadhaarNumber.replace(/\\s+/g, '');\n const cleanOtp = otp.trim();\n const cleanMobile = mobileNumber.trim();\n\n if (!cleanOtp || cleanOtp.length !== 6) {\n setErrorMessage(translate('Please enter a valid 6-digit OTP.'));\n return;\n }\n if (!cleanMobile || cleanMobile.length !== 10) {\n setErrorMessage(translate('Please enter a valid 10-digit mobile number.'));\n return;\n }\n\n setLoading(true);\n setErrorMessage('');\n try {\n const payload = {\n userId: targetUserId,\n txnId: txnId,\n otp: cleanOtp,\n aadhaarNumber: rawAadhaar,\n mobile: cleanMobile,\n };\n\n const response = await createUserAbhaUsingAadhaarOtp(payload);\n if (response && response.data) {\n const profile = response.data.healthIdAccountProfileResponse || response.data;\n setCreatedProfile(profile);\n setStep(3);\n\n // Notify parent to update user table row in real time\n if (onSuccess && typeof onSuccess === 'function') {\n onSuccess({\n userId: targetUserId,\n healthId: profile.healthId,\n healthIdNumber: profile.healthIdNumber,\n profile,\n });\n }\n\n showToast({\n message: translate('ABHA Number created successfully!'),\n type: 'success',\n });\n } else {\n throw new Error(translate('Failed to create ABHA Number.'));\n }\n } catch (error) {\n const msg =\n error?.response?.data?.message ||\n error?.message ||\n translate('Verification failed. Please check OTP and try again.');\n setErrorMessage(msg);\n showToast({ message: msg, type: 'error' });\n } finally {\n setLoading(false);\n }\n };\n\n // Copy helper\n const handleCopy = (text, label) => {\n if (!text) return;\n navigator.clipboard.writeText(text);\n showToast({\n message: `${label} ${translate('copied to clipboard!')}`,\n type: 'success',\n });\n };\n\n const activeCardData = createdProfile || existingDetail || user;\n const isAadhaarComplete = isValidAadhaar(aadhaarNumber);\n\n return (\n <Modal\n open={open}\n onClose={loading ? undefined : onClose}\n sx={{\n '& .MuiBackdrop-root': {\n backgroundColor: 'rgba(15, 23, 42, 0.65)',\n backdropFilter: 'blur(6px)',\n transition: 'all 0.3s ease-in-out',\n },\n }}\n data-testid=\"create-abha-modal\"\n >\n <Box\n className=\"fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-5 outline-none overflow-y-auto\"\n onClick={(e) => {\n if (e.target === e.currentTarget && !loading) onClose();\n }}\n >\n <Paper\n elevation={24}\n className=\"relative w-full max-w-xl bg-white rounded-3xl shadow-2xl overflow-hidden my-auto border border-slate-100 flex flex-col\"\n sx={{ maxHeight: '92vh' }}\n >\n {/* Modal Header */}\n <div className=\"bg-gradient-to-r from-blue-900 via-indigo-900 to-blue-800 text-white px-6 py-4 flex items-center justify-between shadow-md shrink-0\">\n <div className=\"flex items-center gap-3.5\">\n <div className=\"w-11 h-11 rounded-2xl bg-white/15 backdrop-blur-md flex items-center justify-center text-white border border-white/20 shadow-inner\">\n <BadgeRoundedIcon sx={{ fontSize: 26 }} />\n </div>\n <div>\n <div className=\"flex items-center gap-2\">\n <Typography className=\"text-base font-bold tracking-wide leading-tight\">\n {currentMode === 'VIEW'\n ? translate('Ayushman Bharat Health Account (ABHA)')\n : translate('Create ABHA Number')}\n </Typography>\n <span className=\"text-[10px] font-extrabold uppercase px-2 py-0.5 rounded-full bg-blue-500/30 border border-blue-300/30 text-blue-200\">\n ABDM\n </span>\n </div>\n <Typography className=\"text-xs text-blue-200/90 font-medium mt-0.5\">\n {userDisplayName ? `${userDisplayName}` : ''}\n </Typography>\n </div>\n </div>\n <IconButton\n size=\"small\"\n onClick={loading ? undefined : onClose}\n disabled={loading}\n className=\"text-white/80 hover:text-white hover:bg-white/10 rounded-xl transition-colors\"\n aria-label=\"close\"\n >\n <CloseRoundedIcon />\n </IconButton>\n </div>\n\n {/* Step Indicator (Only for CREATE mode) */}\n {currentMode === 'CREATE' && (\n <div className=\"bg-slate-50/80 px-6 py-3 border-b border-slate-200/80 shrink-0\">\n <div className=\"flex items-center justify-between max-w-md mx-auto\">\n {/* Step 1 */}\n <div className=\"flex items-center gap-2\">\n <div\n className={`w-7 h-7 rounded-full flex items-center justify-center font-bold text-xs transition-all duration-300 shadow-xs ${\n step > 1\n ? 'bg-emerald-500 text-white'\n : step === 1\n ? 'bg-blue-600 text-white ring-4 ring-blue-100'\n : 'bg-slate-200 text-slate-500'\n }`}\n >\n {step > 1 ? <CheckRoundedIcon sx={{ fontSize: 16 }} /> : '1'}\n </div>\n <span className={`text-xs font-semibold ${step >= 1 ? 'text-slate-800' : 'text-slate-400'}`}>\n {translate('Aadhaar')}\n </span>\n </div>\n\n {/* Divider Line 1 */}\n <div\n className={`h-0.5 flex-1 mx-3 rounded-full transition-colors duration-300 ${\n step > 1 ? 'bg-emerald-500' : 'bg-slate-200'\n }`}\n />\n\n {/* Step 2 */}\n <div className=\"flex items-center gap-2\">\n <div\n className={`w-7 h-7 rounded-full flex items-center justify-center font-bold text-xs transition-all duration-300 shadow-xs ${\n step > 2\n ? 'bg-emerald-500 text-white'\n : step === 2\n ? 'bg-blue-600 text-white ring-4 ring-blue-100'\n : 'bg-slate-200 text-slate-500'\n }`}\n >\n {step > 2 ? <CheckRoundedIcon sx={{ fontSize: 16 }} /> : '2'}\n </div>\n <span className={`text-xs font-semibold ${step >= 2 ? 'text-slate-800' : 'text-slate-400'}`}>\n {translate('OTP Verify')}\n </span>\n </div>\n\n {/* Divider Line 2 */}\n <div\n className={`h-0.5 flex-1 mx-3 rounded-full transition-colors duration-300 ${\n step > 2 ? 'bg-emerald-500' : 'bg-slate-200'\n }`}\n />\n\n {/* Step 3 */}\n <div className=\"flex items-center gap-2\">\n <div\n className={`w-7 h-7 rounded-full flex items-center justify-center font-bold text-xs transition-all duration-300 shadow-xs ${\n step === 3 ? 'bg-emerald-500 text-white ring-4 ring-emerald-100' : 'bg-slate-200 text-slate-500'\n }`}\n >\n <CheckCircleRoundedIcon sx={{ fontSize: 16 }} />\n </div>\n <span\n className={`text-xs font-semibold ${step === 3 ? 'text-emerald-700 font-bold' : 'text-slate-400'}`}\n >\n {translate('ABHA Card')}\n </span>\n </div>\n </div>\n </div>\n )}\n\n {/* Modal Body */}\n <div className=\"p-6 overflow-y-auto flex-1 space-y-5\">\n {errorMessage && (\n <Alert\n severity=\"error\"\n onClose={() => setErrorMessage('')}\n className=\"rounded-2xl border border-red-200 shadow-xs font-medium text-xs\"\n >\n {errorMessage}\n </Alert>\n )}\n\n {/* ============================================================ */}\n {/* VIEW MODE: User Already Has ABHA */}\n {/* ============================================================ */}\n {currentMode === 'VIEW' && (\n <div>\n {viewLoading ? (\n <div className=\"flex flex-col items-center justify-center py-16 gap-3\">\n <CircularProgress size={38} thickness={4} color=\"primary\" />\n <Typography className=\"text-sm font-medium text-slate-500 animate-pulse\">\n {translate('Fetching ABHA account profile...')}\n </Typography>\n </div>\n ) : (\n <div className=\"space-y-4\">\n {/* Status Ribbon */}\n <div className=\"flex items-center justify-between p-3.5 bg-emerald-50/80 border border-emerald-200/80 rounded-2xl text-emerald-900 shadow-2xs\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"w-8 h-8 rounded-full bg-emerald-500 text-white flex items-center justify-center shadow-xs\">\n <CheckRoundedIcon sx={{ fontSize: 18 }} />\n </div>\n <div>\n <Typography className=\"text-xs font-bold\">\n {translate('ABHA Number Linked & Active')}\n </Typography>\n <Typography className=\"text-[11px] text-emerald-700\">\n {translate('This user already has an authentic Ayushman Bharat Health Account.')}\n </Typography>\n </div>\n </div>\n <Chip\n icon={<VerifiedUserRoundedIcon sx={{ fontSize: 15 }} />}\n label={translate('Verified')}\n color=\"success\"\n size=\"small\"\n className=\"font-bold text-xs\"\n />\n </div>\n\n {/* Official Styled Digital ABHA Card */}\n <div className=\"relative border-2 border-indigo-200/80 rounded-3xl overflow-hidden bg-gradient-to-br from-indigo-50/40 via-white to-blue-50/30 p-5 shadow-lg\">\n {/* Card Header */}\n <div className=\"flex items-start justify-between pb-3 border-b border-indigo-100\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"w-9 h-9 rounded-xl bg-indigo-600 text-white flex items-center justify-center font-bold text-xs shadow-md\">\n <BadgeRoundedIcon sx={{ fontSize: 20 }} />\n </div>\n <div>\n <Typography className=\"text-[10px] font-extrabold text-indigo-900 tracking-wider uppercase\">\n {translate('National Health Authority')}\n </Typography>\n <Typography className=\"text-xs font-semibold text-indigo-700\">\n {translate('Ayushman Bharat Digital Mission')}\n </Typography>\n </div>\n </div>\n </div>\n\n {/* Card Body */}\n <div className=\"mt-4 space-y-3\">\n <div className=\"flex items-center justify-between pb-1\">\n <div>\n <Typography className=\"text-lg font-extrabold text-slate-800 leading-tight\">\n {activeCardData?.name || userDisplayName}\n </Typography>\n <Typography className=\"text-xs font-medium text-slate-500 mt-0.5\">\n {activeCardData?.gender || user?.gender || 'N/A'}\n {activeCardData?.yearOfBirth &&\n ` • DOB: ${activeCardData?.dayOfBirth || '01'}/${\n activeCardData?.monthOfBirth || '01'\n }/${activeCardData?.yearOfBirth}`}\n </Typography>\n </div>\n <div className=\"text-right\">\n <span className=\"text-[10px] font-bold text-slate-400 block uppercase tracking-wider\">\n {translate('User ID')}\n </span>\n <span className=\"font-mono text-xs font-bold text-slate-700\">{targetUserId}</span>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2.5 text-xs\">\n {/* ABHA Number */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-indigo-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('ABHA Number')}\n </Typography>\n <div className=\"flex items-center justify-between mt-1\">\n <Typography className=\"font-mono font-extrabold text-base text-indigo-900 tracking-wide\">\n {activeCardData?.healthIdNumber || user?.healthIdNumber || 'N/A'}\n </Typography>\n {(activeCardData?.healthIdNumber || user?.healthIdNumber) && (\n <Tooltip title={translate('Copy')}>\n <IconButton\n size=\"small\"\n onClick={() =>\n handleCopy(\n activeCardData?.healthIdNumber || user?.healthIdNumber,\n translate('ABHA Number')\n )\n }\n className=\"p-1 hover:bg-indigo-50 text-indigo-600\"\n >\n <ContentCopyRoundedIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n </div>\n\n {/* ABHA Address */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-indigo-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('ABHA Address (Health ID)')}\n </Typography>\n <div className=\"flex items-center justify-between mt-1\">\n <Typography className=\"font-mono font-bold text-sm text-indigo-900 truncate\">\n {activeCardData?.healthId || user?.healthId || 'N/A'}\n </Typography>\n {(activeCardData?.healthId || user?.healthId) && (\n <Tooltip title={translate('Copy')}>\n <IconButton\n size=\"small\"\n onClick={() =>\n handleCopy(activeCardData?.healthId || user?.healthId, translate('ABHA Address'))\n }\n className=\"p-1 hover:bg-indigo-50 text-indigo-600\"\n >\n <ContentCopyRoundedIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n </div>\n\n {/* Mobile */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-indigo-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('Registered Mobile Number')}\n </Typography>\n <Typography className=\"font-semibold text-xs text-slate-800 mt-1\">\n {activeCardData?.mobile || user?.contactNumber || 'N/A'}\n </Typography>\n </div>\n\n {/* Digital ID Status Badge */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-indigo-100 shadow-2xs flex items-center justify-between\">\n <div>\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('Digital ID')}\n </Typography>\n <Typography className=\"font-bold text-xs text-emerald-600 mt-1 flex items-center gap-1\">\n <ShieldRoundedIcon sx={{ fontSize: 14 }} />\n {translate('Authenticated')}\n </Typography>\n </div>\n <QrCode2RoundedIcon sx={{ fontSize: 24 }} className=\"text-slate-500\" />\n </div>\n </div>\n\n {/* Address */}\n {(activeCardData?.address || activeCardData?.districtName || activeCardData?.stateName) && (\n <div className=\"p-3 bg-white/95 rounded-xl border border-indigo-100 shadow-2xs flex items-start gap-2 text-xs text-slate-600\">\n <LocationOnRoundedIcon sx={{ fontSize: 16 }} className=\"text-indigo-500 shrink-0 mt-0.5\" />\n <span className=\"font-medium leading-relaxed\">\n {activeCardData?.address ||\n [activeCardData?.districtName, activeCardData?.stateName, activeCardData?.pincode]\n .filter(Boolean)\n .join(', ')}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* ============================================================ */}\n {/* CREATE MODE: Step 1 - Aadhaar Input */}\n {/* ============================================================ */}\n {currentMode === 'CREATE' && step === 1 && (\n <div className=\"space-y-5\">\n {/* Target User Info Header */}\n <div className=\"p-4 bg-gradient-to-r from-blue-50/70 via-indigo-50/40 to-slate-50 border border-blue-100 rounded-2xl flex items-center justify-between shadow-2xs\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-2xl bg-blue-600 text-white flex items-center justify-center font-bold text-sm shadow-sm\">\n {userDisplayName.charAt(0).toUpperCase() || 'U'}\n </div>\n <div>\n <Typography className=\"font-bold text-sm text-slate-800\">{userDisplayName}</Typography>\n <Typography className=\"text-xs text-slate-500 font-medium\">\n {user?.roleName ? `${user.roleName} • ` : ''}\n {user?.contactNumber ? `${user.contactNumber} • ` : ''}\n {user?.userName || ''}\n </Typography>\n </div>\n </div>\n <Chip\n icon={<ShieldRoundedIcon sx={{ fontSize: 14 }} />}\n label={translate('ABDM Enrolment')}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n className=\"font-bold text-[11px] bg-white\"\n />\n </div>\n\n {/* Aadhaar Input Box - Clean Professional Form Style */}\n <div className=\"space-y-1.5\">\n <label className=\"block text-xs font-bold text-slate-700 uppercase tracking-wide\">\n {translate('Aadhaar Number')}\n <span className=\"text-red-500 ml-1\">*</span>\n </label>\n <TextField\n fullWidth\n size=\"small\"\n autoFocus\n placeholder=\"Enter 12-digit Aadhaar (e.g. 0000 0000 0000)\"\n value={aadhaarNumber}\n onChange={(e) => {\n const formatted = formatAadhaarNumber(e.target.value);\n setAadhaarNumber(formatted);\n }}\n disabled={loading}\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <FingerprintRoundedIcon className=\"text-slate-400\" sx={{ fontSize: 20 }} />\n </InputAdornment>\n ),\n endAdornment: isAadhaarComplete ? (\n <InputAdornment position=\"end\">\n <CheckRoundedIcon className=\"text-emerald-500\" sx={{ fontSize: 18 }} />\n </InputAdornment>\n ) : null,\n className: 'text-sm font-medium tracking-wide bg-white rounded-xl',\n maxLength: 14,\n },\n }}\n helperText={translate(\n 'An OTP will be dispatched to the mobile number registered with this Aadhaar in UIDAI records.'\n )}\n />\n </div>\n\n {/* Voluntary Aadhaar Consent Box */}\n <div className=\"p-4 bg-gradient-to-br from-blue-50/80 to-indigo-50/50 border border-blue-200/90 rounded-2xl shadow-2xs\">\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={consentAccepted}\n onChange={(e) => setConsentAccepted(e.target.checked)}\n disabled={loading}\n color=\"primary\"\n className=\"mt-0.5\"\n />\n }\n label={\n <div className=\"text-xs text-slate-700 leading-relaxed pl-1\">\n <span className=\"font-bold text-blue-900 block mb-1\">\n {translate('Consent for Aadhaar Authentication')}\n </span>\n {translate(\n 'I hereby voluntarily consent to provide my Aadhaar number and perform Aadhaar authentication for the sole purpose of generating an Ayushman Bharat Health Account (ABHA) number under the Ayushman Bharat Digital Mission (ABDM). I understand that my Aadhaar number will not be retained or shared.'\n )}\n </div>\n }\n className=\"items-start m-0\"\n />\n </div>\n </div>\n )}\n\n {/* ============================================================ */}\n {/* CREATE MODE: Step 2 - OTP & Mobile Verification */}\n {/* ============================================================ */}\n {currentMode === 'CREATE' && step === 2 && (\n <div className=\"space-y-5\">\n {/* Transaction Notice */}\n {txnMessage && (\n <div className=\"p-3.5 bg-blue-50 border border-blue-200 rounded-2xl flex items-center gap-3 text-blue-900 shadow-2xs\">\n <div className=\"w-8 h-8 rounded-full bg-blue-600 text-white flex items-center justify-center shrink-0 shadow-xs\">\n <PhoneIphoneRoundedIcon sx={{ fontSize: 18 }} />\n </div>\n <Typography className=\"text-xs font-semibold leading-relaxed\">{txnMessage}</Typography>\n </div>\n )}\n\n {/* Aadhaar Snapshot Bar */}\n <div className=\"p-3.5 bg-slate-50 border border-slate-200 rounded-2xl flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <FingerprintRoundedIcon sx={{ fontSize: 20 }} className=\"text-blue-500\" />\n <div>\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase\">\n {translate('Aadhaar Number')}\n </Typography>\n <Typography className=\"font-mono font-bold text-sm text-slate-800\">{aadhaarNumber}</Typography>\n </div>\n </div>\n <Chip\n label={translate('Txn Active')}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n className=\"text-[10px] font-bold\"\n />\n </div>\n\n {/* 6-Digit OTP Field - Clean Form Input Style */}\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between\">\n <label className=\"block text-xs font-bold text-slate-700 uppercase tracking-wide\">\n {translate('Enter OTP')}\n <span className=\"text-red-500 ml-1\">*</span>\n </label>\n\n {timer > 0 ? (\n <span className=\"text-xs text-slate-500 font-medium flex items-center gap-1.5\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-blue-500 animate-pulse\"></span>\n {translate('Resend available in')}{' '}\n <strong className=\"text-blue-700 font-mono font-bold\">{timer}s</strong>\n </span>\n ) : (\n <Button\n size=\"small\"\n disabled={!canResend || loading}\n onClick={handleResendOtp}\n startIcon={<RefreshRoundedIcon sx={{ fontSize: 14 }} />}\n className=\"p-0 text-xs font-bold normal-case text-blue-600 hover:text-blue-800\"\n >\n {translate('Resend OTP')}\n </Button>\n )}\n </div>\n\n <TextField\n fullWidth\n size=\"small\"\n autoFocus\n placeholder=\"Enter 6-digit OTP\"\n value={otp}\n onChange={(e) => {\n const val = e.target.value.replace(/\\D/g, '').slice(0, 6);\n setOtp(val);\n }}\n disabled={loading}\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <KeyRoundedIcon className=\"text-slate-400\" sx={{ fontSize: 18 }} />\n </InputAdornment>\n ),\n className: 'text-sm font-semibold tracking-widest bg-white rounded-xl',\n maxLength: 6,\n },\n }}\n helperText={translate(\n 'Please enter the 6-digit authentication code sent to your registered mobile'\n )}\n />\n </div>\n\n {/* Communication Mobile Number - Clean Form Input Style */}\n <div className=\"space-y-1.5\">\n <label className=\"block text-xs font-bold text-slate-700 uppercase tracking-wide\">\n {translate('Mobile Number for ABHA Profile')}\n <span className=\"text-red-500 ml-1\">*</span>\n </label>\n <TextField\n fullWidth\n size=\"small\"\n placeholder=\"Enter 10-digit mobile number\"\n value={mobileNumber}\n onChange={(e) => {\n const val = e.target.value.replace(/\\D/g, '').slice(0, 10);\n setMobileNumber(val);\n }}\n disabled={loading}\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <span className=\"font-mono text-xs font-bold text-slate-500 mr-1 border-r border-slate-200 pr-2\">\n +91\n </span>\n </InputAdornment>\n ),\n className: 'text-sm font-medium bg-white rounded-xl',\n maxLength: 10,\n },\n }}\n helperText={translate(\n 'This mobile number will be registered with your ABHA profile for future communications.'\n )}\n />\n </div>\n </div>\n )}\n\n {/* ============================================================ */}\n {/* CREATE MODE: Step 3 - Success & Digital ABHA Card */}\n {/* ============================================================ */}\n {currentMode === 'CREATE' && step === 3 && createdProfile && (\n <div className=\"space-y-4\">\n {/* Celebration Banner */}\n <div className=\"p-4 bg-gradient-to-r from-emerald-600 to-teal-700 text-white rounded-2xl flex items-center gap-3.5 shadow-md\">\n <div className=\"w-11 h-11 rounded-2xl bg-white/20 backdrop-blur-md flex items-center justify-center shrink-0 border border-white/30 shadow-inner\">\n <CheckCircleRoundedIcon sx={{ fontSize: 28 }} />\n </div>\n <div>\n <Typography className=\"font-extrabold text-base tracking-wide\">\n {translate('ABHA Number Created Successfully!')}\n </Typography>\n <Typography className=\"text-xs text-emerald-100 font-medium\">\n {translate('ABHA ID has been generated and linked with the user record.')}\n </Typography>\n </div>\n </div>\n\n {/* Digital Card Preview */}\n <div className=\"border-2 border-blue-200 rounded-3xl overflow-hidden bg-gradient-to-br from-blue-50/50 via-white to-indigo-50/40 p-5 shadow-lg relative\">\n {/* Card Header */}\n <div className=\"flex items-center justify-between pb-3 border-b border-blue-100\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"w-9 h-9 rounded-xl bg-blue-600 text-white flex items-center justify-center font-bold text-xs shadow-md\">\n <BadgeRoundedIcon sx={{ fontSize: 20 }} />\n </div>\n <div>\n <Typography className=\"text-[10px] font-extrabold text-blue-900 tracking-widest uppercase\">\n {translate('National Health Authority')}\n </Typography>\n <Typography className=\"text-xs font-bold text-blue-700\">\n {translate('Ayushman Bharat Digital Mission (ABDM)')}\n </Typography>\n </div>\n </div>\n <Chip\n icon={<VerifiedUserRoundedIcon sx={{ fontSize: 14 }} />}\n label={translate('KYC Verified')}\n color=\"success\"\n size=\"small\"\n className=\"font-bold text-xs\"\n />\n </div>\n\n {/* Card Body */}\n <div className=\"mt-4 space-y-3\">\n <div className=\"flex items-center justify-between pb-1\">\n <div>\n <Typography className=\"text-lg font-black text-slate-800 leading-tight\">\n {createdProfile.name || userDisplayName}\n </Typography>\n <Typography className=\"text-xs text-slate-500 font-medium mt-0.5\">\n {createdProfile.gender || 'N/A'}\n {createdProfile.yearOfBirth &&\n ` • DOB: ${createdProfile.dayOfBirth || '01'}/${\n createdProfile.monthOfBirth || '01'\n }/${createdProfile.yearOfBirth}`}\n </Typography>\n </div>\n <div className=\"text-right\">\n <span className=\"text-[10px] font-bold text-slate-400 block uppercase tracking-wider\">\n {translate('User ID')}\n </span>\n <span className=\"font-mono text-xs font-bold text-slate-700\">{targetUserId}</span>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2.5 text-xs\">\n {/* ABHA Number */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-blue-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('ABHA Number')}\n </Typography>\n <div className=\"flex items-center justify-between mt-1\">\n <Typography className=\"font-mono font-extrabold text-base text-blue-900 tracking-wide\">\n {createdProfile.healthIdNumber}\n </Typography>\n <Tooltip title={translate('Copy')}>\n <IconButton\n size=\"small\"\n onClick={() => handleCopy(createdProfile.healthIdNumber, translate('ABHA Number'))}\n className=\"p-1 hover:bg-blue-50 text-blue-600\"\n >\n <ContentCopyRoundedIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </Tooltip>\n </div>\n </div>\n\n {/* ABHA Address */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-blue-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('ABHA Address')}\n </Typography>\n <div className=\"flex items-center justify-between mt-1\">\n <Typography className=\"font-mono font-bold text-sm text-blue-900 truncate\">\n {createdProfile.healthId}\n </Typography>\n <Tooltip title={translate('Copy')}>\n <IconButton\n size=\"small\"\n onClick={() => handleCopy(createdProfile.healthId, translate('ABHA Address'))}\n className=\"p-1 hover:bg-blue-50 text-blue-600\"\n >\n <ContentCopyRoundedIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </Tooltip>\n </div>\n </div>\n\n {/* Mobile */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-blue-100 shadow-2xs\">\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('Mobile')}\n </Typography>\n <Typography className=\"font-semibold text-xs text-slate-800 mt-1\">\n {createdProfile.mobile || mobileNumber}\n </Typography>\n </div>\n\n {/* Digital ID Status */}\n <div className=\"p-3 bg-white/95 rounded-xl border border-blue-100 shadow-2xs flex items-center justify-between\">\n <div>\n <Typography className=\"text-[10px] text-slate-400 font-bold uppercase tracking-wider\">\n {translate('Status')}\n </Typography>\n <Typography className=\"font-bold text-xs text-emerald-600 mt-1\">\n {translate('Linked')}\n </Typography>\n </div>\n <QrCode2RoundedIcon sx={{ fontSize: 24 }} className=\"text-slate-500\" />\n </div>\n </div>\n\n {/* Address */}\n {createdProfile.address && (\n <div className=\"p-3 bg-white/95 rounded-xl border border-blue-100 shadow-2xs flex items-start gap-2 text-xs text-slate-600\">\n <LocationOnRoundedIcon sx={{ fontSize: 16 }} className=\"text-blue-500 shrink-0 mt-0.5\" />\n <span className=\"font-medium leading-relaxed\">{createdProfile.address}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n\n {/* Modal Footer Actions */}\n <div className=\"px-6 py-4 bg-slate-50/90 border-t border-slate-100 flex items-center justify-end gap-3 shrink-0\">\n {currentMode === 'VIEW' ? (\n <Button\n variant=\"contained\"\n onClick={onClose}\n className=\"rounded-xl px-6 normal-case font-bold bg-slate-800 hover:bg-slate-900 text-white shadow-sm\"\n >\n {translate('Close')}\n </Button>\n ) : step === 1 ? (\n <>\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n onClick={onClose}\n disabled={loading}\n className=\"rounded-xl px-5 normal-case font-semibold text-slate-600 border-slate-300 hover:bg-slate-100\"\n >\n {translate('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleGenerateOtp}\n disabled={loading || !isAadhaarComplete || !consentAccepted}\n className={`rounded-xl px-6 normal-case font-bold text-white shadow-md transition-all ${\n isAadhaarComplete && consentAccepted && !loading\n ? 'bg-gradient-to-r from-blue-600 to-indigo-600 hover:from-blue-700 hover:to-indigo-700'\n : 'bg-slate-300'\n }`}\n >\n {loading ? <CircularProgress size={20} color=\"inherit\" /> : translate('Generate OTP')}\n </Button>\n </>\n ) : step === 2 ? (\n <>\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n onClick={() => setStep(1)}\n disabled={loading}\n startIcon={<ArrowBackRoundedIcon />}\n className=\"rounded-xl px-4 normal-case font-semibold text-slate-600 border-slate-300 hover:bg-slate-100\"\n >\n {translate('Back')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleVerifyOtpAndCreate}\n disabled={loading || otp.length !== 6 || mobileNumber.length !== 10}\n className=\"rounded-xl px-6 normal-case font-bold bg-gradient-to-r from-emerald-600 to-teal-600 hover:from-emerald-700 hover:to-teal-700 text-white shadow-md\"\n >\n {loading ? <CircularProgress size={20} color=\"inherit\" /> : translate('Verify & Create ABHA')}\n </Button>\n </>\n ) : (\n <Button\n variant=\"contained\"\n onClick={onClose}\n className=\"rounded-xl px-6 normal-case font-bold bg-blue-600 hover:bg-blue-700 text-white shadow-md\"\n >\n {translate('Done')}\n </Button>\n )}\n </div>\n </Paper>\n </Box>\n </Modal>\n );\n}\n\nCreateAbhaModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n user: PropTypes.object,\n mode: PropTypes.oneOf(['CREATE', 'VIEW']),\n onSuccess: PropTypes.func,\n};\n","import { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n generateSOHCode,\n getUsersList,\n toggleUserStatus,\n} from \"../../services/Users.js\";\nimport { showToast } from \"@/common/toaster/toaster.jsx\";\nimport usePagination from \"@/hooks/usePagination.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal.jsx\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport SideOverlay from \"@/views/custom-components/SideOverlay.jsx\";\nimport UserFilterForm from \"./UserFilterForm.jsx\";\nimport CreateAbhaModal from \"./CreateAbhaModal.jsx\";\nimport implementationConfig from \"@/common/config/implementationConfig\";\nimport \"./Styles/Users.css\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTheme } from \"@mui/material/styles\";\n\nimport { execute } from \"@/common/services/QueryBuilder\";\nimport {\n faBars,\n faFileExcel,\n faFilePdf,\n faPen,\n faPhone,\n faHospital,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n Box,\n Button,\n Card,\n CircularProgress,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { saveAs } from \"file-saver\";\nimport {\n default as React,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useLocation, useNavigate } from \"react-router\";\n\nimport { getRoles } from \"../../services/Users\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport * as XLSX from \"xlsx-js-style\";\nimport {\n UserListSkeleton,\n UserStatsSkeleton,\n} from \"./Skeletons/UserListSkeleton.jsx\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setUserDetails } from \"@/store/reducers/AuthenticationReducer\";\nimport useDownloadPdf from \"@/hooks/useDownloadPdf.js\";\nimport CustomStatsComponent from \"@/views/custom-components/CustomStatsComponent.jsx\";\nimport {\n faUsers,\n faCheckCircle,\n faTimesCircle,\n faUserShield,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil.js\";\n\n/**\n * @module UserList\n * @returns {JSX.Element}\n */\n\nexport default function UserList() {\n const navigate = useNavigate();\n const trackEvent = useTrackEvent();\n const [adminRolesIds, setAdminRolesId] = useState([]);\n\n //colors for stats\n let totalUserColor = \"#8688ecff\";\n let activeUserColor = \"#10b981\";\n let inactiveUserColor = \"#f43f5e\";\n let adminUserColor = \"#f59e0b\";\n let whiteColor = \"#ffffffff\";\n\n const [adminRoleIdsStats, setAdminRoleIdsStats] = useState([]);\n const [rolesIds, setRolesIds] = useState([]);\n const [userStats, setUserStats] = useState(null);\n const [userStatsLoading, setUserStatsLoading] = useState(false);\n const theme = useTheme();\n const isDark = theme.palette.mode === \"dark\";\n //status model=1,soh model =2\n const [openModel, setOpenModel] = useState(0);\n const [rights, setRights] = useState(null);\n const rightsRef = useRef(rights);\n\n useEffect(() => {\n rightsRef.current = rights;\n }, [rights]);\n\n const [row, setRow] = useState(null);\n const [search, setSearch] = useState(\"\");\n const [debounceSearch, setDebounceSearch] = useState(\"\");\n const [usersData, setUsersData] = useState([]);\n const [hasMore, setHasMore] = useState(true);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [openAbhaModal, setOpenAbhaModal] = useState(false);\n const [abhaModalMode, setAbhaModalMode] = useState(\"CREATE\");\n const [selectedAbhaUser, setSelectedAbhaUser] = useState(null);\n\n const implementationConfigState = useSelector(\n (state) => state?.ImplementationConfig?.config\n );\n const isCreateAbhaEnabled = Boolean(\n implementationConfigState?.user?.enableCreateAbha ??\n implementationConfig.user?.enableCreateAbha\n );\n\n const canCreateAbha = Boolean(\n rights &&\n (rights[\"create.manage.users.canABHACreate\"] === true ||\n rights[\"create.manage.users.canABHACreate\"] === \"true\" ||\n rights[\"canABHACreate\"] === true ||\n rights[\"canABHACreate\"] === \"true\" ||\n rights[\"canAbhaCreate\"] === true ||\n rights[\"canAbhaCreate\"] === \"true\" ||\n rights[\"create.manage.users.canAbhaCreate\"] === true ||\n rights[\"create.manage.users.canAbhaCreate\"] === \"true\")\n );\n\n const handleAbhaSuccess = useCallback(({ userId, healthId, healthIdNumber }) => {\n setUsersData((prevUsers) => {\n if (!Array.isArray(prevUsers)) return prevUsers;\n return prevUsers.map((u) => {\n const uid = GeneralUtil.isTecho ? u?.userId : u?.id;\n if (uid === userId || u?.id === userId || u?.userId === userId) {\n return {\n ...u,\n healthId,\n healthIdNumber,\n };\n }\n return u;\n });\n });\n }, []);\n const [sortConfig, setSortConfig] = useState({\n sortColumn: \"userName\",\n sortOrder: \"asc\",\n });\n const [toggle, setToggle] = useState(false);\n const pageSize = 50;\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const [locationId, setLocationId] = useState(null);\n const [roleDetails, setRoleDetails] = useState(null);\n const [status, setStatus] = useState(null);\n const location = useLocation();\n const dispatch = useDispatch();\n const { user } = useSelector((state) => state?.Authenticate);\n const [selectedLocationId, setSelectedLocationId] = useState(\n user?.userFilterPreference?.locationId || null,\n );\n const locationIdRef = useRef(selectedLocationId);\n const [selectedLocation, setSelectedLocation] = useState(\n (location?.state?.fromManageUser === true &&\n user?.userFilterPreference?.selectedLocation) ||\n {},\n {},\n );\n const [filterRequired, setFilterRequired] = useState(\n (location?.state?.fromManageUser === true &&\n user?.userFilterPreference?.filterRequired) ||\n false,\n );\n const [userFilterPreference, setUserFilterPreference] = useState(\n (location?.state?.fromManageUser === true && user?.userFilterPreference) ||\n {},\n );\n const [resetLocationDirective, setResetLocationDirective] = useState(0);\n const [locations, setLocations] = useState([]);\n\n /**\n * Toggles the label for the action button based on the display state of a row.\n * @function handleToggleOption\n * @param {Object} row - The row object containing the display state.\n * @param {string} row.displayState - The current display state of the row, which determines the button label.\n * @returns {void}\n */\n // const isDark = theme.palette.mode === \"dark\";\n const updatedData = useMemo(() => {\n return usersData?.map((user, index) => {\n let name = \"\";\n if (user?.title) name += user.title + \" \";\n if (user?.firstName) name += user.firstName + \" \";\n if (user?.lastName) name += user.lastName;\n return {\n ...user,\n index: index + 1,\n firstName: name.trim(),\n };\n });\n }, [usersData, isDark]);\n\n useEffect(() => {\n const getUsersStats = async () => {\n try {\n if (rolesIds.length > 0) {\n setUserStatsLoading(true);\n const response = await execute(\n {\n code: \"GET_USERS_STATS\",\n parameters: {\n locationId: userFilterPreference?.locationId || locationId,\n roleid: userFilterPreference?.roleid || roleDetails?.id || null,\n roleIds: rolesIds?.join(\",\"),\n loggedInUserId: user?.id,\n },\n },\n { showLoader: false },\n );\n if (response?.data?.result && response?.data?.result.length > 0) {\n setUserStats(response.data.result[0]);\n }\n setUserStatsLoading(false);\n }\n } catch (error) {\n setUserStatsLoading(false);\n console.error(\"Error fetching user stats:\", error);\n }\n };\n getUsersStats();\n }, [userFilterPreference, rolesIds]);\n\n const defaultColumns = [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n {\n field: \"userName\",\n label: \"User Identity\".toUpperCase(),\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n render: (row) => {\n return (\n <div className=\"flex items-center w-48 gap-4 h-full\">\n <Box\n className=\"w-[15%] h-10 rounded-2xl flex items-center justify-center font-black text-xs shadow-sm transition-transform duration-300 group-hover:scale-110\"\n sx={{\n background: `linear-gradient(to bottom right, ${alpha(theme.palette.primary.main, 0.05)}, ${alpha(theme.palette.primary.main, 0.2)})`,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n color: theme.palette.primary.main,\n }}\n >\n {row?.firstName\n ?.split(\" \")\n .filter((n) => ![\"Mr\", \"Ms\", \"Mrs\"].includes(n))\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()}\n </Box>\n\n <div className=\"w-[80%] flex flex-col h-full justify-center pt-2\">\n <Box\n component=\"span\"\n className=\"text-sm font-black leading-tight transition-colors duration-300\"\n sx={{\n color: theme.palette.text.primary, // Dynamic text color\n \".group:hover &\": {\n color: theme.palette.primary.main,\n },\n }}\n >\n {row?.firstName}\n </Box>\n <Box\n component=\"span\"\n className=\"text-md font-bold font-mono flex items-center gap-1.5 transition-colors duration-300\"\n sx={{\n color: theme.palette.text.secondary, // Dynamic muted color\n }}\n >\n <Box\n component=\"span\"\n className=\"w-1.5 h-1.5 rounded-full transition-colors duration-300\"\n sx={{\n backgroundColor: theme.palette.divider, // Dynamic dot color\n }}\n ></Box>\n {row?.userName}\n </Box>\n {isCreateAbhaEnabled && (row?.healthIdNumber || row?.healthId) && (\n <Tooltip\n title={`${translate(\"ABHA Number\")}: ${\n row?.healthIdNumber || row?.healthId\n }`}\n arrow\n placement=\"top\"\n >\n <span className=\"inline-flex items-center gap-1.5 px-2 py-0.5 mt-1 rounded-full text-[10px] font-black bg-emerald-50 text-emerald-700 border border-emerald-200/80 shadow-2xs w-fit cursor-default\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse\"></span>\n ABHA Verified\n </span>\n </Tooltip>\n )}\n </div>\n </div>\n );\n },\n },\n {\n field: \"contactNumber\",\n label: \"Phone number\".toUpperCase(),\n sortable: true,\n align: \"left\",\n sortOrder: \"asc\",\n render: (row) => {\n return (\n <div className=\"flex items-center w-32 gap-4 h-full\">\n <div className=\"flex items-center text-md tracking-tight\">\n <Box\n className=\"w-7 h-7 rounded-xl flex items-center justify-center mr-2 shadow-sm transition-all duration-300\"\n sx={{\n backgroundColor:\n theme.palette.mode === \"dark\"\n ? alpha(theme.palette.common.white, 0.05)\n : \"rgb(248, 250, 252)\",\n color: theme.palette.text.disabled,\n \".group:hover &\": {\n backgroundColor: theme.palette.primary.main,\n color: \"white\",\n },\n }}\n >\n <FontAwesomeIcon icon={faPhone} className=\"text-xs\" />\n </Box>\n\n <Box\n component=\"span\"\n className=\"transition-colors duration-300\"\n sx={{\n color: theme.palette.text.primary,\n \".group:hover &\": {\n color: theme.palette.primary.main,\n },\n }}\n >\n {row?.contactNumber || \"N/A\"}\n </Box>\n </div>\n </div>\n );\n },\n },\n {\n field: \"roleName\",\n label: \"Role Name\".toUpperCase(),\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n render: (row) => {\n return (\n <div className=\"flex items-center w-auto h-full\">\n <div className=\"flex flex-col gap-1.5\">\n <Box\n component=\"span\"\n className=\"px-2.5 rounded-lg text-[0.6rem] font-black uppercase tracking-widest w-fit whitespace-nowrap\"\n sx={{\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n color: theme.palette.primary.main,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n }}\n >\n {row?.roleName}\n </Box>\n </div>\n </div>\n );\n },\n },\n {\n field: \"areaOfIntervention\",\n label: \"Area of Intervention\".toUpperCase(),\n align: \"left\",\n render: (row) => {\n const formattedArea = row?.areaOfIntervention?.replace(\n /<br\\s*\\/?>/gi,\n \", \",\n );\n return (\n <div className=\"flex items-center w-48 h-full\">\n <div className=\"flex flex-col gap-1.5 w-full min-w-0\">\n <Box\n className=\"flex items-center text-md pl-2\"\n sx={{ color: theme.palette.text.primary }} // Use theme color instead of slate-700\n >\n <Tooltip\n arrow\n placement=\"top\"\n title={\n <span\n dangerouslySetInnerHTML={{\n __html: row?.areaOfIntervention || \"N/A\",\n }}\n />\n }\n >\n <span\n className=\"cursor-default block w-full whitespace-normal break-words\"\n dangerouslySetInnerHTML={{\n __html: formattedArea || \"N/A\",\n }}\n />\n </Tooltip>\n </Box>\n </div>\n </div>\n );\n },\n },\n {\n field: \"healthFacilityName\",\n label: \"Health Infrastructure\".toUpperCase(),\n align: \"left\",\n render: (row) => (\n <div className=\"flex items-center gap-3 h-full\">\n <Box\n className=\"w-8 h-8 rounded-lg flex items-center justify-center transition-all duration-300\"\n sx={{\n color: theme.palette.text.disabled,\n \".group:hover &\": {\n color: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n },\n }}\n >\n <FontAwesomeIcon icon={faHospital} />\n </Box>\n\n <Box\n component=\"span\"\n className=\"text-sm transition-colors duration-300\"\n sx={{\n color: theme.palette.text.secondary,\n \".group:hover &\": {\n color: theme.palette.primary.main,\n },\n }}\n >\n <div className=\"whitespace-pre-line\">\n {row?.healthFacilityName?.replace(/<br\\s*\\/?>/gi, \"\\n\") || \"N/A\"}\n </div>\n </Box>\n </div>\n ),\n },\n {\n field: \"displayState\",\n label: \"User Status\".toUpperCase(),\n align: \"left\",\n render: (row) => {\n const isActive = row?.displayState === \"ACTIVE\";\n return (\n <div className=\"flex items-center justify-center h-full\">\n <Box\n className=\"inline-flex items-center justify-center rounded-full text-[0.8rem] font-black border transition-all duration-500 shadow-sm px-3 w-auto min-w-[110px]\"\n sx={{\n backgroundColor: isActive\n ? theme.palette.mode === \"dark\"\n ? alpha(theme.palette.success.main, 0.15)\n : \"rgb(236, 253, 245)\"\n : theme.palette.mode === \"dark\"\n ? alpha(theme.palette.error.main, 0.15)\n : \"rgb(254, 242, 242)\",\n color: isActive\n ? theme.palette.mode === \"dark\"\n ? theme.palette.success.light\n : \"rgb(4, 120, 87)\"\n : theme.palette.mode === \"dark\"\n ? theme.palette.error.light\n : \"rgb(248, 113, 113)\",\n borderColor: isActive\n ? alpha(theme.palette.success.main, 0.3)\n : alpha(theme.palette.error.main, 0.3),\n }}\n >\n <span\n className={`w-2 h-2 rounded-full mr-2 ${isActive ? \"bg-emerald-500 animate-pulse\" : \"bg-red-400\"\n }`}\n ></span>\n {row?.displayState}\n </Box>\n </div>\n );\n },\n },\n {\n field: \"Actions\",\n label: \"Actions\".toUpperCase(),\n align: \"left\",\n },\n ];\n\n const [columns, setColumns] = useState(defaultColumns);\n useEffect(() => {\n setColumns(defaultColumns);\n }, [isDark, isCreateAbhaEnabled]);\n /**\n * Handles the status toggle action for the selected user and updates the user list.\n *\n * @async\n * @function handleClickStatusModal\n * @returns {Promise<void>}\n */\n\n const handleClickStatusModal = async () => {\n const is_active = row.displayState !== \"ACTIVE\";\n try {\n await toggleUserStatus(row, { is_active });\n setOpenModel(0);\n setToggle((cur) => !cur);\n showToast({\n message: \"User State Updated Successfully\",\n type: \"success\",\n });\n } catch (error) {\n setOpenModel(0);\n setToggle((cur) => !cur);\n const errorCode = error?.response?.data?.errorcode;\n const message =\n error?.response?.data?.message ||\n error?.message ||\n \"Something went wrong\";\n console.log(errorCode, message);\n if (errorCode === 400) {\n showToast({\n message: `${message}`,\n type: \"error\",\n });\n } else {\n showToast({\n message: \"Error in Updating User State.\",\n type: \"error\",\n });\n }\n }\n };\n\n /**\n * Handles the generation of the SOH (Statement of Holdings) code for a user.\n * @async\n * @function handleClickGenerateSOHModal\n * @returns {Promise<void>} - A promise that resolves after the SOH code is generated.\n */\n\n const handleClickGenerateSOHModal = async () => {\n try {\n const response = await generateSOHCode({\n userId: row?.userId ?? row?.id,\n });\n if (response) {\n setUsersData((users) => {\n return users.map((user) => {\n return user?.userId ===\n (row?.userId ?? row?.id)\n ? { ...user, loginCode: response.data }\n : user;\n });\n });\n showToast({\n message: `You have successfully generated your login code. Your login code is : ${response.data}`,\n type: \"success\",\n });\n }\n } catch (error) {\n showToast({ message: `${error.response.data.message}`, type: \"error\" });\n } finally {\n setOpenModel(0);\n }\n };\n\n /**\n * Navigates to the user edit page for the specified user.\n * @function handleEditUser\n * @param {Object} row - The user data object.\n * @param {number} row.id - The unique ID of the user.\n * @returns {void}\n */\n\n const handleEditUser = (row) => {\n return navigate(`/ui/medplat/manage/user/${row?.userId ?? row?.id}`);\n };\n const getActions = useCallback(\n (row) => {\n return [\n GeneralUtil.hasCheckRights(rights?.[\"update.manage.users\"], undefined, true) && {\n label: \"\",\n icon: (\n <FontAwesomeIcon icon={faPen} data-testid=\"userlist-button-edit\" />\n ),\n onClick: () => {\n handleEditUser(row);\n },\n iconColor: theme.palette.secondary.main,\n backgroundColor: alpha(theme.palette.secondary.main, 0.1),\n hoverBackgroundColor: theme.palette.secondary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.secondary.main,\n rotateIcon: true,\n },\n {\n label: \"\",\n icon: (\n <FontAwesomeIcon icon={faBars} data-testid=\"userlist-button-menu\" />\n ),\n iconColor: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n hoverBackgroundColor: theme.palette.primary.main,\n hoverIconColor: \"white\",\n borderColor: theme.palette.primary.main,\n menuItems: [\n {\n label: translate(\n row.displayState === \"ACTIVE\"\n ? \"Mark as Inactive\"\n : \"Mark as Active\",\n ),\n onClick: () => {\n setOpenModel(1);\n setRow(row);\n },\n },\n row.displayState === \"ACTIVE\" &&\n !row?.loginCode && {\n label: translate(\"Generate SOH Code\"),\n onClick: () => {\n setOpenModel(2);\n setRow(row);\n },\n },\n isCreateAbhaEnabled &&\n (row?.healthIdNumber || row?.healthId\n ? {\n label: translate(\"View ABHA Details\"),\n onClick: () => {\n setSelectedAbhaUser(row);\n setAbhaModalMode(\"VIEW\");\n setOpenAbhaModal(true);\n },\n }\n : canCreateAbha &&\n row.displayState === \"ACTIVE\" && {\n label: translate(\"Create ABHA Number\"),\n onClick: () => {\n setSelectedAbhaUser(row);\n setAbhaModalMode(\"CREATE\");\n setOpenAbhaModal(true);\n },\n }),\n ].filter(Boolean),\n },\n ].filter(Boolean);\n },\n [translate, rights, isCreateAbhaEnabled, canCreateAbha],\n );\n\n /**\n * Handles sorting of the user list by the specified column.\n * @function s\n * @returns {Promise<void>}\n */\n\n const handleSort = async (column) => {\n const newOrder = column.sortOrder === \"asc\" ? \"desc\" : \"asc\";\n setColumns((prev) =>\n prev.map((col) => {\n if (col.field === column.field) {\n return { ...col, sortOrder: newOrder };\n }\n return col;\n }),\n );\n setSortConfig({ sortColumn: column.field, sortOrder: newOrder });\n };\n\n /**\n * Toggles the state of the overlay.\n * @function handleOverlayState\n * @returns {void}\n */\n\n const handleOverlayState = () => {\n trackEvent(\"button_click\", {\n button_name: \"User Filter-open-button\",\n button_type: \"filter_open\",\n button_id: \"userlist-overlay-filter\",\n });\n setOverlayOpen(!overlayOpen);\n };\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebounceSearch(search);\n }, 1000);\n\n return () => clearTimeout(timer); // Cleanup previous timer\n }, [search]);\n\n /**\n * Fetches additional user data for pagination and logs the search tracking event.\n * @async\n * @function loadMoreData\n * @param {Object} pageParam - The pagination parameters for the API request.\n * @param {number} pageParam.limit - The number of items to fetch per page.\n * @param {number} pageParam.offset - The offset for pagination.\n * @returns {Promise<Array>} - A promise that resolves to an array of user data fetched from the API.\n * @throws {Error} - Displays a toast notification if an error occurs during the API call.\n *\n **/\n async function loadMoreData(pageParam, initialLoad) {\n try {\n if (rights === null || GeneralUtil.hasCheckRights(rights?.[\"view.manage.users\"], undefined, true)) {\n initialLoad && setIsLoading((cur) => !cur);\n\n const response = await getUsersList({\n limit: pageParam.limit,\n offset: pageParam.offset,\n locationId: userFilterPreference?.locationId || locationId,\n order: sortConfig.sortOrder,\n orderby: sortConfig.sortColumn,\n roleIds: adminRoleIdsStats?.join(\",\"),\n status: userFilterPreference?.status\n ? userFilterPreference?.status\n : status || \"BOTH\",\n ...(userFilterPreference?.roleid\n ? { roleid: userFilterPreference?.roleid }\n : roleDetails?.id && { roleid: roleDetails.id }),\n ...(search && { searchString: search }),\n });\n search !== \"\" &&\n trackEvent(\"search_tracking\", {\n searchTerm: search,\n results_count: response?.data?.length,\n search_type: \"Page Search\",\n });\n initialLoad && setIsLoading((cur) => !cur);\n return response.data;\n }\n } catch (error) {\n showToast({ message: `error ${error}`, type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n }\n\n /**\n * Custom hook for managing paginated user data.\n *\n * @CustomHook\n * @type {Object}\n * @property {Array} pageData - The paginated user data fetched from the server.\n * @property {Function} fetchNextPage - Function to fetch the next page of data.\n * @property {boolean} hasNextPage - Indicates whether more pages are available to fetch.\n * @property {boolean} isFetchingNextPage - Indicates if the next page is currently being fetched.\n **/\n\n const {\n data: pageData,\n fetchNextPage,\n hasNextPage,\n } = usePagination({\n key: [\n \"users\",\n debounceSearch,\n sortConfig.sortOrder,\n sortConfig.sortColumn,\n toggle,\n locationId,\n roleDetails?.id,\n status,\n rights,\n adminRoleIdsStats,\n ],\n queryFn: ({ pageParam }) => {\n const isInitial = !pageParam?.offset || pageParam?.offset === 0;\n return loadMoreData(pageParam, isInitial);\n },\n limit: pageSize,\n });\n\n /**\n * `useEffect` hook that loads initial data when the component mounts.\n *\n * @function useEffect\n * @async\n * @returns {void} This function does not return a value.\n */\n\n useEffect(() => {\n const loadInitialData = async () => {\n try {\n const { data } = await getRoles({}, { showLoader: false });\n const adminIds = data\n ?.filter((role) => role?.name?.toLowerCase()?.includes(\"admin\"))\n .map((role) => role.id);\n setAdminRolesId(adminIds);\n const allIds = data?.map((role) => role.id);\n setRolesIds(allIds);\n setIsLoading(true);\n const { data: featureJson } =\n await getAssignedFeatures(\"techo.manage.users\");\n if (featureJson) {\n const parsedRights =\n typeof featureJson === \"string\"\n ? JSON.parse(featureJson)\n : featureJson;\n setRights(parsedRights);\n }\n if (!location?.state?.fromManageUser === true) {\n dispatch(setUserDetails({ ...user, userFilterPreference: {} }));\n }\n setIsLoading(false);\n } catch (error) {\n setIsLoading(false);\n console.error(\"Error loading initial data:\", error);\n }\n };\n loadInitialData();\n }, []);\n\n /**\n * `useEffect` hook that loads initial data when the component mounts.\n * @function useEffect\n * @async\n * @returns {void} This function does not return a value.\n */\n useEffect(() => {\n const allUsers = pageData?.pages?.flat() || [];\n setHasMore(hasNextPage);\n setUsersData(allUsers);\n }, [pageData]);\n\n const getAllUser = async () => {\n try {\n const batchSize = 50000;\n let offset = 0;\n let allUsers = [];\n let hasMoreUsers = true;\n\n while (hasMoreUsers) {\n const response = await getUsersList({\n limit: batchSize,\n offset,\n locationId: userFilterPreference?.locationId || locationId,\n order: sortConfig.sortOrder,\n orderby: sortConfig.sortColumn,\n roleIds: adminRoleIdsStats?.join(\",\"),\n status: userFilterPreference?.status\n ? userFilterPreference?.status\n : status || \"BOTH\",\n ...(userFilterPreference?.roleid\n ? { roleid: userFilterPreference?.roleid }\n : roleDetails?.id && { roleid: roleDetails.id }),\n ...(search && { searchString: search }),\n });\n\n const currentBatch = response?.data || [];\n allUsers = [...allUsers, ...currentBatch];\n\n if (currentBatch.length < batchSize) {\n hasMoreUsers = false;\n } else {\n offset += batchSize;\n }\n }\n\n return allUsers;\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in retriving all Users\", type: \"error\" });\n return [];\n }\n };\n\n const processAndDownloadExcel = async (data) => {\n try {\n const now = new Date();\n const month = now.getMonth() + 1;\n const fileName = `UserList-${now.getDate()}/${month}/${now.getFullYear().toString().substr(-2)}-${now.getHours()}:${now.getMinutes()}`;\n\n const worksheet = XLSX.utils.json_to_sheet(data);\n\n const headerStyle = {\n font: { bold: true },\n alignment: { horizontal: \"center\" },\n };\n\n if (data.length > 0) {\n const range = XLSX.utils.decode_range(worksheet[\"!ref\"]);\n\n for (let C = range.s.c; C <= range.e.c; ++C) {\n const cell = worksheet[XLSX.utils.encode_cell({ r: 0, c: C })];\n if (!cell) continue;\n cell.s = headerStyle;\n }\n }\n\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Sheet1\");\n\n const excelBuffer = XLSX.write(workbook, {\n bookType: \"xlsx\",\n type: \"array\",\n });\n\n const blob = new Blob([excelBuffer], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n });\n const blobSizeInMB = (blob.size / (1024 * 1024)).toFixed(2);\n\n saveAs(blob, `${fileName}.xlsx`);\n\n trackEvent(\"file_download\", {\n file_type: \"excel\",\n file_name: `${fileName}.xlsx`,\n file_size: `${blobSizeInMB} MB`,\n filter_parameters: {\n taskTypeId: usersData.id,\n },\n download_status: \"success\",\n });\n } catch (error) {\n console.error(\"Error generating Excel file:\", error);\n showToast({ message: \"Error generating Excel file\", type: \"error\" });\n }\n };\n const [disableExcel, setDisableExcel] = useState(false);\n const downloadExcel = async () => {\n try {\n setDisableExcel(true);\n const userList = await getAllUser();\n\n let taskDetails = [];\n if (userList && userList.length > 0) {\n taskDetails = userList.map((user, index) => {\n let name = \"\",\n areaOfIntervention;\n if (user?.title) name += user.title + \" \";\n if (user?.firstName) name += user.firstName + \" \";\n if (user?.lastName) name += user.lastName;\n if (user?.areaOfIntervention)\n areaOfIntervention = user?.areaOfIntervention?.replace(\n /<br\\s*\\/?>/gi,\n \",\\n\",\n );\n const processedUser = {\n \"No.\": index + 1,\n NAME: name || \"NA\",\n \"USER IDENTITY\": user?.userName || \"NA\",\n \"MOBILE NUMBER\": user?.contactNumber || \"NA\",\n \"USER ROLE\": user?.roleName || \"NA\",\n \"AREA OF INTERVENTION\": areaOfIntervention || \"NA\",\n \"HEALTH INFRASTRUCTURE\": user?.healthFacilityName || \"NA\",\n \"USER STATUS\": user?.displayState || \"NA\",\n };\n\n // Convert `null` values to empty strings and boolean values to \"Yes\" or \"No\"\n Object.keys(processedUser).forEach((key) => {\n if (key === \"id\") {\n delete processedUser[key];\n } else if (processedUser[key] === null) {\n processedUser[key] = \"\";\n } else if (typeof processedUser[key] === \"boolean\") {\n processedUser[key] = processedUser[key] ? \"Yes\" : \"No\";\n }\n });\n\n return processedUser;\n });\n\n // Call the function to process data and download the Excel file\n }\n processAndDownloadExcel(taskDetails);\n setDisableExcel(false);\n } catch (error) {\n setDisableExcel(false);\n console.log(error);\n showToast({\n message: \"Error in downloading excel\",\n type: \"error\",\n });\n }\n };\n\n const downloadPdf = useDownloadPdf();\n const [disablePdf, setDisablePdf] = useState(false);\n const handleDownloadPdf = async () => {\n try {\n setDisablePdf(true);\n const usersData = await getAllUser();\n if (!usersData || usersData.length === 0) return;\n // Build columns and keys as in TableComponent\n let pdfColumns = [];\n let pdfKeys = [];\n pdfColumns.push(translate(\"NAME\"));\n pdfKeys.push(\"name\");\n defaultColumns\n .filter(\n (col) =>\n col.field !== \"Actions\" &&\n col.field !== \"index\" &&\n col.field !== \"Sr. No.\",\n )\n .forEach((col) => {\n pdfColumns.push(translate(col.label));\n pdfKeys.push(col.field);\n });\n let taskDetails = usersData.map((user) => {\n let name = \"\",\n areaOfIntervention;\n if (user?.title) name += user.title + \" \";\n if (user?.firstName) name += user.firstName + \" \";\n if (user?.lastName) name += user.lastName;\n if (user?.areaOfIntervention)\n areaOfIntervention = user?.areaOfIntervention?.replace(\n /<br\\s*\\/?>/gi,\n \",\\n\",\n );\n const processedUser = {\n ...user,\n name: name || 'NA',\n areaOfIntervention: areaOfIntervention,\n healthFacilityName:\n user?.healthFacilityName?.replace(/<br\\s*\\/?>/gi, '\\n') || user?.healthFacilityName || 'NA',\n };\n return processedUser;\n });\n\n const now = new Date();\n const month = now.getMonth() + 1;\n\n downloadPdf({\n columns: pdfColumns,\n keys: pdfKeys,\n data: taskDetails,\n fileName: `${translate('UserList')}-${now.getDate()}/${month}/${now.getFullYear().toString().substr(-2)}-${now.getHours()}:${now.getMinutes()}`,\n headerText: translate('User List'),\n footerText: translate('User List'),\n orientation: pdfColumns.length > 5 ? \"landscape\" : \"portrait\",\n });\n setDisablePdf(false);\n } catch (error) {\n setDisablePdf(false);\n console.error(error);\n }\n };\n\n const resetFilter = () => {\n setLocationId(null);\n setRoleDetails(null);\n setStatus(\"BOTH\");\n setUserFilterPreference({});\n setFilterRequired(false);\n setLocations([]);\n setAdminRoleIdsStats([]);\n // setSelectedLocation([])\n dispatch(setUserDetails({ ...user, userFilterPreference: {} }));\n setSelectedLocationId(null);\n setSelectedLocation({});\n setResetLocationDirective((cur) => {\n return cur + 1;\n });\n locationIdRef.current = null;\n handleOverlayState();\n };\n\n return !isLoading && rights !== null && !GeneralUtil.hasCheckRights(rights?.[\"view.manage.users\"], undefined, true) ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n data-testid=\"userlist-no-permission\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Users\n </Typography>\n </Card>\n </Box>\n ) : (\n <Grid className=\"w-[98%] mt-4 \">\n <CustomConfirmationModal\n open={openModel === 1}\n handleClose={() => setOpenModel(0)}\n handleClick={handleClickStatusModal}\n title=\"CONFIRM ACTION\"\n description=\"Are you sure you want toggle the state of this user type?\"\n dataTestId=\"userlist-modal-status-confirmation\"\n />\n <CustomConfirmationModal\n open={openModel === 2}\n handleClose={() => setOpenModel(0)}\n handleClick={handleClickGenerateSOHModal}\n title=\"CONFIRM ACTION\"\n description=\"Are you sure you want to Generate SOH code ?\"\n dataTestId=\"userlist-modal-generate-soh-confirmation\"\n />\n {isCreateAbhaEnabled &&\n (abhaModalMode === \"VIEW\" || canCreateAbha) && (\n <CreateAbhaModal\n open={openAbhaModal}\n onClose={() => {\n setOpenAbhaModal(false);\n setSelectedAbhaUser(null);\n }}\n user={selectedAbhaUser}\n mode={abhaModalMode}\n onSuccess={handleAbhaSuccess}\n />\n )}\n\n <UserListSkeleton isLoading={isLoading}>\n <Grid\n container\n className=\"flex flex-col md:flex-row mb-2 justify-between items-start md:items-center space-y-2 md:space-y-0\"\n >\n <Grid>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg text-[var(--color-customBlue)] uppercase text-customBlue\"\n data-testid=\"notification-list-typography-title\"\n >\n {translate(\"User List\")}\n </Typography>\n </Grid>\n\n <Grid className=\"flex flex-col md:flex-row w-full md:w-auto space-y-2 md:space-y-0 md:space-x-3\">\n <Grid className=\"w-full md:w-auto\">\n <TextField\n name=\"searchQuery\"\n id=\"searchQuery\"\n className=\"w-full md:w-auto\"\n placeholder=\"Search...\"\n size=\"small\"\n onChange={(e) => setSearch(e.target?.value)}\n value={search}\n data-testid=\"userlist-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n backgroundColor: (theme) => theme.palette.background.paper,\n },\n }}\n />\n </Grid>\n <div className=\"flex items-center gap-3 flex-wrap md:flex-nowrap\">\n {/* PDF + Excel group */}\n <div\n className={`flex items-center rounded-2xl p-1 shadow-sm transition-all duration-300 border ${isDark\n ? \"bg-slate-900 border-slate-800\"\n : \"bg-white border-slate-200\"\n }`}\n >\n <button\n disabled={disablePdf}\n onClick={handleDownloadPdf}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ${isDark\n ? \"text-slate-400 hover:text-slate-100 hover:bg-slate-800\"\n : \"text-slate-600 hover:text-red-600 hover:bg-slate-50\"\n }`}\n >\n {disablePdf ? (\n <>\n <CircularProgress size={14} sx={{ color: \"inherit\" }} />\n <FontAwesomeIcon icon={faFilePdf} className=\"mr-1\" />\n Pdf\n </>\n ) : (\n <>\n <FontAwesomeIcon icon={faFilePdf} className=\"mr-1\" />\n Pdf\n </>\n )}\n </button>\n\n <button\n disabled={disableExcel}\n onClick={() => downloadExcel(usersData)}\n className={`px-4 py-2 rounded-xl transition-all flex items-center gap-2 text-xs font-black uppercase tracking-wider ml-1 ${isDark\n ? \"bg-slate-800 text-slate-100 hover:bg-slate-700\"\n : \"bg-[var(--color-tableHeader)] text-white hover:bg-[var(--color-tableHeader)]\"\n }`}\n >\n {disableExcel ? (\n <>\n <CircularProgress size={14} sx={{ color: \"inherit\" }} />\n <FontAwesomeIcon icon={faFileExcel} className=\"mr-1\" />\n Excel Data\n </>\n ) : (\n <>\n <FontAwesomeIcon icon={faFileExcel} className=\"mr-1\" />\n Excel Data\n </>\n )}\n </button>\n </div>\n\n {/* Add Button */}\n {GeneralUtil.hasCheckRights(rights?.[\"create.manage.users\"], undefined, true) && (\n <Button\n variant=\"contained\"\n className=\"w-auto ml-auto\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"add_user\",\n button_type: \"navigate\",\n button_id: \"userlist-button-add\",\n });\n navigate(\"/ui/medplat/manage/user\");\n }}\n size=\"small\"\n data-testid=\"userlist-button-add\"\n >\n {translate(\"Add\")}\n </Button>\n )}\n\n {GeneralUtil.isSevaMandir && GeneralUtil.hasCheckRights(rights?.[\"create.manage.users\"], undefined, true) && (\n <Button\n variant=\"contained\"\n className=\"w-auto ml-auto\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"upload_users\",\n button_type: \"navigate\",\n button_id: \"userlist-button-add\",\n });\n navigate(\"/ui/medplat/manage/upload-users\");\n }}\n size=\"small\"\n data-testid=\"userlist-button-add\"\n >\n {translate(\"Upload Users\")}\n </Button>\n )}\n </div>\n\n {/* <Grid className=\"flex space-x-2 mt-2\">\n <FontAwesomeIcon\n icon={faFilePdf}\n size=\"2xl\"\n className=\"cursor-pointer mt-1\"\n data-testid=\"userlist-icon-pdf\"\n onClick={handleDownloadPdf}\n />\n </Grid>\n <Grid className=\"flex space-x-2 mt-2\">\n <FontAwesomeIcon\n icon={faFileExcel}\n size=\"2xl\"\n className=\"cursor-pointer mt-1\"\n onClick={() => downloadExcel(usersData)}\n data-testid=\"userlist-icon-save\"\n />\n </Grid> */}\n </Grid>\n </Grid>\n </UserListSkeleton>\n\n <UserStatsSkeleton isLoading={userStatsLoading}>\n {userStats && (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mt-4 mb-4\">\n <CustomStatsComponent\n title=\"Total Users\"\n value={userStats?.total_users || 0}\n icon={faUsers}\n bottomIndicator={totalUserColor}\n selected={status === \"BOTH\" && adminRoleIdsStats.length === 0}\n selectedBgColor={totalUserColor}\n selectedTitleColor={whiteColor}\n selectedValueColor={whiteColor}\n onClick={() => {\n if (userStats?.total_users > 0) {\n setAdminRoleIdsStats([]);\n setStatus(\"BOTH\");\n setUserFilterPreference((prev) => {\n return {\n ...prev,\n status: \"BOTH\",\n };\n });\n } else {\n showToast({ message: \"No users found\", type: \"warning\" });\n }\n }}\n />\n\n <CustomStatsComponent\n title=\"Active Users\"\n value={userStats?.active_count || 0}\n icon={faCheckCircle}\n bottomIndicator={activeUserColor}\n selected={status === \"ACTIVE\" && adminRoleIdsStats.length === 0}\n selectedBgColor={activeUserColor}\n selectedTitleColor={whiteColor}\n selectedValueColor={whiteColor}\n onClick={() => {\n if (userStats?.active_count > 0) {\n setAdminRoleIdsStats([]);\n setStatus(\"ACTIVE\");\n setUserFilterPreference((prev) => {\n return {\n ...prev,\n status: \"ACTIVE\",\n };\n });\n } else {\n showToast({\n message: \"No active users found\",\n type: \"warning\",\n });\n }\n }}\n />\n\n <CustomStatsComponent\n title=\"Inactive Users\"\n value={userStats?.inactive_count || 0}\n icon={faTimesCircle}\n bottomIndicator={inactiveUserColor}\n selected={status === \"INACTIVE\" && adminRoleIdsStats.length === 0}\n selectedBgColor={inactiveUserColor}\n selectedTitleColor={whiteColor}\n selectedValueColor={whiteColor}\n onClick={() => {\n if (userStats?.inactive_count > 0) {\n setAdminRoleIdsStats([]);\n setStatus(\"INACTIVE\");\n setUserFilterPreference((prev) => {\n return {\n ...prev,\n status: \"INACTIVE\",\n };\n });\n } else {\n showToast({\n message: \"No inactive users found\",\n type: \"warning\",\n });\n }\n }}\n />\n\n <CustomStatsComponent\n title=\"Admins\"\n value={userStats?.admin_role_count || 0}\n icon={faUserShield}\n bottomIndicator={adminUserColor}\n selected={adminRoleIdsStats.length > 0}\n selectedBgColor={adminUserColor}\n selectedTitleColor={whiteColor}\n selectedValueColor={whiteColor}\n onClick={() => {\n if (userStats?.admin_role_count > 0) {\n setStatus(\"BOTH\");\n setUserFilterPreference((prev) => {\n return {\n ...prev,\n status: \"BOTH\",\n };\n });\n setAdminRoleIdsStats(adminRolesIds);\n } else {\n showToast({\n message: \"No active users found\",\n type: \"warning\",\n });\n }\n }}\n />\n </div>\n )}\n </UserStatsSkeleton>\n\n <CustomizedTable\n columns={columns}\n tableData={updatedData}\n actions={getActions}\n paginationConfig={{\n pagination: true,\n paginationType: \"infinite-scroll\",\n rowsPerPageInTable: pageSize,\n hasMore,\n loadMore: () => hasMore && fetchNextPage({ cancelRefetch: false }),\n }}\n styleConfig={{ cellStyle: { maxLines: 2 } }}\n isLoading={usersData ? isLoading : true}\n handleSort={handleSort}\n dataTestId=\"userlist-table-customized\"\n />\n <SideOverlay\n title=\"User Filter\"\n resetButtonLabel=\"Reset\"\n onResetClick={resetFilter}\n FormBody={UserFilterForm}\n handleOverlayState={handleOverlayState}\n overlayOpen={overlayOpen}\n dataTestId=\"userlist-overlay-filter\"\n formProps={{\n setAdminRoleIdsStats,\n setIsLoading,\n isLoading,\n setLocationId,\n setRoleDetails,\n roleDetails,\n status,\n setStatus,\n setSelectedLocation,\n selectedLocation,\n filterRequired,\n setFilterRequired,\n setUserFilterPreference,\n user,\n userFilterPreference,\n locationIdRef,\n setSelectedLocationId,\n resetLocationDirective,\n setResetLocationDirective,\n locations,\n setLocations,\n }}\n />\n </Grid>\n );\n}\n"],"names":["LocationSelectionComponent","lazy","UserFilterForm","handleOverlayState","setIsLoading","isLoading","setLocationId","setRoleDetails","roleDetails","status","setStatus","selectedLocation","setSelectedLocation","filterRequired","setUserFilterPreference","user","setFilterRequired","locationIdRef","locations","setLocations","setAdminRoleIdsStats","roles","setRoles","useState","trackEvent","useTrackEvent","translate","useTranslateProvider","methods","useForm","dispatch","useDispatch","location","useLocation","control","handleSubmit","errors","getValues","setValue","clearErrors","loadInitialData","data","getRoles","_a","_b","_c","_d","error","useEffect","onSubmit","cur","searchObject","selectedLocationId","selectedRole","item","setUserDetails","showToast","jsx","FormProvider","jsxs","Grid","event","UserFilterFormSwitchButtonSkeleton","InputLabel","Switch","e","Suspense","implementationConfig","UserFilterFormSkeleton","CustomDropdown","Button","PropTypes","formatAadhaarNumber","value","digits","parts","i","isValidAadhaar","aadhaar","clean","CreateAbhaModal","open","onClose","mode","onSuccess","step","setStep","currentMode","setCurrentMode","aadhaarNumber","setAadhaarNumber","consentAccepted","setConsentAccepted","otp","setOtp","mobileNumber","setMobileNumber","txnId","setTxnId","txnMessage","setTxnMessage","createdProfile","setCreatedProfile","existingDetail","setExistingDetail","loading","setLoading","viewLoading","setViewLoading","errorMessage","setErrorMessage","timer","setTimer","canResend","setCanResend","timerRef","useRef","targetUserId","useMemo","userDisplayName","fetchExistingDetails","userId","idToUse","response","getUserHealthIdDetails","err","hasExistingAbha","effectiveMode","t","handleGenerateOtp","rawAadhaar","generateUserAadhaarOtp","newTxnId","message","msg","handleResendOtp","handleVerifyOtpAndCreate","cleanOtp","cleanMobile","createUserAbhaUsingAadhaarOtp","profile","handleCopy","text","label","activeCardData","isAadhaarComplete","Modal","Box","Paper","BadgeRoundedIcon","Typography","IconButton","CloseRoundedIcon","CheckRoundedIcon","CheckCircleRoundedIcon","Alert","CircularProgress","Chip","VerifiedUserRoundedIcon","Tooltip","ContentCopyRoundedIcon","ShieldRoundedIcon","QrCode2RoundedIcon","LocationOnRoundedIcon","TextField","formatted","InputAdornment","FingerprintRoundedIcon","FormControlLabel","Checkbox","PhoneIphoneRoundedIcon","RefreshRoundedIcon","val","KeyRoundedIcon","Fragment","ArrowBackRoundedIcon","UserList","navigate","useNavigate","adminRolesIds","setAdminRolesId","totalUserColor","activeUserColor","inactiveUserColor","adminUserColor","whiteColor","adminRoleIdsStats","rolesIds","setRolesIds","userStats","setUserStats","userStatsLoading","setUserStatsLoading","theme","useTheme","isDark","openModel","setOpenModel","rights","setRights","rightsRef","row","setRow","search","setSearch","debounceSearch","setDebounceSearch","usersData","setUsersData","hasMore","setHasMore","overlayOpen","setOverlayOpen","openAbhaModal","setOpenAbhaModal","abhaModalMode","setAbhaModalMode","selectedAbhaUser","setSelectedAbhaUser","implementationConfigState","useSelector","state","isCreateAbhaEnabled","canCreateAbha","handleAbhaSuccess","useCallback","healthId","healthIdNumber","prevUsers","u","GeneralUtil","sortConfig","setSortConfig","toggle","setToggle","pageSize","locationId","setSelectedLocationId","_e","_f","_g","userFilterPreference","_h","resetLocationDirective","setResetLocationDirective","updatedData","index","name","execute","defaultColumns","alpha","n","FontAwesomeIcon","faPhone","formattedArea","faHospital","isActive","columns","setColumns","handleClickStatusModal","is_active","toggleUserStatus","errorCode","handleClickGenerateSOHModal","generateSOHCode","users","handleEditUser","getActions","faPen","faBars","handleSort","column","newOrder","prev","col","loadMoreData","pageParam","initialLoad","getUsersList","pageData","fetchNextPage","hasNextPage","usePagination","isInitial","adminIds","role","allIds","featureJson","getAssignedFeatures","parsedRights","allUsers","getAllUser","offset","hasMoreUsers","currentBatch","processAndDownloadExcel","now","month","fileName","worksheet","XLSX.utils","headerStyle","range","C","cell","workbook","excelBuffer","XLSX.write","blob","blobSizeInMB","saveAs","disableExcel","setDisableExcel","downloadExcel","userList","taskDetails","areaOfIntervention","processedUser","key","downloadPdf","useDownloadPdf","disablePdf","setDisablePdf","handleDownloadPdf","pdfColumns","pdfKeys","resetFilter","Card","CustomConfirmationModal","UserListSkeleton","faFilePdf","faFileExcel","UserStatsSkeleton","CustomStatsComponent","faUsers","faCheckCircle","faTimesCircle","faUserShield","CustomizedTable","SideOverlay"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { api as t } from "@/common/interceptors/AxiosInterceptor";
|
|
2
|
+
const n = (e) => t.get("user/retrievebycriteria", { params: e, showLoader: !1 }), d = (e, a) => t.put("user/toggle", e, { params: a }), g = (e) => t.post("user", e), i = (e) => t.get("user/generateLoginCode", { params: e }), c = (e, a) => t.get("role/byroleid", { params: e, ...a }), l = (e, a) => t.get("location/byroleid", { params: e, ...a }), u = (e) => t.get(`user?userId=${e}`), h = (e) => t.get("translation/activeLanguages", { params: e }), p = (e) => t.get("location/locationtypes", { params: e }), f = ({ action: e, ...a }) => t.get(`user/${e}`, { params: { ...a }, showLoader: !1 }), m = (e) => {
|
|
3
|
+
const a = {
|
|
4
|
+
withCredentials: !0,
|
|
5
|
+
headers: { "X-Key-Token": sessionStorage.getItem("keyToken") || "" }
|
|
6
|
+
};
|
|
7
|
+
return t.put("user/changepassword", e, a);
|
|
8
|
+
}, $ = ({ locationIds: e, roleId: a, toBeAdded: s }) => e ? t.get(
|
|
9
|
+
`user/validateaoi?locationIds=${e}&roleId=${a}&toBeAdded=${s}`
|
|
10
|
+
) : t.get(`user/validateaoi?roleId=${a}&toBeAdded=${s}`), y = (e, a) => t.get(
|
|
11
|
+
`user/validateHealthInfra?healthInfraIds=${e}&toBeRemoved=${a}`
|
|
12
|
+
), I = (e, a) => {
|
|
13
|
+
const s = new FormData();
|
|
14
|
+
return s.append("userName", e), s.append("file", a), t.post("/doctors/signature", s, {
|
|
15
|
+
headers: {
|
|
16
|
+
"Content-Type": "multipart/form-data"
|
|
17
|
+
}
|
|
18
|
+
}).then((r) => r.data);
|
|
19
|
+
}, v = (e) => t.get(`/doctors/signature?doctorId=${e}`, {
|
|
20
|
+
responseType: "arraybuffer"
|
|
21
|
+
// <-- important
|
|
22
|
+
}).then((a) => a.data), U = (e) => t.post("ndhm/userhealthid/create/generate-aadhaar-otp", e), D = (e) => t.post("ndhm/userhealthid/create/aadhaar-otp", e), L = (e) => t.get(`ndhm/userhealthid/create/details/${e}`);
|
|
23
|
+
export {
|
|
24
|
+
L as a,
|
|
25
|
+
U as b,
|
|
26
|
+
D as c,
|
|
27
|
+
i as d,
|
|
28
|
+
n as e,
|
|
29
|
+
h as f,
|
|
30
|
+
c as g,
|
|
31
|
+
u as h,
|
|
32
|
+
l as i,
|
|
33
|
+
v as j,
|
|
34
|
+
f as k,
|
|
35
|
+
p as l,
|
|
36
|
+
y as m,
|
|
37
|
+
I as n,
|
|
38
|
+
m as o,
|
|
39
|
+
d as t,
|
|
40
|
+
g as u,
|
|
41
|
+
$ as v
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Users-MC7txo1V.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Users-
|
|
1
|
+
{"version":3,"file":"Users-MC7txo1V.js","sources":["../src/services/Users.js"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getUsersList = (params) =>\n api.get(\"user/retrievebycriteria\", { params, showLoader: false });\n\n// Fetch users by id (not role-scoped) — used to enrich analytics rows.\nexport const getUsersByIds = (ids) =>\n api.get(\"user/ids\", { params: { userIds: (ids || []).join(\",\") }, showLoader: false });\n\nexport const toggleUserStatus = (data, params) =>\n api.put(\"user/toggle\", data, { params });\n\nexport const updateUser = (data) => api.post(\"user\", data);\n\nexport const generateSOHCode = (params) =>\n api.get(\"user/generateLoginCode\", { params });\n\nexport const getRoles = (params, config) =>\n api.get(\"role/byroleid\", { params, ...config });\n\nexport const getRoleDetails = (params, config) =>\n api.get(\"location/byroleid\", { params, ...config });\nexport const getUserDetails = (params) => api.get(`user?userId=${params}`);\n\nexport const getPreferredLanguage = (params) =>\n api.get(\"translation/activeLanguages\", { params });\n\nexport const getBankNamesForPBI = (params) =>\n api.post(\"resource/getdatabycode\", params);\n\nexport const getLocationTypes = (params) =>\n api.get(\"location/locationtypes\", { params });\n\nexport const getLocation = (params) =>\n api.get(\"location/hierarchy\", { params });\n\nexport const checkBankAccountNumberExist = (params) =>\n api.post(\"resource/getdatabycode\", {\n params: { ...params },\n showLoader: false,\n });\n\n// export const retrieveInfraByRoleLocation = (params) =>\n// api.post(\"resource/getdatabycode\", params);\n\nexport const checkUserAction = ({ action, ...params }) =>\n api.get(`user/${action}`, { params: { ...params }, showLoader: false });\n\n// export const getResource = (params) => api.post(`resource/getdatabycode`, params, { showLoader: false });\n\nexport const changePassword = (params) => {\n const config = { \n withCredentials: true,\n headers: { 'X-Key-Token': sessionStorage.getItem('keyToken') || '' }\n };\n return api.put('user/changepassword', params, config);\n};\n\nexport const validateAOI = ({ locationIds, roleId, toBeAdded }) => {\n if (locationIds)\n return api.get(\n `user/validateaoi?locationIds=${locationIds}&roleId=${roleId}&toBeAdded=${toBeAdded}`,\n );\n else\n return api.get(`user/validateaoi?roleId=${roleId}&toBeAdded=${toBeAdded}`);\n};\n\nexport const validateHealthInfra = (infraid, id) =>\n api.get(\n `user/validateHealthInfra?healthInfraIds=${infraid}&toBeRemoved=${id}`,\n );\n\nexport const retrieveById = (userId) => api.get(`user/${userId}`);\n\nexport const retrieveByUserId = (userId) => api.get(`user/${userId}`);\n\nexport const uploadDoctorSignature = (userName, file) => {\n const formData = new FormData();\n formData.append(\"userName\", userName);\n formData.append(\"file\", file);\n\n return api\n .post(\"/doctors/signature\", formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then((res) => res.data);\n};\n\nexport const getDoctorSignature = (id) => {\n return api\n .get(`/doctors/signature?doctorId=${id}`, {\n responseType: \"arraybuffer\", // <-- important\n })\n .then((res) => res.data);\n};\n\nexport const generateUserAadhaarOtp = (data) =>\n api.post(\"ndhm/userhealthid/create/generate-aadhaar-otp\", data);\n\nexport const createUserAbhaUsingAadhaarOtp = (data) =>\n api.post(\"ndhm/userhealthid/create/aadhaar-otp\", data);\n\nexport const getUserHealthIdDetails = (userId) =>\n api.get(`ndhm/userhealthid/create/details/${userId}`);\n\n"],"names":["getUsersList","params","api","toggleUserStatus","data","updateUser","generateSOHCode","getRoles","config","getRoleDetails","getUserDetails","getPreferredLanguage","getLocationTypes","checkUserAction","action","changePassword","validateAOI","locationIds","roleId","toBeAdded","validateHealthInfra","infraid","id","uploadDoctorSignature","userName","file","formData","res","getDoctorSignature","generateUserAadhaarOtp","createUserAbhaUsingAadhaarOtp","getUserHealthIdDetails","userId"],"mappings":";AAEY,MAACA,IAAe,CAACC,MAC3BC,EAAI,IAAI,2BAA2B,EAAE,QAAAD,GAAQ,YAAY,GAAK,CAAE,GAMrDE,IAAmB,CAACC,GAAMH,MACrCC,EAAI,IAAI,eAAeE,GAAM,EAAE,QAAAH,EAAM,CAAE,GAE5BI,IAAa,CAACD,MAASF,EAAI,KAAK,QAAQE,CAAI,GAE5CE,IAAkB,CAACL,MAC9BC,EAAI,IAAI,0BAA0B,EAAE,QAAAD,EAAM,CAAE,GAEjCM,IAAW,CAACN,GAAQO,MAC/BN,EAAI,IAAI,iBAAiB,EAAE,QAAAD,GAAQ,GAAGO,EAAM,CAAE,GAEnCC,IAAiB,CAACR,GAAQO,MACrCN,EAAI,IAAI,qBAAqB,EAAE,QAAAD,GAAQ,GAAGO,EAAM,CAAE,GACvCE,IAAiB,CAACT,MAAWC,EAAI,IAAI,eAAeD,CAAM,EAAE,GAE5DU,IAAuB,CAACV,MACnCC,EAAI,IAAI,+BAA+B,EAAE,QAAAD,EAAM,CAAE,GAKtCW,IAAmB,CAACX,MAC/BC,EAAI,IAAI,0BAA0B,EAAE,QAAAD,EAAM,CAAE,GAcjCY,IAAkB,CAAC,EAAE,QAAAC,GAAQ,GAAGb,EAAM,MACjDC,EAAI,IAAI,QAAQY,CAAM,IAAI,EAAE,QAAQ,EAAE,GAAGb,KAAU,YAAY,GAAK,CAAE,GAI3Dc,IAAiB,CAACd,MAAW;AACxC,QAAMO,IAAS;AAAA,IACb,iBAAiB;AAAA,IACjB,SAAS,EAAE,eAAe,eAAe,QAAQ,UAAU,KAAK,GAAE;AAAA,EACtE;AACE,SAAON,EAAI,IAAI,uBAAuBD,GAAQO,CAAM;AACtD,GAEaQ,IAAc,CAAC,EAAE,aAAAC,GAAa,QAAAC,GAAQ,WAAAC,EAAS,MACtDF,IACKf,EAAI;AAAA,EACT,gCAAgCe,CAAW,WAAWC,CAAM,cAAcC,CAAS;AACzF,IAEWjB,EAAI,IAAI,2BAA2BgB,CAAM,cAAcC,CAAS,EAAE,GAGhEC,IAAsB,CAACC,GAASC,MAC3CpB,EAAI;AAAA,EACF,2CAA2CmB,CAAO,gBAAgBC,CAAE;AACxE,GAMaC,IAAwB,CAACC,GAAUC,MAAS;AACvD,QAAMC,IAAW,IAAI,SAAQ;AAC7B,SAAAA,EAAS,OAAO,YAAYF,CAAQ,GACpCE,EAAS,OAAO,QAAQD,CAAI,GAErBvB,EACJ,KAAK,sBAAsBwB,GAAU;AAAA,IACpC,SAAS;AAAA,MACP,gBAAgB;AAAA,IACxB;AAAA,EACA,CAAK,EACA,KAAK,CAACC,MAAQA,EAAI,IAAI;AAC3B,GAEaC,IAAqB,CAACN,MAC1BpB,EACJ,IAAI,+BAA+BoB,CAAE,IAAI;AAAA,EACxC,cAAc;AAAA;AACpB,CAAK,EACA,KAAK,CAACK,MAAQA,EAAI,IAAI,GAGdE,IAAyB,CAACzB,MACrCF,EAAI,KAAK,iDAAiDE,CAAI,GAEnD0B,IAAgC,CAAC1B,MAC5CF,EAAI,KAAK,wCAAwCE,CAAI,GAE1C2B,IAAyB,CAACC,MACrC9B,EAAI,IAAI,oCAAoC8B,CAAM,EAAE;"}
|