@knovator/pagecreator-node 1.2.2 → 1.2.4

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.
Files changed (71) hide show
  1. package/README.md +458 -458
  2. package/package.json +3 -2
  3. package/src/constants/index.d.ts +20 -20
  4. package/src/constants/index.js +33 -33
  5. package/src/controllers/PageController.d.ts +4 -4
  6. package/src/controllers/PageController.js +83 -83
  7. package/src/controllers/TabController.d.ts +4 -4
  8. package/src/controllers/TabController.js +45 -45
  9. package/src/controllers/UserController.d.ts +2 -2
  10. package/src/controllers/UserController.js +64 -64
  11. package/src/controllers/WidgetController.d.ts +10 -10
  12. package/src/controllers/WidgetController.js +328 -328
  13. package/src/index.d.ts +8 -8
  14. package/src/index.js +47 -47
  15. package/src/models/Item.d.ts +30 -30
  16. package/src/models/Item.js +49 -49
  17. package/src/models/Page.d.ts +30 -30
  18. package/src/models/Page.js +23 -22
  19. package/src/models/Page.js.map +1 -1
  20. package/src/models/SrcSet.d.ts +30 -30
  21. package/src/models/SrcSet.js +16 -16
  22. package/src/models/Tab.d.ts +30 -30
  23. package/src/models/Tab.js +27 -27
  24. package/src/models/Widget.d.ts +30 -30
  25. package/src/models/Widget.js +62 -62
  26. package/src/models/index.d.ts +6 -6
  27. package/src/models/index.js +18 -18
  28. package/src/plugins/softDelete.d.ts +7 -7
  29. package/src/plugins/softDelete.js +63 -63
  30. package/src/routes/PageRoute.d.ts +3 -3
  31. package/src/routes/PageRoute.js +29 -29
  32. package/src/routes/UserRoute.d.ts +3 -3
  33. package/src/routes/UserRoute.js +22 -22
  34. package/src/routes/WidgetRoute.d.ts +3 -3
  35. package/src/routes/WidgetRoute.js +67 -67
  36. package/src/services/dataService.d.ts +9 -9
  37. package/src/services/dataService.js +402 -402
  38. package/src/services/dbService.d.ts +16 -16
  39. package/src/services/dbService.js +88 -87
  40. package/src/services/dbService.js.map +1 -1
  41. package/src/types/IRequest.d.ts +6 -6
  42. package/src/types/IRequest.js +2 -2
  43. package/src/types/IResponse.d.ts +6 -6
  44. package/src/types/IResponse.js +2 -2
  45. package/src/types/Router.d.ts +4 -4
  46. package/src/types/Router.js +2 -2
  47. package/src/types/common.d.ts +143 -142
  48. package/src/types/common.js +2 -2
  49. package/src/types/enums.d.ts +14 -14
  50. package/src/types/enums.js +20 -20
  51. package/src/types/index.d.ts +5 -5
  52. package/src/types/index.js +8 -8
  53. package/src/utils/defaults.d.ts +7 -7
  54. package/src/utils/defaults.js +40 -40
  55. package/src/utils/helper.d.ts +7 -7
  56. package/src/utils/helper.js +224 -224
  57. package/src/utils/redis.d.ts +3 -3
  58. package/src/utils/redis.js +58 -58
  59. package/src/utils/responseHandlers.d.ts +6 -6
  60. package/src/utils/responseHandlers.js +56 -56
  61. package/src/utils/validate.d.ts +4 -4
  62. package/src/utils/validate.js +23 -23
  63. package/src/utils/validations/page.d.ts +7 -7
  64. package/src/utils/validations/page.js +52 -50
  65. package/src/utils/validations/page.js.map +1 -1
  66. package/src/utils/validations/tab.d.ts +6 -6
  67. package/src/utils/validations/tab.js +25 -25
  68. package/src/utils/validations/user.d.ts +3 -3
  69. package/src/utils/validations/user.js +12 -12
  70. package/src/utils/validations/widget.d.ts +9 -9
  71. package/src/utils/validations/widget.js +152 -152
@@ -1,329 +1,329 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLanguages = exports.getCollectionData = exports.getWidgetTypes = exports.getItemsTypes = exports.partialUpdateWidget = exports.getSingleWidget = exports.getWidgets = exports.deleteWidget = exports.updateWidget = exports.createWidget = void 0;
4
- const tslib_1 = require("tslib");
5
- const mongoose_1 = require("mongoose");
6
- const dbService_1 = require("../services/dbService");
7
- const constants_1 = require("../constants");
8
- const responseHandlers_1 = require("./../utils/responseHandlers");
9
- const defaults_1 = require("../utils/defaults");
10
- const helper_1 = require("../utils/helper");
11
- const types_1 = require("../types");
12
- const dataService_1 = require("../services/dataService");
13
- const catchAsync = (fn) => {
14
- return defaults_1.defaults.catchAsync(fn, 'Widget');
15
- };
16
- const getModals = (req) => defaults_1.defaults.getModals(req);
17
- const deleteItems = (widgetId, models) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
- const { Item } = models;
19
- yield (0, dbService_1.deleteAll)(Item, { widgetId: new mongoose_1.Types.ObjectId(widgetId) });
20
- });
21
- const createItems = (itemsData, widgetId, models) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
- const { Item, SrcSet } = models;
23
- itemsData = itemsData.map((item) => (Object.assign(Object.assign({}, item), { _id: new mongoose_1.Types.ObjectId(), widgetId })));
24
- const srcSetItems = itemsData.reduce((acc, item) => {
25
- if (Array.isArray(item.srcset)) {
26
- acc.push(...item.srcset.map((srcSetItem) => (Object.assign(Object.assign({}, srcSetItem), { itemId: item._id }))));
27
- delete item.srcset;
28
- }
29
- return acc;
30
- }, []);
31
- yield (0, dbService_1.bulkInsert)(Item, itemsData);
32
- yield (0, dbService_1.bulkInsert)(SrcSet, srcSetItems);
33
- });
34
- exports.createWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
35
- var _a;
36
- const models = getModals(req);
37
- const data = req.body;
38
- let items = [];
39
- yield (0, dbService_1.checkUnique)({
40
- Modal: models['Widget'],
41
- uniqueField: 'code',
42
- value: data.code,
43
- errorMessage: constants_1.VALIDATION.WIDGET_EXISTS
44
- });
45
- if ('items' in data) {
46
- items = JSON.parse(JSON.stringify(data.items));
47
- delete data.items;
48
- }
49
- const widget = yield (0, dbService_1.create)(models['Widget'], data);
50
- if (items.length > 0) {
51
- yield createItems(items, widget._id, models);
52
- }
53
- res.message = (_a = req === null || req === void 0 ? void 0 : req.i18n) === null || _a === void 0 ? void 0 : _a.t('widget.create');
54
- return (0, responseHandlers_1.createdDocumentResponse)(widget, res);
55
- }));
56
- exports.updateWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
57
- var _b;
58
- const models = getModals(req);
59
- const data = req.body;
60
- const _id = req.params['id'];
61
- let items = [];
62
- if ('items' in data) {
63
- items = JSON.parse(JSON.stringify(data.items));
64
- delete data.items;
65
- }
66
- const updatedWidget = yield (0, dbService_1.update)(models['Widget'], { _id }, data);
67
- if (items.length > 0 && updatedWidget) {
68
- yield deleteItems(_id, models);
69
- yield createItems(items, updatedWidget._id, models);
70
- }
71
- if (updatedWidget) {
72
- (0, dataService_1.updateRedisWidget)(updatedWidget.code, models);
73
- (0, dataService_1.updateWidgetPagesData)([updatedWidget.id], models);
74
- }
75
- res.message = (_b = req === null || req === void 0 ? void 0 : req.i18n) === null || _b === void 0 ? void 0 : _b.t('widget.update');
76
- return (0, responseHandlers_1.successResponse)(updatedWidget, res);
77
- }));
78
- exports.deleteWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
79
- var _c;
80
- const models = getModals(req);
81
- yield deleteItems(req.params['id'], models);
82
- const _id = new mongoose_1.Types.ObjectId(req.params['id']);
83
- const deletedWidget = yield (0, dbService_1.remove)(models['Widget'], { _id });
84
- if (deletedWidget) {
85
- (0, dataService_1.updateRedisWidget)(deletedWidget.code, models);
86
- (0, dataService_1.updateWidgetPagesData)([deletedWidget.id], models);
87
- }
88
- res.message = (_c = req === null || req === void 0 ? void 0 : req.i18n) === null || _c === void 0 ? void 0 : _c.t('widget.delete');
89
- return (0, responseHandlers_1.successResponse)(deletedWidget, res);
90
- }));
91
- exports.getWidgets = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
92
- var _d;
93
- const { Widget } = getModals(req);
94
- const search = req.body.search || '';
95
- const { collectionItems } = req.body;
96
- const { page, limit, sort } = req.body.options;
97
- const all = (typeof req.body.all !== 'undefined' && req.body.all === true) || false;
98
- const isActive = typeof req.body.isActive !== 'undefined'
99
- ? req.body.isActive || false
100
- : null;
101
- const customOptions = Object.assign({ pagination: !all, sort, select: 'name code isActive canDel' }, (page && limit ? { page, limit } : {}));
102
- const orOptions = [];
103
- if (search) {
104
- orOptions.push({ name: { $regex: search, $options: 'i' } });
105
- orOptions.push({ code: { $regex: search, $options: 'i' } });
106
- }
107
- else {
108
- orOptions.push({});
109
- }
110
- if (Array.isArray(collectionItems) && collectionItems.length) {
111
- orOptions.push({ _id: { $in: collectionItems } });
112
- }
113
- const query = {
114
- isDeleted: false,
115
- isActive: { $in: isActive === null ? [true, false] : [isActive] },
116
- $or: orOptions,
117
- };
118
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
119
- // @ts-ignore
120
- const notifications = yield (0, dbService_1.list)(Widget, query, customOptions);
121
- res.message = (_d = req === null || req === void 0 ? void 0 : req.i18n) === null || _d === void 0 ? void 0 : _d.t('widget.getAll');
122
- return (0, responseHandlers_1.successResponse)(notifications, res);
123
- }));
124
- exports.getSingleWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
125
- var _e, _f;
126
- const { Widget, Item } = getModals(req);
127
- const _id = req.params['id'];
128
- const widget = yield (yield (0, dbService_1.getOne)(Widget, { _id, isDeleted: true })).toJSON();
129
- widget['items'] = yield Item.aggregate([
130
- {
131
- $match: {
132
- widgetId: new mongoose_1.Types.ObjectId(_id),
133
- isDeleted: false,
134
- },
135
- },
136
- {
137
- $project: Object.assign({}, defaults_1.commonExcludedFields),
138
- },
139
- ...(defaults_1.defaults.languages && ((_e = defaults_1.defaults.languages) === null || _e === void 0 ? void 0 : _e.length) > 0
140
- ? defaults_1.defaults.languages.reduce((arr, lng) => {
141
- arr.push({
142
- $lookup: {
143
- from: 'file',
144
- let: { imgsId: { $toObjectId: `$imgs.${lng.code}` } },
145
- as: `imgs.${lng.code}`,
146
- pipeline: [
147
- {
148
- $match: {
149
- $expr: {
150
- $eq: ['$_id', '$$imgsId'],
151
- },
152
- },
153
- },
154
- {
155
- $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { width: 0, module: 0, height: 0 }),
156
- },
157
- ],
158
- },
159
- }, {
160
- $unwind: {
161
- path: `$imgs.${lng.code}`,
162
- preserveNullAndEmptyArrays: true,
163
- },
164
- });
165
- return arr;
166
- }, [])
167
- : [
168
- {
169
- $lookup: {
170
- from: 'file',
171
- let: { imgId: '$img' },
172
- as: 'img',
173
- pipeline: [
174
- {
175
- $match: {
176
- $expr: {
177
- $eq: ['$_id', '$$imgId'],
178
- },
179
- },
180
- },
181
- {
182
- $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { width: 0, module: 0, height: 0 }),
183
- },
184
- ],
185
- },
186
- },
187
- {
188
- $unwind: {
189
- path: '$img',
190
- preserveNullAndEmptyArrays: true,
191
- },
192
- },
193
- ]),
194
- {
195
- $lookup: {
196
- from: 'srcsets',
197
- let: { item: '$_id' },
198
- as: 'srcset',
199
- pipeline: [
200
- {
201
- $match: {
202
- $expr: {
203
- $eq: ['$itemId', '$$item'],
204
- },
205
- },
206
- },
207
- {
208
- $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { _id: 0, itemId: 0 }),
209
- },
210
- ],
211
- },
212
- },
213
- ]);
214
- res.message = (_f = req === null || req === void 0 ? void 0 : req.i18n) === null || _f === void 0 ? void 0 : _f.t('widget.getOne');
215
- return (0, responseHandlers_1.successResponse)(widget, res);
216
- }));
217
- exports.partialUpdateWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
218
- var _g;
219
- const models = getModals(req);
220
- const data = req.body;
221
- const _id = req.params['id'];
222
- const updatedWidget = yield (0, dbService_1.update)(models['Widget'], { _id }, data);
223
- if (updatedWidget) {
224
- (0, dataService_1.updateRedisWidget)(updatedWidget.code, models);
225
- (0, dataService_1.updateWidgetPagesData)([updatedWidget.id], models);
226
- }
227
- res.message = (_g = req === null || req === void 0 ? void 0 : req.i18n) === null || _g === void 0 ? void 0 : _g.t('widget.partialUpdate');
228
- return (0, responseHandlers_1.successResponse)(updatedWidget, res);
229
- }));
230
- exports.getItemsTypes = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
231
- var _h;
232
- const itemsTypes = [
233
- {
234
- value: Object.keys(types_1.ItemsType)[0],
235
- label: Object.values(types_1.ItemsType)[0],
236
- },
237
- ];
238
- defaults_1.defaults.collections.forEach((item) => {
239
- itemsTypes.push({
240
- value: item.collectionName,
241
- label: item.title,
242
- });
243
- });
244
- res.message = (_h = req === null || req === void 0 ? void 0 : req.i18n) === null || _h === void 0 ? void 0 : _h.t('widget.getItemsTypes');
245
- return (0, responseHandlers_1.successResponse)(itemsTypes, res);
246
- }));
247
- exports.getWidgetTypes = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
248
- var _j;
249
- const widgetTypes = Object.entries(types_1.WidgetTypes).map((e) => ({
250
- label: e[1],
251
- value: e[0],
252
- }));
253
- if (Array.isArray(defaults_1.defaults.customWidgetTypes) &&
254
- defaults_1.defaults.customWidgetTypes.length > 0) {
255
- widgetTypes.push(...defaults_1.defaults.customWidgetTypes);
256
- }
257
- res.message = (_j = req === null || req === void 0 ? void 0 : req.i18n) === null || _j === void 0 ? void 0 : _j.t('widget.getWidgetTypes');
258
- return (0, responseHandlers_1.successResponse)(widgetTypes, res);
259
- }));
260
- exports.getCollectionData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
261
- var _k;
262
- const models = getModals(req);
263
- const { search, collectionName, collectionItems } = req.body;
264
- const collectionItem = defaults_1.defaults.collections.find((collection) => collection.collectionName === collectionName);
265
- if (!collectionItem) {
266
- throw new Error(`No collection is specified with ${collectionName}`);
267
- }
268
- let limit = collectionItem.searchLimit || 10;
269
- if (Array.isArray(collectionItems))
270
- limit = Math.max(collectionItems.length, limit);
271
- // setting up mongoose model
272
- const TempModel = (0, helper_1.getCollectionModal)(collectionName, models);
273
- // fetching data
274
- let query = collectionItem.filters || {};
275
- const orOptions = [];
276
- let addFieldOptions = {};
277
- if (search &&
278
- Array.isArray(collectionItem.searchColumns) &&
279
- collectionItem.searchColumns.length) {
280
- collectionItem.searchColumns.forEach((column) => orOptions.push({
281
- [column]: {
282
- $regex: search,
283
- $options: 'i',
284
- },
285
- }));
286
- }
287
- else {
288
- orOptions.push({});
289
- }
290
- if (Array.isArray(collectionItems) && collectionItems.length) {
291
- addFieldOptions = {
292
- __order: {
293
- $indexOfArray: [
294
- collectionItems,
295
- {
296
- $toString: '$_id',
297
- },
298
- ],
299
- },
300
- };
301
- orOptions.push({ _id: { $in: (0, helper_1.formatCollectionItems)(collectionItems) } });
302
- }
303
- if (orOptions.length > 0) {
304
- query = Object.assign(Object.assign({}, query), { $or: orOptions });
305
- }
306
- const collectionData = yield TempModel.aggregate([
307
- ...(Array.isArray(collectionItem.aggregations)
308
- ? collectionItem.aggregations
309
- : []),
310
- {
311
- $match: query,
312
- },
313
- { $addFields: addFieldOptions },
314
- {
315
- $sort: {
316
- __order: -1,
317
- },
318
- },
319
- {
320
- $limit: limit,
321
- },
322
- ]);
323
- res.message = (_k = req === null || req === void 0 ? void 0 : req.i18n) === null || _k === void 0 ? void 0 : _k.t('widget.getCollectionData');
324
- return (0, responseHandlers_1.successResponse)({ docs: collectionData }, res);
325
- }));
326
- exports.getLanguages = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
327
- return (0, responseHandlers_1.successResponse)(Array.isArray(defaults_1.defaults.languages) ? defaults_1.defaults.languages : [], res);
328
- }));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLanguages = exports.getCollectionData = exports.getWidgetTypes = exports.getItemsTypes = exports.partialUpdateWidget = exports.getSingleWidget = exports.getWidgets = exports.deleteWidget = exports.updateWidget = exports.createWidget = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mongoose_1 = require("mongoose");
6
+ const dbService_1 = require("../services/dbService");
7
+ const constants_1 = require("../constants");
8
+ const responseHandlers_1 = require("./../utils/responseHandlers");
9
+ const defaults_1 = require("../utils/defaults");
10
+ const helper_1 = require("../utils/helper");
11
+ const types_1 = require("../types");
12
+ const dataService_1 = require("../services/dataService");
13
+ const catchAsync = (fn) => {
14
+ return defaults_1.defaults.catchAsync(fn, 'Widget');
15
+ };
16
+ const getModals = (req) => defaults_1.defaults.getModals(req);
17
+ const deleteItems = (widgetId, models) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
+ const { Item } = models;
19
+ yield (0, dbService_1.deleteAll)(Item, { widgetId: new mongoose_1.Types.ObjectId(widgetId) });
20
+ });
21
+ const createItems = (itemsData, widgetId, models) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
+ const { Item, SrcSet } = models;
23
+ itemsData = itemsData.map((item) => (Object.assign(Object.assign({}, item), { _id: new mongoose_1.Types.ObjectId(), widgetId })));
24
+ const srcSetItems = itemsData.reduce((acc, item) => {
25
+ if (Array.isArray(item.srcset)) {
26
+ acc.push(...item.srcset.map((srcSetItem) => (Object.assign(Object.assign({}, srcSetItem), { itemId: item._id }))));
27
+ delete item.srcset;
28
+ }
29
+ return acc;
30
+ }, []);
31
+ yield (0, dbService_1.bulkInsert)(Item, itemsData);
32
+ yield (0, dbService_1.bulkInsert)(SrcSet, srcSetItems);
33
+ });
34
+ exports.createWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
35
+ var _a;
36
+ const models = getModals(req);
37
+ const data = req.body;
38
+ let items = [];
39
+ yield (0, dbService_1.checkUnique)({
40
+ Modal: models['Widget'],
41
+ uniqueField: 'code',
42
+ value: data.code,
43
+ errorMessage: constants_1.VALIDATION.WIDGET_EXISTS
44
+ });
45
+ if ('items' in data) {
46
+ items = JSON.parse(JSON.stringify(data.items));
47
+ delete data.items;
48
+ }
49
+ const widget = yield (0, dbService_1.create)(models['Widget'], data);
50
+ if (items.length > 0) {
51
+ yield createItems(items, widget._id, models);
52
+ }
53
+ res.message = (_a = req === null || req === void 0 ? void 0 : req.i18n) === null || _a === void 0 ? void 0 : _a.t('widget.create');
54
+ return (0, responseHandlers_1.createdDocumentResponse)(widget, res);
55
+ }));
56
+ exports.updateWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
57
+ var _b;
58
+ const models = getModals(req);
59
+ const data = req.body;
60
+ const _id = req.params['id'];
61
+ let items = [];
62
+ if ('items' in data) {
63
+ items = JSON.parse(JSON.stringify(data.items));
64
+ delete data.items;
65
+ }
66
+ const updatedWidget = yield (0, dbService_1.update)(models['Widget'], { _id }, data);
67
+ if (items.length > 0 && updatedWidget) {
68
+ yield deleteItems(_id, models);
69
+ yield createItems(items, updatedWidget._id, models);
70
+ }
71
+ if (updatedWidget) {
72
+ (0, dataService_1.updateRedisWidget)(updatedWidget.code, models);
73
+ (0, dataService_1.updateWidgetPagesData)([updatedWidget.id], models);
74
+ }
75
+ res.message = (_b = req === null || req === void 0 ? void 0 : req.i18n) === null || _b === void 0 ? void 0 : _b.t('widget.update');
76
+ return (0, responseHandlers_1.successResponse)(updatedWidget, res);
77
+ }));
78
+ exports.deleteWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
79
+ var _c;
80
+ const models = getModals(req);
81
+ yield deleteItems(req.params['id'], models);
82
+ const _id = new mongoose_1.Types.ObjectId(req.params['id']);
83
+ const deletedWidget = yield (0, dbService_1.remove)(models['Widget'], { _id });
84
+ if (deletedWidget) {
85
+ (0, dataService_1.updateRedisWidget)(deletedWidget.code, models);
86
+ (0, dataService_1.updateWidgetPagesData)([deletedWidget.id], models);
87
+ }
88
+ res.message = (_c = req === null || req === void 0 ? void 0 : req.i18n) === null || _c === void 0 ? void 0 : _c.t('widget.delete');
89
+ return (0, responseHandlers_1.successResponse)(deletedWidget, res);
90
+ }));
91
+ exports.getWidgets = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
92
+ var _d;
93
+ const { Widget } = getModals(req);
94
+ const search = req.body.search || '';
95
+ const { collectionItems } = req.body;
96
+ const { page, limit, sort } = req.body.options;
97
+ const all = (typeof req.body.all !== 'undefined' && req.body.all === true) || false;
98
+ const isActive = typeof req.body.isActive !== 'undefined'
99
+ ? req.body.isActive || false
100
+ : null;
101
+ const customOptions = Object.assign({ pagination: !all, sort, select: 'name code isActive canDel' }, (page && limit ? { page, limit } : {}));
102
+ const orOptions = [];
103
+ if (search) {
104
+ orOptions.push({ name: { $regex: search, $options: 'i' } });
105
+ orOptions.push({ code: { $regex: search, $options: 'i' } });
106
+ }
107
+ else {
108
+ orOptions.push({});
109
+ }
110
+ if (Array.isArray(collectionItems) && collectionItems.length) {
111
+ orOptions.push({ _id: { $in: collectionItems } });
112
+ }
113
+ const query = {
114
+ isDeleted: false,
115
+ isActive: { $in: isActive === null ? [true, false] : [isActive] },
116
+ $or: orOptions,
117
+ };
118
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
119
+ // @ts-ignore
120
+ const notifications = yield (0, dbService_1.list)(Widget, query, customOptions);
121
+ res.message = (_d = req === null || req === void 0 ? void 0 : req.i18n) === null || _d === void 0 ? void 0 : _d.t('widget.getAll');
122
+ return (0, responseHandlers_1.successResponse)(notifications, res);
123
+ }));
124
+ exports.getSingleWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
125
+ var _e, _f;
126
+ const { Widget, Item } = getModals(req);
127
+ const _id = req.params['id'];
128
+ const widget = yield (yield (0, dbService_1.getOne)(Widget, { _id, isDeleted: true })).toJSON();
129
+ widget['items'] = yield Item.aggregate([
130
+ {
131
+ $match: {
132
+ widgetId: new mongoose_1.Types.ObjectId(_id),
133
+ isDeleted: false,
134
+ },
135
+ },
136
+ {
137
+ $project: Object.assign({}, defaults_1.commonExcludedFields),
138
+ },
139
+ ...(defaults_1.defaults.languages && ((_e = defaults_1.defaults.languages) === null || _e === void 0 ? void 0 : _e.length) > 0
140
+ ? defaults_1.defaults.languages.reduce((arr, lng) => {
141
+ arr.push({
142
+ $lookup: {
143
+ from: 'file',
144
+ let: { imgsId: { $toObjectId: `$imgs.${lng.code}` } },
145
+ as: `imgs.${lng.code}`,
146
+ pipeline: [
147
+ {
148
+ $match: {
149
+ $expr: {
150
+ $eq: ['$_id', '$$imgsId'],
151
+ },
152
+ },
153
+ },
154
+ {
155
+ $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { width: 0, module: 0, height: 0 }),
156
+ },
157
+ ],
158
+ },
159
+ }, {
160
+ $unwind: {
161
+ path: `$imgs.${lng.code}`,
162
+ preserveNullAndEmptyArrays: true,
163
+ },
164
+ });
165
+ return arr;
166
+ }, [])
167
+ : [
168
+ {
169
+ $lookup: {
170
+ from: 'file',
171
+ let: { imgId: '$img' },
172
+ as: 'img',
173
+ pipeline: [
174
+ {
175
+ $match: {
176
+ $expr: {
177
+ $eq: ['$_id', '$$imgId'],
178
+ },
179
+ },
180
+ },
181
+ {
182
+ $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { width: 0, module: 0, height: 0 }),
183
+ },
184
+ ],
185
+ },
186
+ },
187
+ {
188
+ $unwind: {
189
+ path: '$img',
190
+ preserveNullAndEmptyArrays: true,
191
+ },
192
+ },
193
+ ]),
194
+ {
195
+ $lookup: {
196
+ from: 'srcsets',
197
+ let: { item: '$_id' },
198
+ as: 'srcset',
199
+ pipeline: [
200
+ {
201
+ $match: {
202
+ $expr: {
203
+ $eq: ['$itemId', '$$item'],
204
+ },
205
+ },
206
+ },
207
+ {
208
+ $project: Object.assign(Object.assign({}, defaults_1.commonExcludedFields), { _id: 0, itemId: 0 }),
209
+ },
210
+ ],
211
+ },
212
+ },
213
+ ]);
214
+ res.message = (_f = req === null || req === void 0 ? void 0 : req.i18n) === null || _f === void 0 ? void 0 : _f.t('widget.getOne');
215
+ return (0, responseHandlers_1.successResponse)(widget, res);
216
+ }));
217
+ exports.partialUpdateWidget = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
218
+ var _g;
219
+ const models = getModals(req);
220
+ const data = req.body;
221
+ const _id = req.params['id'];
222
+ const updatedWidget = yield (0, dbService_1.update)(models['Widget'], { _id }, data);
223
+ if (updatedWidget) {
224
+ (0, dataService_1.updateRedisWidget)(updatedWidget.code, models);
225
+ (0, dataService_1.updateWidgetPagesData)([updatedWidget.id], models);
226
+ }
227
+ res.message = (_g = req === null || req === void 0 ? void 0 : req.i18n) === null || _g === void 0 ? void 0 : _g.t('widget.partialUpdate');
228
+ return (0, responseHandlers_1.successResponse)(updatedWidget, res);
229
+ }));
230
+ exports.getItemsTypes = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
231
+ var _h;
232
+ const itemsTypes = [
233
+ {
234
+ value: Object.keys(types_1.ItemsType)[0],
235
+ label: Object.values(types_1.ItemsType)[0],
236
+ },
237
+ ];
238
+ defaults_1.defaults.collections.forEach((item) => {
239
+ itemsTypes.push({
240
+ value: item.collectionName,
241
+ label: item.title,
242
+ });
243
+ });
244
+ res.message = (_h = req === null || req === void 0 ? void 0 : req.i18n) === null || _h === void 0 ? void 0 : _h.t('widget.getItemsTypes');
245
+ return (0, responseHandlers_1.successResponse)(itemsTypes, res);
246
+ }));
247
+ exports.getWidgetTypes = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
248
+ var _j;
249
+ const widgetTypes = Object.entries(types_1.WidgetTypes).map((e) => ({
250
+ label: e[1],
251
+ value: e[0],
252
+ }));
253
+ if (Array.isArray(defaults_1.defaults.customWidgetTypes) &&
254
+ defaults_1.defaults.customWidgetTypes.length > 0) {
255
+ widgetTypes.push(...defaults_1.defaults.customWidgetTypes);
256
+ }
257
+ res.message = (_j = req === null || req === void 0 ? void 0 : req.i18n) === null || _j === void 0 ? void 0 : _j.t('widget.getWidgetTypes');
258
+ return (0, responseHandlers_1.successResponse)(widgetTypes, res);
259
+ }));
260
+ exports.getCollectionData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
261
+ var _k;
262
+ const models = getModals(req);
263
+ const { search, collectionName, collectionItems } = req.body;
264
+ const collectionItem = defaults_1.defaults.collections.find((collection) => collection.collectionName === collectionName);
265
+ if (!collectionItem) {
266
+ throw new Error(`No collection is specified with ${collectionName}`);
267
+ }
268
+ let limit = collectionItem.searchLimit || 10;
269
+ if (Array.isArray(collectionItems))
270
+ limit = Math.max(collectionItems.length, limit);
271
+ // setting up mongoose model
272
+ const TempModel = (0, helper_1.getCollectionModal)(collectionName, models);
273
+ // fetching data
274
+ let query = collectionItem.filters || {};
275
+ const orOptions = [];
276
+ let addFieldOptions = {};
277
+ if (search &&
278
+ Array.isArray(collectionItem.searchColumns) &&
279
+ collectionItem.searchColumns.length) {
280
+ collectionItem.searchColumns.forEach((column) => orOptions.push({
281
+ [column]: {
282
+ $regex: search,
283
+ $options: 'i',
284
+ },
285
+ }));
286
+ }
287
+ else {
288
+ orOptions.push({});
289
+ }
290
+ if (Array.isArray(collectionItems) && collectionItems.length) {
291
+ addFieldOptions = {
292
+ __order: {
293
+ $indexOfArray: [
294
+ collectionItems,
295
+ {
296
+ $toString: '$_id',
297
+ },
298
+ ],
299
+ },
300
+ };
301
+ orOptions.push({ _id: { $in: (0, helper_1.formatCollectionItems)(collectionItems) } });
302
+ }
303
+ if (orOptions.length > 0) {
304
+ query = Object.assign(Object.assign({}, query), { $or: orOptions });
305
+ }
306
+ const collectionData = yield TempModel.aggregate([
307
+ ...(Array.isArray(collectionItem.aggregations)
308
+ ? collectionItem.aggregations
309
+ : []),
310
+ {
311
+ $match: query,
312
+ },
313
+ { $addFields: addFieldOptions },
314
+ {
315
+ $sort: {
316
+ __order: -1,
317
+ },
318
+ },
319
+ {
320
+ $limit: limit,
321
+ },
322
+ ]);
323
+ res.message = (_k = req === null || req === void 0 ? void 0 : req.i18n) === null || _k === void 0 ? void 0 : _k.t('widget.getCollectionData');
324
+ return (0, responseHandlers_1.successResponse)({ docs: collectionData }, res);
325
+ }));
326
+ exports.getLanguages = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
327
+ return (0, responseHandlers_1.successResponse)(Array.isArray(defaults_1.defaults.languages) ? defaults_1.defaults.languages : [], res);
328
+ }));
329
329
  //# sourceMappingURL=WidgetController.js.map