@7365admin1/module-hygiene 4.12.0 → 4.13.0
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/CHANGELOG.md +6 -0
- package/dist/index.d.ts +42 -14
- package/dist/index.js +130 -76
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +129 -76
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -38,6 +38,7 @@ __export(src_exports, {
|
|
|
38
38
|
MStock: () => MStock,
|
|
39
39
|
MSupply: () => MSupply,
|
|
40
40
|
MUnit: () => MUnit,
|
|
41
|
+
ServiceType: () => ServiceType,
|
|
41
42
|
allowedCheckOutItemStatus: () => allowedCheckOutItemStatus,
|
|
42
43
|
allowedChecklistStatus: () => allowedChecklistStatus,
|
|
43
44
|
allowedPeriods: () => allowedPeriods,
|
|
@@ -83,6 +84,17 @@ __export(src_exports, {
|
|
|
83
84
|
module.exports = __toCommonJS(src_exports);
|
|
84
85
|
|
|
85
86
|
// src/models/hygiene-base.model.ts
|
|
87
|
+
var ServiceType = /* @__PURE__ */ ((ServiceType2) => {
|
|
88
|
+
ServiceType2["REAL_ESTATE_DEVELOPER"] = "real_estate_developer";
|
|
89
|
+
ServiceType2["PROPERTY_MANAGEMENT_AGENCY"] = "property_management_agency";
|
|
90
|
+
ServiceType2["SECURITY_AGENCY"] = "security_agency";
|
|
91
|
+
ServiceType2["CLEANING_SERVICES"] = "cleaning_services";
|
|
92
|
+
ServiceType2["MECHANICAL_ELECTRICAL_SERVICES"] = "mechanical_electrical_services";
|
|
93
|
+
ServiceType2["LANDSCAPING_SERVICES"] = "landscaping_services";
|
|
94
|
+
ServiceType2["PEST_CONTROL_SERVICES"] = "pest_control_services";
|
|
95
|
+
ServiceType2["POOL_MAINTENANCE_SERVICES"] = "pool_maintenance_services";
|
|
96
|
+
return ServiceType2;
|
|
97
|
+
})(ServiceType || {});
|
|
86
98
|
var allowedTypes = ["common", "toilet"];
|
|
87
99
|
var allowedStatus = [
|
|
88
100
|
"open",
|
|
@@ -624,6 +636,7 @@ var import_mongodb2 = require("mongodb");
|
|
|
624
636
|
var import_node_server_utils3 = require("@7365admin1/node-server-utils");
|
|
625
637
|
var areaSchema = import_joi2.default.object({
|
|
626
638
|
site: import_joi2.default.string().hex().required(),
|
|
639
|
+
serviceType: import_joi2.default.string().valid(...Object.values(ServiceType)).required(),
|
|
627
640
|
name: import_joi2.default.string().required(),
|
|
628
641
|
type: import_joi2.default.string().valid(...allowedTypes).required(),
|
|
629
642
|
set: import_joi2.default.number().min(0).optional(),
|
|
@@ -663,6 +676,7 @@ function MArea(value) {
|
|
|
663
676
|
}
|
|
664
677
|
return {
|
|
665
678
|
site: value.site,
|
|
679
|
+
serviceType: value.serviceType,
|
|
666
680
|
name: value.name,
|
|
667
681
|
type: value.type,
|
|
668
682
|
set: value.set ?? 0,
|
|
@@ -698,6 +712,7 @@ function useAreaRepo() {
|
|
|
698
712
|
try {
|
|
699
713
|
await collection.createIndexes([
|
|
700
714
|
{ key: { site: 1 } },
|
|
715
|
+
{ key: { serviceType: 1 } },
|
|
701
716
|
{ key: { type: 1 } },
|
|
702
717
|
{ key: { status: 1 } },
|
|
703
718
|
{ key: { "units.unit": 1 } }
|
|
@@ -718,7 +733,7 @@ function useAreaRepo() {
|
|
|
718
733
|
async function createUniqueIndex() {
|
|
719
734
|
try {
|
|
720
735
|
await collection.createIndex(
|
|
721
|
-
{ site: 1, name: 1, type: 1, deletedAt: 1 },
|
|
736
|
+
{ site: 1, serviceType: 1, name: 1, type: 1, deletedAt: 1 },
|
|
722
737
|
{ unique: true }
|
|
723
738
|
);
|
|
724
739
|
} catch (error) {
|
|
@@ -755,15 +770,18 @@ function useAreaRepo() {
|
|
|
755
770
|
limit = 10,
|
|
756
771
|
search = "",
|
|
757
772
|
type = "all",
|
|
758
|
-
site
|
|
773
|
+
site,
|
|
774
|
+
serviceType
|
|
759
775
|
}) {
|
|
760
776
|
page = page > 0 ? page - 1 : 0;
|
|
761
777
|
const query = {
|
|
762
|
-
status: { $ne: "deleted" }
|
|
778
|
+
status: { $ne: "deleted" },
|
|
779
|
+
serviceType
|
|
763
780
|
};
|
|
764
781
|
const cacheOptions = {
|
|
765
782
|
page,
|
|
766
|
-
limit
|
|
783
|
+
limit,
|
|
784
|
+
serviceType
|
|
767
785
|
};
|
|
768
786
|
try {
|
|
769
787
|
site = new import_mongodb3.ObjectId(site);
|
|
@@ -812,9 +830,15 @@ function useAreaRepo() {
|
|
|
812
830
|
throw error;
|
|
813
831
|
}
|
|
814
832
|
}
|
|
815
|
-
async function getAreasForChecklist(site) {
|
|
816
|
-
const query = {
|
|
833
|
+
async function getAreasForChecklist(site, serviceType) {
|
|
834
|
+
const query = {
|
|
835
|
+
status: { $ne: "deleted" }
|
|
836
|
+
};
|
|
817
837
|
const cacheOptions = {};
|
|
838
|
+
if (serviceType) {
|
|
839
|
+
query.serviceType = serviceType;
|
|
840
|
+
cacheOptions.serviceType = serviceType;
|
|
841
|
+
}
|
|
818
842
|
try {
|
|
819
843
|
site = new import_mongodb3.ObjectId(site);
|
|
820
844
|
query.site = site;
|
|
@@ -894,28 +918,6 @@ function useAreaRepo() {
|
|
|
894
918
|
throw error;
|
|
895
919
|
}
|
|
896
920
|
}
|
|
897
|
-
async function getAreaByMultipleId(_id) {
|
|
898
|
-
for (let i = 0; i < _id.length; i++) {
|
|
899
|
-
try {
|
|
900
|
-
_id[i] = new import_mongodb3.ObjectId(_id[i]);
|
|
901
|
-
} catch (error) {
|
|
902
|
-
throw new import_node_server_utils4.BadRequestError("Invalid area ID format.");
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
const query = {
|
|
906
|
-
_id: { $in: _id },
|
|
907
|
-
status: { $ne: "deleted" }
|
|
908
|
-
};
|
|
909
|
-
try {
|
|
910
|
-
const data = await collection.aggregate([{ $match: query }]).toArray();
|
|
911
|
-
if (!data || data.length === 0) {
|
|
912
|
-
throw new import_node_server_utils4.NotFoundError("Area not found.");
|
|
913
|
-
}
|
|
914
|
-
return data;
|
|
915
|
-
} catch (error) {
|
|
916
|
-
throw error;
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
921
|
async function verifyAreaByUnitId(unitId) {
|
|
920
922
|
try {
|
|
921
923
|
unitId = new import_mongodb3.ObjectId(unitId);
|
|
@@ -1077,7 +1079,6 @@ function useAreaRepo() {
|
|
|
1077
1079
|
getAreas,
|
|
1078
1080
|
getAreasForChecklist,
|
|
1079
1081
|
getAreaById,
|
|
1080
|
-
getAreaByMultipleId,
|
|
1081
1082
|
verifyAreaByUnitId,
|
|
1082
1083
|
updateArea,
|
|
1083
1084
|
updateAreaChecklist,
|
|
@@ -1144,6 +1145,7 @@ var import_mongodb4 = require("mongodb");
|
|
|
1144
1145
|
var import_node_server_utils6 = require("@7365admin1/node-server-utils");
|
|
1145
1146
|
var unitSchema = import_joi3.default.object({
|
|
1146
1147
|
site: import_joi3.default.string().hex().required(),
|
|
1148
|
+
serviceType: import_joi3.default.string().valid(...Object.values(ServiceType)).required(),
|
|
1147
1149
|
name: import_joi3.default.string().required()
|
|
1148
1150
|
});
|
|
1149
1151
|
function MUnit(value) {
|
|
@@ -1161,6 +1163,7 @@ function MUnit(value) {
|
|
|
1161
1163
|
}
|
|
1162
1164
|
return {
|
|
1163
1165
|
site: value.site,
|
|
1166
|
+
serviceType: value.serviceType,
|
|
1164
1167
|
name: value.name,
|
|
1165
1168
|
status: "active",
|
|
1166
1169
|
createdAt: /* @__PURE__ */ new Date(),
|
|
@@ -1182,6 +1185,7 @@ function useUnitRepository() {
|
|
|
1182
1185
|
try {
|
|
1183
1186
|
await collection.createIndexes([
|
|
1184
1187
|
{ key: { site: 1 } },
|
|
1188
|
+
{ key: { serviceType: 1 } },
|
|
1185
1189
|
{ key: { status: 1 } }
|
|
1186
1190
|
]);
|
|
1187
1191
|
} catch (error) {
|
|
@@ -1200,7 +1204,7 @@ function useUnitRepository() {
|
|
|
1200
1204
|
async function createUniqueIndex() {
|
|
1201
1205
|
try {
|
|
1202
1206
|
await collection.createIndex(
|
|
1203
|
-
{ site: 1, name: 1, deletedAt: 1 },
|
|
1207
|
+
{ site: 1, serviceType: 1, name: 1, deletedAt: 1 },
|
|
1204
1208
|
{ unique: true }
|
|
1205
1209
|
);
|
|
1206
1210
|
} catch (error) {
|
|
@@ -1234,7 +1238,8 @@ function useUnitRepository() {
|
|
|
1234
1238
|
page = 1,
|
|
1235
1239
|
limit = 10,
|
|
1236
1240
|
search = "",
|
|
1237
|
-
site
|
|
1241
|
+
site,
|
|
1242
|
+
serviceType
|
|
1238
1243
|
}) {
|
|
1239
1244
|
page = page > 0 ? page - 1 : 0;
|
|
1240
1245
|
const query = {
|
|
@@ -1251,6 +1256,10 @@ function useUnitRepository() {
|
|
|
1251
1256
|
} catch (error) {
|
|
1252
1257
|
throw new import_node_server_utils7.BadRequestError("Invalid site ID format.");
|
|
1253
1258
|
}
|
|
1259
|
+
if (serviceType) {
|
|
1260
|
+
query.serviceType = serviceType;
|
|
1261
|
+
cacheOptions.serviceType = serviceType;
|
|
1262
|
+
}
|
|
1254
1263
|
if (search) {
|
|
1255
1264
|
query.$or = [{ name: { $regex: search, $options: "i" } }];
|
|
1256
1265
|
cacheOptions.search = search;
|
|
@@ -1309,7 +1318,7 @@ function useUnitRepository() {
|
|
|
1309
1318
|
} catch (error) {
|
|
1310
1319
|
const isDuplicated = error.message.includes("duplicate");
|
|
1311
1320
|
if (isDuplicated) {
|
|
1312
|
-
throw new import_node_server_utils7.BadRequestError("
|
|
1321
|
+
throw new import_node_server_utils7.BadRequestError("Unit already exists.");
|
|
1313
1322
|
}
|
|
1314
1323
|
throw error;
|
|
1315
1324
|
}
|
|
@@ -1365,7 +1374,8 @@ function useAreaService() {
|
|
|
1365
1374
|
const { getUnits: _getUnits } = useUnitRepository();
|
|
1366
1375
|
async function importArea({
|
|
1367
1376
|
dataJson,
|
|
1368
|
-
site
|
|
1377
|
+
site,
|
|
1378
|
+
serviceType
|
|
1369
1379
|
}) {
|
|
1370
1380
|
let dataArray;
|
|
1371
1381
|
try {
|
|
@@ -1386,7 +1396,8 @@ function useAreaService() {
|
|
|
1386
1396
|
page: 1,
|
|
1387
1397
|
limit: 999999,
|
|
1388
1398
|
search: "",
|
|
1389
|
-
site
|
|
1399
|
+
site,
|
|
1400
|
+
serviceType
|
|
1390
1401
|
});
|
|
1391
1402
|
if (unitsData && unitsData.items) {
|
|
1392
1403
|
availableUnits = unitsData.items;
|
|
@@ -1433,7 +1444,8 @@ function useAreaService() {
|
|
|
1433
1444
|
const areaData = {
|
|
1434
1445
|
type: areaType,
|
|
1435
1446
|
name: areaName,
|
|
1436
|
-
site
|
|
1447
|
+
site,
|
|
1448
|
+
serviceType
|
|
1437
1449
|
};
|
|
1438
1450
|
if (row.SET !== void 0 && row.SET !== null && row.SET !== "") {
|
|
1439
1451
|
const setNumber = parseInt(String(row.SET).trim());
|
|
@@ -1527,9 +1539,12 @@ function useAreaService() {
|
|
|
1527
1539
|
}
|
|
1528
1540
|
}
|
|
1529
1541
|
}
|
|
1530
|
-
async function exportAreas(
|
|
1542
|
+
async function exportAreas({
|
|
1543
|
+
site,
|
|
1544
|
+
serviceType
|
|
1545
|
+
}) {
|
|
1531
1546
|
try {
|
|
1532
|
-
const areas = await getAreasForChecklist(site);
|
|
1547
|
+
const areas = await getAreasForChecklist(site, serviceType);
|
|
1533
1548
|
if (!areas || !Array.isArray(areas) || areas.length === 0) {
|
|
1534
1549
|
throw new import_node_server_utils8.BadRequestError(
|
|
1535
1550
|
"There are no areas to export yet. Please add some areas first, then try again."
|
|
@@ -1616,7 +1631,8 @@ function useAreaController() {
|
|
|
1616
1631
|
limit: import_joi4.default.number().min(1).optional().allow("", null),
|
|
1617
1632
|
search: import_joi4.default.string().optional().allow("", null),
|
|
1618
1633
|
type: import_joi4.default.string().valid("all", ...allowedTypes).optional().allow("", null),
|
|
1619
|
-
site: import_joi4.default.string().hex().required()
|
|
1634
|
+
site: import_joi4.default.string().hex().required(),
|
|
1635
|
+
serviceType: import_joi4.default.string().valid(...Object.values(ServiceType)).required()
|
|
1620
1636
|
});
|
|
1621
1637
|
const { error } = validation.validate(query);
|
|
1622
1638
|
if (error) {
|
|
@@ -1629,13 +1645,15 @@ function useAreaController() {
|
|
|
1629
1645
|
const search = req.query.search ?? "";
|
|
1630
1646
|
const type = req.query.type ?? "all";
|
|
1631
1647
|
const site = req.params.site ?? "";
|
|
1648
|
+
const serviceType = req.query.serviceType ?? "";
|
|
1632
1649
|
try {
|
|
1633
1650
|
const data = await _getAreas({
|
|
1634
1651
|
page,
|
|
1635
1652
|
limit,
|
|
1636
1653
|
search,
|
|
1637
1654
|
type,
|
|
1638
|
-
site
|
|
1655
|
+
site,
|
|
1656
|
+
serviceType
|
|
1639
1657
|
});
|
|
1640
1658
|
res.json(data);
|
|
1641
1659
|
return;
|
|
@@ -1720,9 +1738,12 @@ function useAreaController() {
|
|
|
1720
1738
|
next(new import_node_server_utils9.BadRequestError("File is required!"));
|
|
1721
1739
|
return;
|
|
1722
1740
|
}
|
|
1723
|
-
const
|
|
1724
|
-
const
|
|
1725
|
-
|
|
1741
|
+
const query = { ...req.query, ...req.params };
|
|
1742
|
+
const validation = import_joi4.default.object({
|
|
1743
|
+
site: import_joi4.default.string().hex().required(),
|
|
1744
|
+
serviceType: import_joi4.default.string().valid(...Object.values(ServiceType)).required()
|
|
1745
|
+
});
|
|
1746
|
+
const { error, value } = validation.validate(query);
|
|
1726
1747
|
if (error) {
|
|
1727
1748
|
import_node_server_utils9.logger.log({ level: "error", message: error.message });
|
|
1728
1749
|
next(new import_node_server_utils9.BadRequestError(error.message));
|
|
@@ -1731,7 +1752,7 @@ function useAreaController() {
|
|
|
1731
1752
|
try {
|
|
1732
1753
|
const xlsData = await convertBufferFile(req.file.buffer);
|
|
1733
1754
|
const dataJson = JSON.stringify(xlsData);
|
|
1734
|
-
const result = await _importArea({ dataJson,
|
|
1755
|
+
const result = await _importArea({ dataJson, ...value });
|
|
1735
1756
|
return res.status(201).json(result);
|
|
1736
1757
|
} catch (error2) {
|
|
1737
1758
|
import_node_server_utils9.logger.log({ level: "error", message: error2.message });
|
|
@@ -1740,9 +1761,12 @@ function useAreaController() {
|
|
|
1740
1761
|
}
|
|
1741
1762
|
}
|
|
1742
1763
|
async function exportAreas(req, res, next) {
|
|
1743
|
-
const
|
|
1744
|
-
const validation = import_joi4.default.
|
|
1745
|
-
|
|
1764
|
+
const query = { ...req.query, ...req.params };
|
|
1765
|
+
const validation = import_joi4.default.object({
|
|
1766
|
+
site: import_joi4.default.string().hex().required(),
|
|
1767
|
+
serviceType: import_joi4.default.string().valid(...Object.values(ServiceType)).required()
|
|
1768
|
+
});
|
|
1769
|
+
const { error, value } = validation.validate(query);
|
|
1746
1770
|
if (error) {
|
|
1747
1771
|
import_node_server_utils9.logger.log({ level: "error", message: error.message });
|
|
1748
1772
|
next(new import_node_server_utils9.BadRequestError(error.message));
|
|
@@ -1833,7 +1857,8 @@ function useUnitService() {
|
|
|
1833
1857
|
} = useUnitRepository();
|
|
1834
1858
|
async function importUnit({
|
|
1835
1859
|
dataJson,
|
|
1836
|
-
site
|
|
1860
|
+
site,
|
|
1861
|
+
serviceType
|
|
1837
1862
|
}) {
|
|
1838
1863
|
let dataArray;
|
|
1839
1864
|
try {
|
|
@@ -1874,7 +1899,8 @@ function useUnitService() {
|
|
|
1874
1899
|
try {
|
|
1875
1900
|
const insertedId = await _createUnit({
|
|
1876
1901
|
name: unitName,
|
|
1877
|
-
site
|
|
1902
|
+
site,
|
|
1903
|
+
serviceType
|
|
1878
1904
|
});
|
|
1879
1905
|
insertedUnitIds.push(insertedId);
|
|
1880
1906
|
import_node_server_utils11.logger.info(`Successfully created unit: ${unitName}`);
|
|
@@ -1979,7 +2005,10 @@ function useUnitService() {
|
|
|
1979
2005
|
session?.endSession();
|
|
1980
2006
|
}
|
|
1981
2007
|
}
|
|
1982
|
-
async function exportUnits(
|
|
2008
|
+
async function exportUnits({
|
|
2009
|
+
site,
|
|
2010
|
+
serviceType
|
|
2011
|
+
}) {
|
|
1983
2012
|
const { generateUnitExcel: _generateUnitExcel } = useUnitExportService();
|
|
1984
2013
|
const { getUnits: _getUnits } = useUnitRepository();
|
|
1985
2014
|
try {
|
|
@@ -1987,7 +2016,8 @@ function useUnitService() {
|
|
|
1987
2016
|
page: 1,
|
|
1988
2017
|
limit: 999999,
|
|
1989
2018
|
search: "",
|
|
1990
|
-
site
|
|
2019
|
+
site,
|
|
2020
|
+
serviceType
|
|
1991
2021
|
});
|
|
1992
2022
|
if (!data || !data.items || data.items.length === 0) {
|
|
1993
2023
|
throw new import_node_server_utils11.BadRequestError(
|
|
@@ -2044,7 +2074,8 @@ function useUnitController() {
|
|
|
2044
2074
|
page: import_joi5.default.number().min(1).optional().allow("", null),
|
|
2045
2075
|
limit: import_joi5.default.number().min(1).optional().allow("", null),
|
|
2046
2076
|
search: import_joi5.default.string().optional().allow("", null),
|
|
2047
|
-
site: import_joi5.default.string().hex().required()
|
|
2077
|
+
site: import_joi5.default.string().hex().required(),
|
|
2078
|
+
serviceType: import_joi5.default.string().valid(...Object.values(ServiceType)).required()
|
|
2048
2079
|
});
|
|
2049
2080
|
const { error } = validation.validate(query);
|
|
2050
2081
|
if (error) {
|
|
@@ -2056,12 +2087,14 @@ function useUnitController() {
|
|
|
2056
2087
|
const limit = parseInt(req.query.limit) ?? 10;
|
|
2057
2088
|
const search = req.query.search ?? "";
|
|
2058
2089
|
const site = req.params.site ?? "";
|
|
2090
|
+
const serviceType = req.query.serviceType ?? "";
|
|
2059
2091
|
try {
|
|
2060
2092
|
const data = await _getUnits({
|
|
2061
2093
|
page,
|
|
2062
2094
|
limit,
|
|
2063
2095
|
search,
|
|
2064
|
-
site
|
|
2096
|
+
site,
|
|
2097
|
+
serviceType
|
|
2065
2098
|
});
|
|
2066
2099
|
res.json(data);
|
|
2067
2100
|
return;
|
|
@@ -2120,9 +2153,12 @@ function useUnitController() {
|
|
|
2120
2153
|
next(new import_node_server_utils12.BadRequestError("File is required!"));
|
|
2121
2154
|
return;
|
|
2122
2155
|
}
|
|
2123
|
-
const
|
|
2124
|
-
const validation = import_joi5.default.
|
|
2125
|
-
|
|
2156
|
+
const query = { ...req.query, ...req.params };
|
|
2157
|
+
const validation = import_joi5.default.object({
|
|
2158
|
+
site: import_joi5.default.string().hex().required(),
|
|
2159
|
+
serviceType: import_joi5.default.string().valid(...Object.values(ServiceType)).required()
|
|
2160
|
+
});
|
|
2161
|
+
const { error, value } = validation.validate(query);
|
|
2126
2162
|
if (error) {
|
|
2127
2163
|
import_node_server_utils12.logger.log({ level: "error", message: error.message });
|
|
2128
2164
|
next(new import_node_server_utils12.BadRequestError(error.message));
|
|
@@ -2131,7 +2167,7 @@ function useUnitController() {
|
|
|
2131
2167
|
try {
|
|
2132
2168
|
const xlsData = await convertBufferFile(req.file.buffer);
|
|
2133
2169
|
const dataJson = JSON.stringify(xlsData);
|
|
2134
|
-
const result = await _importUnit({ dataJson,
|
|
2170
|
+
const result = await _importUnit({ dataJson, ...value });
|
|
2135
2171
|
return res.status(201).json(result);
|
|
2136
2172
|
} catch (error2) {
|
|
2137
2173
|
import_node_server_utils12.logger.log({ level: "error", message: error2.message });
|
|
@@ -2140,9 +2176,12 @@ function useUnitController() {
|
|
|
2140
2176
|
}
|
|
2141
2177
|
}
|
|
2142
2178
|
async function exportUnits(req, res, next) {
|
|
2143
|
-
const
|
|
2144
|
-
const validation = import_joi5.default.
|
|
2145
|
-
|
|
2179
|
+
const query = { ...req.query, ...req.params };
|
|
2180
|
+
const validation = import_joi5.default.object({
|
|
2181
|
+
site: import_joi5.default.string().hex().required(),
|
|
2182
|
+
serviceType: import_joi5.default.string().valid(...Object.values(ServiceType)).required()
|
|
2183
|
+
});
|
|
2184
|
+
const { error, value } = validation.validate(query);
|
|
2146
2185
|
if (error) {
|
|
2147
2186
|
import_node_server_utils12.logger.log({ level: "error", message: error.message });
|
|
2148
2187
|
next(new import_node_server_utils12.BadRequestError(error.message));
|
|
@@ -2188,7 +2227,8 @@ var import_mongodb6 = require("mongodb");
|
|
|
2188
2227
|
var import_node_server_utils13 = require("@7365admin1/node-server-utils");
|
|
2189
2228
|
var parentChecklistSchema = import_joi6.default.object({
|
|
2190
2229
|
createdAt: import_joi6.default.alternatives().try(import_joi6.default.date(), import_joi6.default.string()).optional().allow("", null),
|
|
2191
|
-
site: import_joi6.default.string().hex().required()
|
|
2230
|
+
site: import_joi6.default.string().hex().required(),
|
|
2231
|
+
serviceType: import_joi6.default.string().valid(...Object.values(ServiceType)).required()
|
|
2192
2232
|
});
|
|
2193
2233
|
function MParentChecklist(value) {
|
|
2194
2234
|
const { error } = parentChecklistSchema.validate(value);
|
|
@@ -2205,6 +2245,7 @@ function MParentChecklist(value) {
|
|
|
2205
2245
|
}
|
|
2206
2246
|
return {
|
|
2207
2247
|
site: value.site,
|
|
2248
|
+
serviceType: value.serviceType,
|
|
2208
2249
|
status: "open",
|
|
2209
2250
|
createdAt: value.createdAt ?? /* @__PURE__ */ new Date(),
|
|
2210
2251
|
updatedAt: value.updatedAt ?? ""
|
|
@@ -2279,12 +2320,16 @@ function useParentChecklistRepo() {
|
|
|
2279
2320
|
);
|
|
2280
2321
|
return existingChecklist._id;
|
|
2281
2322
|
}
|
|
2323
|
+
const allServiceTypes = Object.values(ServiceType);
|
|
2282
2324
|
if (value.site) {
|
|
2283
|
-
const
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2325
|
+
const checklistDocs2 = allServiceTypes.map(
|
|
2326
|
+
(serviceType) => MParentChecklist({
|
|
2327
|
+
site: value.site,
|
|
2328
|
+
createdAt: currentDate,
|
|
2329
|
+
serviceType
|
|
2330
|
+
})
|
|
2331
|
+
);
|
|
2332
|
+
const result2 = await collection.insertMany(checklistDocs2, { session });
|
|
2288
2333
|
delNamespace().then(() => {
|
|
2289
2334
|
import_node_server_utils14.logger.info(`Cache cleared for namespace: ${namespace_collection}`);
|
|
2290
2335
|
}).catch((err) => {
|
|
@@ -2295,9 +2340,9 @@ function useParentChecklistRepo() {
|
|
|
2295
2340
|
});
|
|
2296
2341
|
const dateStr2 = currentDate.toISOString().split("T")[0];
|
|
2297
2342
|
import_node_server_utils14.logger.info(
|
|
2298
|
-
`Created parent
|
|
2343
|
+
`Created ${checklistDocs2.length} parent checklists for site ${value.site} for today: ${dateStr2}`
|
|
2299
2344
|
);
|
|
2300
|
-
return result2.
|
|
2345
|
+
return Object.values(result2.insertedIds);
|
|
2301
2346
|
}
|
|
2302
2347
|
const siteIds = await getHygieneSiteIds();
|
|
2303
2348
|
if (!Array.isArray(siteIds)) {
|
|
@@ -2310,12 +2355,15 @@ function useParentChecklistRepo() {
|
|
|
2310
2355
|
}
|
|
2311
2356
|
const checklistDocs = [];
|
|
2312
2357
|
for (const site of siteIds) {
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2358
|
+
for (const serviceType of allServiceTypes) {
|
|
2359
|
+
checklistDocs.push(
|
|
2360
|
+
MParentChecklist({
|
|
2361
|
+
site,
|
|
2362
|
+
createdAt: currentDate,
|
|
2363
|
+
serviceType
|
|
2364
|
+
})
|
|
2365
|
+
);
|
|
2366
|
+
}
|
|
2319
2367
|
}
|
|
2320
2368
|
const result = await collection.insertMany(checklistDocs, { session });
|
|
2321
2369
|
delNamespace().then(() => {
|
|
@@ -2343,13 +2391,15 @@ function useParentChecklistRepo() {
|
|
|
2343
2391
|
site,
|
|
2344
2392
|
startDate = "",
|
|
2345
2393
|
endDate = "",
|
|
2346
|
-
status = "all"
|
|
2394
|
+
status = "all",
|
|
2395
|
+
serviceType
|
|
2347
2396
|
}) {
|
|
2348
2397
|
page = page > 0 ? page - 1 : 0;
|
|
2349
|
-
const query = {};
|
|
2398
|
+
const query = { serviceType };
|
|
2350
2399
|
const cacheOptions = {
|
|
2351
2400
|
page,
|
|
2352
|
-
limit
|
|
2401
|
+
limit,
|
|
2402
|
+
serviceType
|
|
2353
2403
|
};
|
|
2354
2404
|
try {
|
|
2355
2405
|
site = new import_mongodb7.ObjectId(site);
|
|
@@ -2589,6 +2639,7 @@ function useParentChecklistController() {
|
|
|
2589
2639
|
limit: import_joi7.default.number().min(1).optional().allow("", null),
|
|
2590
2640
|
search: import_joi7.default.string().optional().allow("", null),
|
|
2591
2641
|
site: import_joi7.default.string().hex().required(),
|
|
2642
|
+
serviceType: import_joi7.default.string().valid(...Object.values(ServiceType)).required(),
|
|
2592
2643
|
startDate: import_joi7.default.alternatives().try(import_joi7.default.date(), import_joi7.default.string()).optional().allow("", null),
|
|
2593
2644
|
endDate: import_joi7.default.alternatives().try(import_joi7.default.date(), import_joi7.default.string()).optional().allow("", null),
|
|
2594
2645
|
status: import_joi7.default.string().valid(...allowedStatus, "all").optional().allow("", null)
|
|
@@ -2603,6 +2654,7 @@ function useParentChecklistController() {
|
|
|
2603
2654
|
const limit = parseInt(req.query.limit) ?? 10;
|
|
2604
2655
|
const search = req.query.search ?? "";
|
|
2605
2656
|
const site = req.params.site ?? "";
|
|
2657
|
+
const serviceType = req.query.serviceType ?? "";
|
|
2606
2658
|
const startDate = req.query.startDate ?? "";
|
|
2607
2659
|
const endDate = req.query.endDate ?? "";
|
|
2608
2660
|
const status = req.query.status ?? "all";
|
|
@@ -2612,6 +2664,7 @@ function useParentChecklistController() {
|
|
|
2612
2664
|
limit,
|
|
2613
2665
|
search,
|
|
2614
2666
|
site,
|
|
2667
|
+
serviceType,
|
|
2615
2668
|
startDate,
|
|
2616
2669
|
endDate,
|
|
2617
2670
|
status
|
|
@@ -6865,6 +6918,7 @@ function useQRController() {
|
|
|
6865
6918
|
MStock,
|
|
6866
6919
|
MSupply,
|
|
6867
6920
|
MUnit,
|
|
6921
|
+
ServiceType,
|
|
6868
6922
|
allowedCheckOutItemStatus,
|
|
6869
6923
|
allowedChecklistStatus,
|
|
6870
6924
|
allowedPeriods,
|