@djb25/digit-ui-module-ekyc 1.0.28 → 1.0.30
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/index.js +1 -1
- package/package.json +1 -1
- package/src/components/AssignEkyc.js +1 -1
- package/src/components/AssignEkycModal.js +149 -31
- package/src/components/DesktopInbox.js +1 -1
- package/src/components/Review.js +2 -2
- package/src/components/SearchFormFieldsComponent.js +32 -20
- package/src/components/SurveyorDetailsCard.js +10 -9
- package/src/config/MeterDetailsConfig.js +2 -2
- package/src/hook/useInboxTableConfig.js +1 -1
- package/src/pages/citizen/Home.js +1 -1
- package/src/pages/citizen/Inbox.js +3 -3
- package/src/pages/employee/Inbox.js +3 -3
- package/src/utils/reportDownloader.js +16 -1
package/package.json
CHANGED
|
@@ -77,7 +77,7 @@ const AssignEkyc = () => {
|
|
|
77
77
|
|
|
78
78
|
const SearchFormFields = useCallback(
|
|
79
79
|
({ registerRef, searchFormState, controlSearchForm }) => (
|
|
80
|
-
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} className="search" />
|
|
80
|
+
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} searchType="mobile" className="search" />
|
|
81
81
|
),
|
|
82
82
|
[]
|
|
83
83
|
);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React, { useMemo, useState, useEffect } from "react";
|
|
2
2
|
import { Modal, Close, Table, Toast } from "@djb25/digit-ui-react-components";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
3
4
|
|
|
4
5
|
const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
6
|
+
const { t } = useTranslation();
|
|
5
7
|
const [selectedKnos, setSelectedKnos] = useState([]);
|
|
6
8
|
const [isBulkSelection, setIsBulkSelection] = useState(false);
|
|
7
9
|
const [currentPage, setCurrentPage] = useState(0);
|
|
@@ -14,6 +16,7 @@ const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
|
14
16
|
const [filters, setFilters] = useState({
|
|
15
17
|
kno: "", // search value
|
|
16
18
|
pincode: "",
|
|
19
|
+
zoneCode: "",
|
|
17
20
|
zoneName: "",
|
|
18
21
|
ward: "",
|
|
19
22
|
assembly: "",
|
|
@@ -23,6 +26,95 @@ const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
|
23
26
|
|
|
24
27
|
const [debouncedFilters, setDebouncedFilters] = useState(filters);
|
|
25
28
|
|
|
29
|
+
const { data: zroLocationsData, isLoading: isZroLoading } = Digit.Hooks.ws.useWSConfigMDMS.ZROLocation("dl.djb");
|
|
30
|
+
const mappedZROLocation = useMemo(() => {
|
|
31
|
+
return (zroLocationsData || []).map((item) => ({
|
|
32
|
+
code: item.code,
|
|
33
|
+
name: item.name,
|
|
34
|
+
}));
|
|
35
|
+
}, [zroLocationsData]);
|
|
36
|
+
|
|
37
|
+
const { data: egovLocationData } = Digit.Hooks.useCommonMDMS("dl.djb", "egov-location", ["TenantBoundary"]);
|
|
38
|
+
|
|
39
|
+
const boundaryData = useMemo(() => {
|
|
40
|
+
const tenantBoundary = egovLocationData?.["egov-location"]?.TenantBoundary || [];
|
|
41
|
+
const revenueData = tenantBoundary.find((item) => item?.hierarchyType?.code === "REVENUE");
|
|
42
|
+
const boundary = revenueData?.boundary || [];
|
|
43
|
+
return Array.isArray(boundary) ? boundary : [boundary];
|
|
44
|
+
}, [egovLocationData]);
|
|
45
|
+
|
|
46
|
+
const { assemblyOptions, wardOptions } = useMemo(() => {
|
|
47
|
+
const assemblies = new Map();
|
|
48
|
+
const wards = new Map();
|
|
49
|
+
|
|
50
|
+
const boundaries = Array.isArray(boundaryData) ? boundaryData : boundaryData ? [boundaryData] : [];
|
|
51
|
+
|
|
52
|
+
const traverse = (node) => {
|
|
53
|
+
if (!node) return;
|
|
54
|
+
if (node.label === "Ward" || node.label === "WARD" || node.label === "Block" || node.label === "BLOCK") {
|
|
55
|
+
const code = node.code || node.localname || node.name;
|
|
56
|
+
const name = node.name || node.localname || code;
|
|
57
|
+
if (code) wards.set(code, { code, name: name });
|
|
58
|
+
}
|
|
59
|
+
if (node.label === "Assembly Constituency" || node.label === "ASSEMBLY_CONSTITUENCY") {
|
|
60
|
+
const code = node.code || node.localname || node.name;
|
|
61
|
+
const name = node.name || node.localname || code;
|
|
62
|
+
if (code) assemblies.set(code, { code, name: name });
|
|
63
|
+
}
|
|
64
|
+
if (node.children && node.children.length > 0) {
|
|
65
|
+
node.children.forEach(traverse);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
boundaries.forEach(traverse);
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
assemblyOptions: Array.from(assemblies.values()).sort((a, b) => a.name.localeCompare(b.name)),
|
|
73
|
+
wardOptions: Array.from(wards.values()).sort((a, b) => a.name.localeCompare(b.name)),
|
|
74
|
+
};
|
|
75
|
+
}, [boundaryData]);
|
|
76
|
+
|
|
77
|
+
const structuredLocalityData = useMemo(() => {
|
|
78
|
+
let localities = [];
|
|
79
|
+
const boundaries = Array.isArray(boundaryData) ? boundaryData : boundaryData ? [boundaryData] : [];
|
|
80
|
+
|
|
81
|
+
const extractLocalities = (node) => {
|
|
82
|
+
if (!node) return;
|
|
83
|
+
|
|
84
|
+
if (node.label === "Locality" || node.label === "LOCALITY") {
|
|
85
|
+
localities.push({
|
|
86
|
+
...node,
|
|
87
|
+
name: node.localname || node.name || node.code,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (node.children && node.children.length > 0) {
|
|
91
|
+
node.children.forEach((child) => extractLocalities(child));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
boundaries.forEach((rootNode) => extractLocalities(rootNode));
|
|
96
|
+
|
|
97
|
+
return localities;
|
|
98
|
+
}, [boundaryData]);
|
|
99
|
+
|
|
100
|
+
const fetchedPincodes = useMemo(() => {
|
|
101
|
+
const pinSet = new Set();
|
|
102
|
+
|
|
103
|
+
structuredLocalityData.forEach((loc) => {
|
|
104
|
+
if (loc.pincode) {
|
|
105
|
+
const pins = Array.isArray(loc.pincode) ? loc.pincode : [loc.pincode];
|
|
106
|
+
pins.forEach((p) => {
|
|
107
|
+
if (p) {
|
|
108
|
+
const sanitizedPin = p.toString().split(".")[0];
|
|
109
|
+
pinSet.add(sanitizedPin);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
return Array.from(pinSet).sort();
|
|
116
|
+
}, [structuredLocalityData]);
|
|
117
|
+
|
|
26
118
|
useEffect(() => {
|
|
27
119
|
const timer = setTimeout(() => {
|
|
28
120
|
setDebouncedFilters(filters);
|
|
@@ -33,13 +125,18 @@ const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
|
33
125
|
|
|
34
126
|
useEffect(() => {
|
|
35
127
|
setCurrentPage(0);
|
|
36
|
-
}, [debouncedFilters]);
|
|
128
|
+
}, [debouncedFilters, filters.kno]);
|
|
37
129
|
|
|
38
130
|
const { data: applicationData, isFetching: isLoading } = Digit.Hooks.ekyc.useEkycApplicationList(
|
|
39
131
|
{
|
|
132
|
+
/*
|
|
40
133
|
...(debouncedFilters.kno && {
|
|
41
134
|
kno: debouncedFilters.kno,
|
|
42
135
|
}),
|
|
136
|
+
*/
|
|
137
|
+
...(filters.kno && {
|
|
138
|
+
kno: filters.kno,
|
|
139
|
+
}),
|
|
43
140
|
|
|
44
141
|
...(debouncedFilters.ekycStatus && {
|
|
45
142
|
ekycStatus: debouncedFilters.ekycStatus,
|
|
@@ -237,44 +334,65 @@ const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
|
237
334
|
<div className="filters-grid">
|
|
238
335
|
<input className="form-control" placeholder="KNO" value={filters.kno} onChange={(e) => handleFilterChange("kno", e.target.value)} />
|
|
239
336
|
|
|
240
|
-
<
|
|
337
|
+
<select
|
|
241
338
|
className="form-control"
|
|
242
|
-
placeholder="Pincode"
|
|
243
339
|
value={filters.pincode}
|
|
244
340
|
onChange={(e) => handleFilterChange("pincode", e.target.value)}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
341
|
+
>
|
|
342
|
+
<option value="">Select Pincode</option>
|
|
343
|
+
{fetchedPincodes.map((pin) => (
|
|
344
|
+
<option key={pin} value={pin}>
|
|
345
|
+
{pin}
|
|
346
|
+
</option>
|
|
347
|
+
))}
|
|
348
|
+
</select>
|
|
349
|
+
|
|
350
|
+
<select
|
|
248
351
|
className="form-control"
|
|
249
|
-
placeholder="Zone"
|
|
250
352
|
value={filters.zoneName}
|
|
251
|
-
onChange={(e) =>
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
key: "zoneCode",
|
|
259
|
-
}}
|
|
260
|
-
formData={{
|
|
261
|
-
zoneIds: filters.zoneCode ? [{ code: filters.zoneCode, name: filters.zoneName }] : [],
|
|
262
|
-
}}
|
|
263
|
-
onSelect={(key, value) => {
|
|
264
|
-
console.log(value);
|
|
265
|
-
handleFilterChange("zoneName", value);
|
|
353
|
+
onChange={(e) => {
|
|
354
|
+
const val = e.target.value;
|
|
355
|
+
setFilters((prev) => ({
|
|
356
|
+
...prev,
|
|
357
|
+
zoneCode: val,
|
|
358
|
+
zoneName: val,
|
|
359
|
+
}));
|
|
266
360
|
}}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
361
|
+
disabled={isZroLoading}
|
|
362
|
+
>
|
|
363
|
+
<option value="">{isZroLoading ? "Loading ZRO Locations..." : "Select ZRO Location"}</option>
|
|
364
|
+
{mappedZROLocation.map((loc) => (
|
|
365
|
+
<option key={loc.code} value={loc.name}>
|
|
366
|
+
{loc.name}
|
|
367
|
+
</option>
|
|
368
|
+
))}http://localhost:3000/digit-ui/employee/ekyc/assign
|
|
369
|
+
</select>
|
|
370
|
+
|
|
371
|
+
<select
|
|
372
|
+
className="form-control"
|
|
373
|
+
value={filters.ward}
|
|
374
|
+
onChange={(e) => handleFilterChange("ward", e.target.value)}
|
|
375
|
+
>
|
|
376
|
+
<option value="">Select Ward</option>
|
|
377
|
+
{wardOptions.map((ward) => (
|
|
378
|
+
<option key={ward.code} value={ward.name}>
|
|
379
|
+
{ward.name}
|
|
380
|
+
</option>
|
|
381
|
+
))}
|
|
382
|
+
</select>
|
|
383
|
+
|
|
384
|
+
<select
|
|
273
385
|
className="form-control"
|
|
274
|
-
placeholder="Assembly"
|
|
275
386
|
value={filters.assembly}
|
|
276
387
|
onChange={(e) => handleFilterChange("assembly", e.target.value)}
|
|
277
|
-
|
|
388
|
+
>
|
|
389
|
+
<option value="">Select Assembly</option>
|
|
390
|
+
{assemblyOptions.map((assembly) => (
|
|
391
|
+
<option key={assembly.code} value={assembly.name}>
|
|
392
|
+
{assembly.name}
|
|
393
|
+
</option>
|
|
394
|
+
))}
|
|
395
|
+
</select>
|
|
278
396
|
|
|
279
397
|
<input className="form-control" placeholder="MR Key" value={filters.mrkey} onChange={(e) => handleFilterChange("mrkey", e.target.value)} />
|
|
280
398
|
|
|
@@ -283,7 +401,7 @@ const AssignEkycModal = ({ surveyor, closeModal, refetchDashboard }) => {
|
|
|
283
401
|
<option value="PENDING">Pending</option>
|
|
284
402
|
<option value="APPROVED">Approved</option>
|
|
285
403
|
<option value="REJECTED">Rejected</option>
|
|
286
|
-
</select>
|
|
404
|
+
</select>
|
|
287
405
|
</div>
|
|
288
406
|
|
|
289
407
|
{/* Table */}
|
|
@@ -80,7 +80,7 @@ const DesktopInbox = ({ tableConfig, filterComponent, ...props }) => {
|
|
|
80
80
|
Header: t("EKYC_EKYC_STATUS"),
|
|
81
81
|
accessor: "ekycStatus",
|
|
82
82
|
Cell: ({ row }) => {
|
|
83
|
-
const ekycStatus = row.original?.ekycStatus || row.original?.ekycstatus || "NA";
|
|
83
|
+
const ekycStatus = (row.original?.ekycStatus || row.original?.ekycstatus || "NA").toUpperCase();
|
|
84
84
|
return <span className={`ekyc-status-tag ${ekycStatus}`}>{t(`${ekycStatus}`)}</span>
|
|
85
85
|
}
|
|
86
86
|
},
|
package/src/components/Review.js
CHANGED
|
@@ -177,8 +177,8 @@ const Review = () => {
|
|
|
177
177
|
const [toastData, setToastData] = useState({ error: false, label: "" });
|
|
178
178
|
|
|
179
179
|
const options = [
|
|
180
|
-
{ action: t("
|
|
181
|
-
{ action: t("
|
|
180
|
+
{ action: t("APPROVE") },
|
|
181
|
+
{ action: t("REJECT") }
|
|
182
182
|
];
|
|
183
183
|
|
|
184
184
|
const flowState = location.state || {};
|
|
@@ -3,17 +3,46 @@ import { Controller } from "react-hook-form";
|
|
|
3
3
|
import { CardLabelError, TextInput, CustomTooltip, Label } from "@djb25/digit-ui-react-components";
|
|
4
4
|
import { useTranslation } from "react-i18next";
|
|
5
5
|
|
|
6
|
-
const SearchFormFieldsComponents = ({ searchFormState, controlSearchForm }) => {
|
|
6
|
+
const SearchFormFieldsComponents = ({ searchFormState, controlSearchForm, searchType }) => {
|
|
7
7
|
const { t } = useTranslation();
|
|
8
8
|
const { errors } = searchFormState;
|
|
9
9
|
|
|
10
|
+
if (searchType === "mobile") {
|
|
11
|
+
return (
|
|
12
|
+
<React.Fragment>
|
|
13
|
+
{/* MOBILE NUMBER */}
|
|
14
|
+
<span className="mobile-input">
|
|
15
|
+
<Label className="flex-roww flex-gap-2">
|
|
16
|
+
{t("ES_COMMON_MOBILE_NUM") || "Mobile Number"}
|
|
17
|
+
<CustomTooltip message={t("EKYC_MOBILE_NUMBER_MESSAGE")} />
|
|
18
|
+
</Label>
|
|
19
|
+
|
|
20
|
+
<Controller
|
|
21
|
+
name="mobileNumber"
|
|
22
|
+
control={controlSearchForm}
|
|
23
|
+
defaultValue=""
|
|
24
|
+
rules={{
|
|
25
|
+
pattern: {
|
|
26
|
+
value: /^[6-9]\d{9}$/,
|
|
27
|
+
message: t("ERR_INVALID_MOBILE_NUMBER"),
|
|
28
|
+
},
|
|
29
|
+
}}
|
|
30
|
+
render={({ onChange, value }) => <TextInput value={value || ""} onChange={(e) => onChange(e.target.value)} />}
|
|
31
|
+
/>
|
|
32
|
+
|
|
33
|
+
{errors?.mobileNumber && <CardLabelError>{errors.mobileNumber.message}</CardLabelError>}
|
|
34
|
+
</span>
|
|
35
|
+
</React.Fragment>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
10
39
|
return (
|
|
11
40
|
<React.Fragment>
|
|
12
|
-
{/*
|
|
41
|
+
{/* K NUMBER (KNO) */}
|
|
13
42
|
<span className="mobile-input">
|
|
14
43
|
<Label className="flex-roww flex-gap-2">
|
|
15
44
|
{t("EKYC_K.NUMBER") || "K Number"}
|
|
16
|
-
<CustomTooltip message={t("
|
|
45
|
+
<CustomTooltip message={t("EKYC_K.NUMBER_MESSAGE")} />
|
|
17
46
|
</Label>
|
|
18
47
|
|
|
19
48
|
<Controller
|
|
@@ -31,23 +60,6 @@ const SearchFormFieldsComponents = ({ searchFormState, controlSearchForm }) => {
|
|
|
31
60
|
|
|
32
61
|
{errors?.kNumber && <CardLabelError>{errors.kNumber.message}</CardLabelError>}
|
|
33
62
|
</span>
|
|
34
|
-
|
|
35
|
-
{/* K NAME */}
|
|
36
|
-
{/* <span className="mobile-input">
|
|
37
|
-
<Label className="flex-roww flex-gap-2">
|
|
38
|
-
{t("EKYC_K_NAME") || "K Name"}
|
|
39
|
-
<CustomTooltip message={t("EKYC_K_NAME_MESSAGE")} />
|
|
40
|
-
</Label>
|
|
41
|
-
|
|
42
|
-
<Controller
|
|
43
|
-
name="kName"
|
|
44
|
-
control={controlSearchForm}
|
|
45
|
-
defaultValue=""
|
|
46
|
-
render={({ onChange, value }) => <TextInput value={value || ""} onChange={(e) => onChange(e.target.value)} />}
|
|
47
|
-
/>
|
|
48
|
-
|
|
49
|
-
{errors?.kName && <CardLabelError>{errors.kName.message}</CardLabelError>}
|
|
50
|
-
</span> */}
|
|
51
63
|
</React.Fragment>
|
|
52
64
|
);
|
|
53
65
|
};
|
|
@@ -278,9 +278,10 @@ const SurveyorDetailsDashboard = () => {
|
|
|
278
278
|
|
|
279
279
|
<div className="designation">{surveyor?.description || t("FIELD_SURVEYOR")}</div>
|
|
280
280
|
|
|
281
|
-
<div className="employee-id">
|
|
281
|
+
{/* <div className="employee-id">
|
|
282
282
|
{t("EMPLOYEE_ID")}: {employeeId}
|
|
283
|
-
</div>
|
|
283
|
+
</div> */}
|
|
284
|
+
|
|
284
285
|
</div>
|
|
285
286
|
</div>
|
|
286
287
|
|
|
@@ -373,7 +374,7 @@ const SurveyorDetailsDashboard = () => {
|
|
|
373
374
|
{/* Charts */}
|
|
374
375
|
<div className="charts-wrapper">
|
|
375
376
|
{/* Weekly Chart */}
|
|
376
|
-
<div className="chart-card">
|
|
377
|
+
{/* <div className="chart-card">
|
|
377
378
|
<h3 className="chart-title">{t("WEEKLY_SURVEY_PROGRESS")}</h3>
|
|
378
379
|
|
|
379
380
|
<ResponsiveContainer width="100%" height={300}>
|
|
@@ -389,10 +390,10 @@ const SurveyorDetailsDashboard = () => {
|
|
|
389
390
|
<Bar dataKey="completed" fill="#0B2559" radius={[6, 6, 0, 0]} />
|
|
390
391
|
</BarChart>
|
|
391
392
|
</ResponsiveContainer>
|
|
392
|
-
</div>
|
|
393
|
+
</div> */}
|
|
393
394
|
|
|
394
395
|
{/* Pie Chart */}
|
|
395
|
-
<div className="chart-card">
|
|
396
|
+
{/* <div className="chart-card">
|
|
396
397
|
<h3 className="chart-title">{t("CASE_DISTRIBUTION")}</h3>
|
|
397
398
|
|
|
398
399
|
<ResponsiveContainer width="100%" height={300}>
|
|
@@ -408,7 +409,7 @@ const SurveyorDetailsDashboard = () => {
|
|
|
408
409
|
<Legend />
|
|
409
410
|
</PieChart>
|
|
410
411
|
</ResponsiveContainer>
|
|
411
|
-
</div>
|
|
412
|
+
</div> */}
|
|
412
413
|
</div>
|
|
413
414
|
|
|
414
415
|
{/* Details */}
|
|
@@ -440,8 +441,8 @@ const SurveyorDetailsDashboard = () => {
|
|
|
440
441
|
</div>
|
|
441
442
|
|
|
442
443
|
<div className="detail-item">
|
|
443
|
-
<span className="label">{t("
|
|
444
|
-
<span className="value">{
|
|
444
|
+
<span className="label">{t("VENDOR_NAME") || "Vendor Name"}:</span>
|
|
445
|
+
<span className="value">{vendorName}</span>
|
|
445
446
|
</div>
|
|
446
447
|
</div>
|
|
447
448
|
</div>
|
|
@@ -498,7 +499,7 @@ const SurveyorDetailsDashboard = () => {
|
|
|
498
499
|
/>
|
|
499
500
|
)}
|
|
500
501
|
</ActionBar>
|
|
501
|
-
|
|
502
|
+
|
|
502
503
|
)
|
|
503
504
|
}
|
|
504
505
|
|
|
@@ -110,7 +110,7 @@ const MeterDetailsConfig = (t, formData = {}, uploadPhoto, meterPhoto, meterPhot
|
|
|
110
110
|
|
|
111
111
|
if (meterStatus === "Metered") {
|
|
112
112
|
fields.push({
|
|
113
|
-
label: t("Meter Photo
|
|
113
|
+
label: t("Meter Photo"),
|
|
114
114
|
isMandatory: true,
|
|
115
115
|
type: "custom",
|
|
116
116
|
key: "meterPhoto",
|
|
@@ -201,7 +201,7 @@ const MeterDetailsConfig = (t, formData = {}, uploadPhoto, meterPhoto, meterPhot
|
|
|
201
201
|
// 🔹 Bill-received fields
|
|
202
202
|
if (lastBillReceived === "Yes") {
|
|
203
203
|
fields.push({
|
|
204
|
-
label: t("When was the last bill received
|
|
204
|
+
label: t("When was the last bill received"),
|
|
205
205
|
isMandatory: true,
|
|
206
206
|
type: "custom",
|
|
207
207
|
key: "billMonthYear",
|
|
@@ -66,7 +66,7 @@ const useInboxTableConfig = ({
|
|
|
66
66
|
Header: t("EKYC_EKYC_STATUS"),
|
|
67
67
|
accessor: "ekycStatus",
|
|
68
68
|
Cell: ({ row }) => {
|
|
69
|
-
const ekycStatus = row.original?.ekycStatus || row.original?.ekycstatus || "NA";
|
|
69
|
+
const ekycStatus = (row.original?.ekycStatus || row.original?.ekycstatus || "NA").toUpperCase();
|
|
70
70
|
return <span className={`ekyc-status-tag ${ekycStatus}`}>{t(`${ekycStatus}`)}</span>;
|
|
71
71
|
},
|
|
72
72
|
},
|
|
@@ -15,7 +15,7 @@ const Home = () => {
|
|
|
15
15
|
links: [],
|
|
16
16
|
};
|
|
17
17
|
const citizenInfo = Digit.SessionStorage.get("User")?.info?.roles;
|
|
18
|
-
const roles = citizenInfo.map((ele) => ele.code);
|
|
18
|
+
const roles = Array.isArray(citizenInfo) ? citizenInfo.map((ele) => ele.code) : [];
|
|
19
19
|
|
|
20
20
|
if (roles.includes("EKYC_SURVEYOR")) {
|
|
21
21
|
propsForModuleCard.links.push({
|
|
@@ -88,7 +88,7 @@ const Inbox = ({ parentRoute }) => {
|
|
|
88
88
|
applicationNumber: item.propertyInfo?.kno || "",
|
|
89
89
|
citizenName: item.connectionDetails?.consumerName || "",
|
|
90
90
|
status: item.connectionDetails?.statusflag || "",
|
|
91
|
-
ekycStatus: item.connectionDetails?.ekycStatus || item.connectionDetails?.ekycstatus || item.ekycStatus || item.ekycstatus || "NA",
|
|
91
|
+
ekycStatus: (item.connectionDetails?.ekycStatus || item.connectionDetails?.ekycstatus || item.ekycStatus || item.ekycstatus || "NA").toUpperCase(),
|
|
92
92
|
sla: 0,
|
|
93
93
|
};
|
|
94
94
|
}
|
|
@@ -102,7 +102,7 @@ const Inbox = ({ parentRoute }) => {
|
|
|
102
102
|
applicationNumber: item.kno || item.applicationNumber || "",
|
|
103
103
|
citizenName: item.consumerName || item.citizenName || "",
|
|
104
104
|
status: item.status || "",
|
|
105
|
-
ekycStatus: item.ekycStatus || item.ekycstatus || "NA",
|
|
105
|
+
ekycStatus: (item.ekycStatus || item.ekycstatus || "NA").toUpperCase(),
|
|
106
106
|
sla: item.sla ?? 0,
|
|
107
107
|
};
|
|
108
108
|
});
|
|
@@ -117,7 +117,7 @@ const Inbox = ({ parentRoute }) => {
|
|
|
117
117
|
|
|
118
118
|
const SearchFormFields = useCallback(
|
|
119
119
|
({ registerRef, searchFormState, controlSearchForm }) => (
|
|
120
|
-
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} className="search" />
|
|
120
|
+
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} searchType="kno" className="search" />
|
|
121
121
|
),
|
|
122
122
|
[]
|
|
123
123
|
);
|
|
@@ -87,7 +87,7 @@ const Inbox = ({ parentRoute, businessService = "EKYC", initialStates = {}, filt
|
|
|
87
87
|
applicationNumber: item.propertyInfo?.kno || "",
|
|
88
88
|
citizenName: item.connectionDetails?.consumerName || "",
|
|
89
89
|
status: item.connectionDetails?.statusflag || "",
|
|
90
|
-
ekycStatus: item.connectionDetails?.ekycStatus || item.connectionDetails?.ekycstatus || item.ekycStatus || item.ekycstatus || "NA",
|
|
90
|
+
ekycStatus: (item.connectionDetails?.ekycStatus || item.connectionDetails?.ekycstatus || item.ekycStatus || item.ekycstatus || "NA").toUpperCase(),
|
|
91
91
|
sla: 0,
|
|
92
92
|
};
|
|
93
93
|
}
|
|
@@ -102,7 +102,7 @@ const Inbox = ({ parentRoute, businessService = "EKYC", initialStates = {}, filt
|
|
|
102
102
|
applicationNumber: item.kno || item.applicationNumber || "",
|
|
103
103
|
citizenName: fullName || item.consumerName || item.citizenName || "",
|
|
104
104
|
status: item.status || "",
|
|
105
|
-
ekycStatus: item.ekycStatus || item.ekycstatus || "NA",
|
|
105
|
+
ekycStatus: (item.ekycStatus || item.ekycstatus || "NA").toUpperCase(),
|
|
106
106
|
sla: item.sla ?? 0,
|
|
107
107
|
};
|
|
108
108
|
});
|
|
@@ -117,7 +117,7 @@ const Inbox = ({ parentRoute, businessService = "EKYC", initialStates = {}, filt
|
|
|
117
117
|
|
|
118
118
|
const SearchFormFields = useCallback(
|
|
119
119
|
({ registerRef, searchFormState, controlSearchForm }) => (
|
|
120
|
-
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} className="search" />
|
|
120
|
+
<SearchFormFieldsComponents {...{ registerRef, searchFormState, controlSearchForm }} searchType="kno" className="search" />
|
|
121
121
|
),
|
|
122
122
|
[]
|
|
123
123
|
);
|
|
@@ -27,13 +27,26 @@ export const downloadSurveyorPDF = async ({
|
|
|
27
27
|
const email = "contact@delhijalboard.nic.in";
|
|
28
28
|
const phoneNumber = "+91-11-23538416";
|
|
29
29
|
|
|
30
|
+
const currentDate = new Date();
|
|
31
|
+
const formattedDate = currentDate.toLocaleDateString("en-IN", {
|
|
32
|
+
day: "2-digit",
|
|
33
|
+
month: "2-digit",
|
|
34
|
+
year: "numeric"
|
|
35
|
+
});
|
|
36
|
+
const formattedTime = currentDate.toLocaleTimeString("en-IN", {
|
|
37
|
+
hour: "2-digit",
|
|
38
|
+
minute: "2-digit",
|
|
39
|
+
second: "2-digit",
|
|
40
|
+
hour12: false
|
|
41
|
+
});
|
|
42
|
+
const downloadDateTime = `${formattedDate} ${formattedTime}`;
|
|
43
|
+
|
|
30
44
|
const details = [
|
|
31
45
|
{
|
|
32
46
|
title: t("SURVEYOR_DETAILS"),
|
|
33
47
|
asSectionHeader: true,
|
|
34
48
|
values: [
|
|
35
49
|
{ title: t("SURVEYOR_NAME"), value: surveyorName },
|
|
36
|
-
{ title: t("EMPLOYEE_ID"), value: employeeId },
|
|
37
50
|
{ title: t("MOBILE_NUMBER"), value: mobileNumber },
|
|
38
51
|
{ title: t("VENDOR_NAME"), value: vendorName },
|
|
39
52
|
{ title: t("SUPERVISOR_NAME"), value: supervisorName }
|
|
@@ -68,6 +81,8 @@ export const downloadSurveyorPDF = async ({
|
|
|
68
81
|
applicationNumber: employeeId,
|
|
69
82
|
rows,
|
|
70
83
|
t,
|
|
84
|
+
hideApplicationNumber: true,
|
|
85
|
+
downloadTime: downloadDateTime,
|
|
71
86
|
});
|
|
72
87
|
} else {
|
|
73
88
|
console.error("Digit.Utils.pdf.generateSurveyorReport is not available");
|