@resolveio/server-lib 3.2.11 → 3.2.12

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 (177) hide show
  1. package/collections/active-subscription.collection.d.ts +7 -0
  2. package/collections/active-subscription.collection.js +68 -0
  3. package/collections/app-status.collection.d.ts +7 -0
  4. package/collections/app-status.collection.js +43 -0
  5. package/collections/app-version.collection.d.ts +7 -0
  6. package/collections/app-version.collection.js +56 -0
  7. package/collections/billing-logged-in-users.collection.d.ts +7 -0
  8. package/collections/billing-logged-in-users.collection.js +73 -0
  9. package/collections/counter.collection.d.ts +9 -0
  10. package/collections/counter.collection.js +73 -0
  11. package/collections/cron-job-history.collection.d.ts +7 -0
  12. package/collections/cron-job-history.collection.js +86 -0
  13. package/collections/cron-job.collection.d.ts +7 -0
  14. package/collections/cron-job.collection.js +89 -0
  15. package/collections/file.collection.d.ts +9 -0
  16. package/collections/file.collection.js +73 -0
  17. package/collections/flag.collection.d.ts +7 -0
  18. package/collections/flag.collection.js +47 -0
  19. package/collections/log.collection.d.ts +7 -0
  20. package/collections/log.collection.js +65 -0
  21. package/collections/logged-in-users.collection.d.ts +7 -0
  22. package/collections/logged-in-users.collection.js +70 -0
  23. package/collections/method-call.collection.d.ts +6 -0
  24. package/collections/method-call.collection.js +44 -0
  25. package/collections/method-response.collection.d.ts +6 -0
  26. package/collections/method-response.collection.js +48 -0
  27. package/collections/notification.collection.d.ts +7 -0
  28. package/collections/notification.collection.js +43 -0
  29. package/collections/queue-flag.collection.d.ts +7 -0
  30. package/collections/queue-flag.collection.js +41 -0
  31. package/collections/queue-method.collection.d.ts +7 -0
  32. package/collections/queue-method.collection.js +119 -0
  33. package/collections/queue-response.collection.d.ts +7 -0
  34. package/collections/queue-response.collection.js +74 -0
  35. package/collections/support-ticket.collection.d.ts +7 -0
  36. package/collections/support-ticket.collection.js +200 -0
  37. package/collections/user.collection.d.ts +9 -0
  38. package/collections/user.collection.js +153 -0
  39. package/cron/cron.d.ts +5 -0
  40. package/cron/cron.js +160 -0
  41. package/fixtures/cron-jobs.d.ts +1 -0
  42. package/fixtures/cron-jobs.js +90 -0
  43. package/fixtures/init.d.ts +1 -0
  44. package/fixtures/init.js +67 -0
  45. package/http/auth.d.ts +2 -0
  46. package/http/auth.js +468 -0
  47. package/http/health.d.ts +1 -0
  48. package/http/health.js +8 -0
  49. package/index.d.ts +16 -0
  50. package/index.js +125 -0
  51. package/managers/cron.manager.d.ts +16 -0
  52. package/managers/cron.manager.js +202 -0
  53. package/managers/database.manager.d.ts +6 -0
  54. package/managers/database.manager.js +12 -0
  55. package/managers/method.manager.d.ts +28 -0
  56. package/managers/method.manager.js +584 -0
  57. package/managers/queue-method.manager.d.ts +13 -0
  58. package/managers/queue-method.manager.js +240 -0
  59. package/managers/subscription.manager.d.ts +28 -0
  60. package/managers/subscription.manager.js +808 -0
  61. package/managers/support.manager.d.ts +22 -0
  62. package/managers/support.manager.js +320 -0
  63. package/methods/accounts.d.ts +2 -0
  64. package/methods/accounts.js +253 -0
  65. package/methods/aws.d.ts +2 -0
  66. package/methods/aws.js +387 -0
  67. package/methods/cloudconvert.d.ts +2 -0
  68. package/methods/cloudconvert.js +37 -0
  69. package/methods/collections.d.ts +2 -0
  70. package/methods/collections.js +750 -0
  71. package/methods/counters.d.ts +2 -0
  72. package/methods/counters.js +107 -0
  73. package/methods/cron-jobs.d.ts +2 -0
  74. package/methods/cron-jobs.js +132 -0
  75. package/methods/flags.d.ts +2 -0
  76. package/methods/flags.js +6 -0
  77. package/methods/logs.d.ts +2 -0
  78. package/methods/logs.js +29 -0
  79. package/methods/pdf.d.ts +2 -0
  80. package/methods/pdf.js +303 -0
  81. package/models/active-subscription.model.d.ts +13 -0
  82. package/models/active-subscription.model.js +2 -0
  83. package/models/app-status.model.d.ts +4 -0
  84. package/models/app-status.model.js +2 -0
  85. package/models/app-version.model.d.ts +4 -0
  86. package/models/app-version.model.js +2 -0
  87. package/models/billing-logged-in-users.model.d.ts +7 -0
  88. package/models/billing-logged-in-users.model.js +2 -0
  89. package/models/collection-document.model.d.ts +6 -0
  90. package/models/collection-document.model.js +2 -0
  91. package/models/counter.model.d.ts +5 -0
  92. package/models/counter.model.js +2 -0
  93. package/models/cron-job-history.model.d.ts +12 -0
  94. package/models/cron-job-history.model.js +2 -0
  95. package/models/cron-job.model.d.ts +13 -0
  96. package/models/cron-job.model.js +2 -0
  97. package/models/dialog.model.d.ts +23 -0
  98. package/models/dialog.model.js +2 -0
  99. package/models/file.model.d.ts +9 -0
  100. package/models/file.model.js +2 -0
  101. package/models/flag.model.d.ts +5 -0
  102. package/models/flag.model.js +2 -0
  103. package/models/log.model.d.ts +11 -0
  104. package/models/log.model.js +2 -0
  105. package/models/logged-in-users.model.d.ts +9 -0
  106. package/models/logged-in-users.model.js +2 -0
  107. package/models/method-call.model.d.ts +7 -0
  108. package/models/method-call.model.js +2 -0
  109. package/models/method-response.model.d.ts +8 -0
  110. package/models/method-response.model.js +2 -0
  111. package/models/method.model.d.ts +10 -0
  112. package/models/method.model.js +2 -0
  113. package/models/notification.model.d.ts +4 -0
  114. package/models/notification.model.js +2 -0
  115. package/models/pagination.model.d.ts +11 -0
  116. package/models/pagination.model.js +20 -0
  117. package/models/permission.model.d.ts +12 -0
  118. package/models/permission.model.js +2 -0
  119. package/models/queue-method.model.d.ts +10 -0
  120. package/models/queue-method.model.js +2 -0
  121. package/models/queue-response.model.d.ts +10 -0
  122. package/models/queue-response.model.js +2 -0
  123. package/models/select-data-label.model.d.ts +9 -0
  124. package/models/select-data-label.model.js +2 -0
  125. package/models/server-response.model.d.ts +5 -0
  126. package/models/server-response.model.js +2 -0
  127. package/models/subscription.model.d.ts +30 -0
  128. package/models/subscription.model.js +2 -0
  129. package/models/support-method.model.d.ts +9 -0
  130. package/models/support-method.model.js +2 -0
  131. package/models/support-ticket.model.d.ts +61 -0
  132. package/models/support-ticket.model.js +2 -0
  133. package/models/user.model.d.ts +14 -0
  134. package/models/user.model.js +2 -0
  135. package/package.json +1 -1
  136. package/private/email-templates/enrollment.html +12 -0
  137. package/private/email-templates/forgot-password.html +12 -0
  138. package/private/email-templates/support-ticket-deleted.html +40 -0
  139. package/private/email-templates/support-ticket-modified.html +71 -0
  140. package/private/email-templates/support-ticket.html +71 -0
  141. package/private/images/ResolveIO.png +0 -0
  142. package/publications/app-status.d.ts +2 -0
  143. package/publications/app-status.js +14 -0
  144. package/publications/app-version.d.ts +2 -0
  145. package/publications/app-version.js +14 -0
  146. package/publications/billing-logged-in-users.d.ts +1 -0
  147. package/publications/billing-logged-in-users.js +63 -0
  148. package/publications/cron-jobs.d.ts +2 -0
  149. package/publications/cron-jobs.js +14 -0
  150. package/publications/files.d.ts +2 -0
  151. package/publications/files.js +71 -0
  152. package/publications/flags.d.ts +2 -0
  153. package/publications/flags.js +23 -0
  154. package/publications/logs.d.ts +2 -0
  155. package/publications/logs.js +26 -0
  156. package/publications/method-calls.d.ts +2 -0
  157. package/publications/method-calls.js +14 -0
  158. package/publications/method-responses.d.ts +2 -0
  159. package/publications/method-responses.js +14 -0
  160. package/publications/notifications.d.ts +2 -0
  161. package/publications/notifications.js +14 -0
  162. package/publications/super-admin.d.ts +2 -0
  163. package/publications/super-admin.js +21 -0
  164. package/publications/support-tickets.d.ts +1 -0
  165. package/publications/support-tickets.js +200 -0
  166. package/server-app.d.ts +35 -0
  167. package/server-app.js +638 -0
  168. package/support-methods/aws.d.ts +2 -0
  169. package/support-methods/aws.js +276 -0
  170. package/support-methods/collections.d.ts +2 -0
  171. package/support-methods/collections.js +471 -0
  172. package/support-methods/counters.d.ts +2 -0
  173. package/support-methods/counters.js +189 -0
  174. package/support-methods/support.d.ts +2 -0
  175. package/support-methods/support.js +236 -0
  176. package/util/common.d.ts +14 -0
  177. package/util/common.js +341 -0
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var mongoose_1 = require("mongoose");
4
+ var common_1 = require("../util/common");
5
+ var simpl_schema_1 = require("simpl-schema");
6
+ var log_collection_1 = require("../collections/log.collection");
7
+ var pagination_model_1 = require("../models/pagination.model");
8
+ var __1 = require("..");
9
+ function loadSupportCollectionMethods(supportManager) {
10
+ supportManager.supportMethods({
11
+ findOne: {
12
+ check: new simpl_schema_1.default({
13
+ collection: {
14
+ type: String
15
+ },
16
+ query: {
17
+ type: Object,
18
+ blackbox: true
19
+ }
20
+ }),
21
+ function: function (collection, query) {
22
+ return __1.ResolveIOServer.getSupportDB().model(collection).findOne(query).exec();
23
+ }
24
+ },
25
+ find: {
26
+ check: new simpl_schema_1.default({
27
+ collection: {
28
+ type: String
29
+ },
30
+ query: {
31
+ type: Object,
32
+ blackbox: true
33
+ },
34
+ sort: {
35
+ type: Object,
36
+ blackbox: true,
37
+ optional: true
38
+ }
39
+ }),
40
+ function: function (collection, query, sortQuery) {
41
+ if (sortQuery === void 0) { sortQuery = {}; }
42
+ return __1.ResolveIOServer.getSupportDB().model(collection).find(query).sort(sortQuery).exec();
43
+ }
44
+ },
45
+ findWithOptions: {
46
+ check: new simpl_schema_1.default({
47
+ collection: {
48
+ type: String
49
+ },
50
+ query: {
51
+ type: Object,
52
+ blackbox: true
53
+ },
54
+ options: {
55
+ type: pagination_model_1.PaginationOptionsSchema
56
+ }
57
+ }),
58
+ function: function (collection, query, options) {
59
+ return __1.ResolveIOServer.getSupportDB().model(collection).find(query).sort(options.sort).limit(options.limit).skip(options.skip).select(options.fields).exec();
60
+ }
61
+ },
62
+ // Insert 1 document
63
+ // @Inputs: collection, document
64
+ // @Outputs: res = _id of new document, err = not inserted
65
+ insertDocument: {
66
+ check: new simpl_schema_1.default({
67
+ collection: {
68
+ type: String
69
+ },
70
+ document: {
71
+ type: Object,
72
+ blackbox: true
73
+ }
74
+ }),
75
+ function: function (collection, document) {
76
+ var _this = this;
77
+ return new Promise(function (resolve, reject) {
78
+ var schemaErrors = null;
79
+ try {
80
+ __1.ResolveIOServer.getSupportDB().model(collection)['simplschema'].validate(document);
81
+ }
82
+ catch (errors) {
83
+ schemaErrors = errors;
84
+ supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);
85
+ }
86
+ if (schemaErrors) {
87
+ console.log(schemaErrors);
88
+ reject('Schema Errors');
89
+ }
90
+ else {
91
+ if (common_1.getBinarySize(JSON.stringify(document)) < 200000) {
92
+ log_collection_1.Logs.create({
93
+ _id: mongoose_1.Types.ObjectId().toHexString(),
94
+ date: new Date(),
95
+ type: 'info',
96
+ title: 'Insert Document',
97
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
98
+ payload: JSON.stringify(document),
99
+ method: 'insertDocument',
100
+ user: _this.user,
101
+ messageId: ''
102
+ });
103
+ }
104
+ else {
105
+ log_collection_1.Logs.create({
106
+ _id: mongoose_1.Types.ObjectId().toHexString(),
107
+ date: new Date(),
108
+ type: 'info',
109
+ title: 'Insert Document',
110
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
111
+ payload: 'Too Big',
112
+ method: 'insertDocument',
113
+ user: _this.user,
114
+ messageId: ''
115
+ });
116
+ }
117
+ var id_1 = mongoose_1.Types.ObjectId().toHexString();
118
+ document._id = id_1;
119
+ document.__v = 0;
120
+ __1.ResolveIOServer.getSupportDB().model(collection).create(document).then(function () { return resolve(id_1); }, function (err) { return reject(err); });
121
+ }
122
+ });
123
+ }
124
+ },
125
+ // Replaces 1 document with new document (from _id)
126
+ // @Inputs: collection, document id
127
+ // @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
128
+ // Search for doc, check version, if found then try and update
129
+ updateDocument: {
130
+ check: new simpl_schema_1.default({
131
+ collection: {
132
+ type: String
133
+ },
134
+ f_document: {
135
+ type: Object,
136
+ blackbox: true
137
+ }
138
+ }),
139
+ function: function (collection, f_document) {
140
+ var _this = this;
141
+ return new Promise(function (resolve, reject) {
142
+ __1.ResolveIOServer.getSupportDB().model(collection).findOne({ _id: f_document._id }).lean().exec(function (errDoc, currDoc) {
143
+ if (currDoc) {
144
+ if (currDoc.__v === f_document.__v) {
145
+ var versionDoc = common_1.deepCopy(currDoc);
146
+ versionDoc._id = {
147
+ _id: currDoc._id,
148
+ __v: currDoc.__v
149
+ };
150
+ var schemaErrors = null;
151
+ try {
152
+ __1.ResolveIOServer.getSupportDB().model(collection)['simplschema'].validate(f_document);
153
+ }
154
+ catch (errors) {
155
+ schemaErrors = errors;
156
+ supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);
157
+ }
158
+ if (schemaErrors) {
159
+ console.log(schemaErrors);
160
+ reject('Schema Errors');
161
+ }
162
+ else {
163
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).create(versionDoc).then(function (doc) {
164
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).deleteMany({
165
+ $and: [
166
+ { '_id._id': currDoc._id },
167
+ { '_id.__v': { $lte: currDoc.__v - 4 } }
168
+ ]
169
+ }).exec();
170
+ }, function (err) {
171
+ console.log(err);
172
+ });
173
+ var updates = common_1.getMongoUpdates(currDoc, f_document, true);
174
+ if (updates) {
175
+ __1.ResolveIOServer.getSupportDB().model(collection).updateOne({ _id: f_document._id }, updates, { strict: false }).exec().then(function (res) {
176
+ resolve(res.nModified);
177
+ }, function (err) { return reject(err); });
178
+ }
179
+ else {
180
+ resolve(1);
181
+ }
182
+ if (common_1.getBinarySize(JSON.stringify(f_document)) < 200000) {
183
+ log_collection_1.Logs.create({
184
+ _id: mongoose_1.Types.ObjectId().toHexString(),
185
+ date: new Date(),
186
+ type: 'info',
187
+ title: 'Update Document',
188
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
189
+ payload: JSON.stringify(f_document),
190
+ method: 'updateDocument',
191
+ user: _this.user,
192
+ messageId: ''
193
+ });
194
+ }
195
+ else {
196
+ log_collection_1.Logs.create({
197
+ _id: mongoose_1.Types.ObjectId().toHexString(),
198
+ date: new Date(),
199
+ type: 'info',
200
+ title: 'Update Document',
201
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
202
+ payload: 'Too Big',
203
+ method: 'updateDocument',
204
+ user: _this.user,
205
+ messageId: ''
206
+ });
207
+ }
208
+ }
209
+ }
210
+ else {
211
+ console.log('invalid version - ' + collection, currDoc.__v, f_document.__v);
212
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).findOne({
213
+ $and: [
214
+ { '_id._id': currDoc._id },
215
+ { '_id.__v': f_document.__v }
216
+ ]
217
+ }).lean().exec(function (errOldDoc, oldDoc) {
218
+ var newCurrDocId = currDoc._id;
219
+ if (oldDoc) {
220
+ var versionDoc_1 = common_1.deepCopy(currDoc);
221
+ versionDoc_1._id = {
222
+ _id: currDoc._id,
223
+ __v: currDoc.__v
224
+ };
225
+ var updatedDoc = common_1.getMongoMergeUpdatedDoc(f_document, currDoc, oldDoc);
226
+ updatedDoc._id = newCurrDocId;
227
+ updatedDoc.__v++;
228
+ __1.ResolveIOServer.getSupportDB().model(collection).replaceOne({ _id: newCurrDocId }, updatedDoc).exec().then(function (res) {
229
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).create(versionDoc_1).then(function (doc) {
230
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).deleteMany({
231
+ $and: [
232
+ { '_id._id': versionDoc_1._id._id },
233
+ { '_id.__v': { $lte: versionDoc_1._id.__v - 4 } }
234
+ ]
235
+ }).exec();
236
+ resolve(res.nModified);
237
+ });
238
+ }, function (err) { return reject(err); });
239
+ }
240
+ else {
241
+ reject('Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document.__v);
242
+ }
243
+ });
244
+ }
245
+ }
246
+ else {
247
+ reject(errDoc);
248
+ }
249
+ });
250
+ });
251
+ }
252
+ },
253
+ // Updates 1 document's props (from _id)
254
+ // @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})
255
+ // @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
256
+ // Search for doc, check version, if found then try and update props
257
+ updateDocumentProps: {
258
+ check: new simpl_schema_1.default({
259
+ collection: {
260
+ type: String
261
+ },
262
+ doc_id: {
263
+ type: String
264
+ },
265
+ updateParams: {
266
+ type: Array
267
+ },
268
+ 'updateParams.$': {
269
+ type: Object,
270
+ blackbox: true
271
+ },
272
+ doc__v: {
273
+ type: Number
274
+ }
275
+ }),
276
+ function: function (collection, doc_id, updateParams, doc__v) {
277
+ var _this = this;
278
+ return new Promise(function (resolve, reject) {
279
+ __1.ResolveIOServer.getSupportDB().model(collection).findOne({ _id: doc_id }).lean().exec(function (errDoc, currDoc) {
280
+ if (currDoc) {
281
+ var modifiedDoc_1 = common_1.deepCopy(currDoc);
282
+ updateParams.forEach(function (data) {
283
+ modifiedDoc_1[data.prop] = data.data;
284
+ });
285
+ if (modifiedDoc_1.__v === doc__v) {
286
+ var versionDoc = common_1.deepCopy(currDoc);
287
+ versionDoc._id = {
288
+ _id: currDoc._id,
289
+ __v: currDoc.__v
290
+ };
291
+ var schemaErrors = null;
292
+ try {
293
+ __1.ResolveIOServer.getSupportDB().model(collection)['simplschema'].validate(modifiedDoc_1);
294
+ }
295
+ catch (errors) {
296
+ schemaErrors = errors;
297
+ supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc_1]);
298
+ }
299
+ if (schemaErrors) {
300
+ console.log(schemaErrors);
301
+ reject('Schema Errors');
302
+ }
303
+ else {
304
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).create(versionDoc).then(function (doc) {
305
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).deleteMany({
306
+ $and: [
307
+ { '_id._id': currDoc._id },
308
+ { '_id.__v': { $lte: currDoc.__v - 4 } }
309
+ ]
310
+ }).exec();
311
+ }, function (err) {
312
+ console.log(err);
313
+ });
314
+ var updates = common_1.getMongoUpdates(currDoc, modifiedDoc_1, true);
315
+ if (updates) {
316
+ __1.ResolveIOServer.getSupportDB().model(collection).updateOne({ _id: modifiedDoc_1._id }, updates, { strict: false }).exec().then(function (res) {
317
+ resolve(res.ok);
318
+ }, function (err) { return reject(err); });
319
+ }
320
+ else {
321
+ resolve(1);
322
+ }
323
+ if (common_1.getBinarySize(JSON.stringify(updateParams)) < 200000) {
324
+ log_collection_1.Logs.create({
325
+ _id: mongoose_1.Types.ObjectId().toHexString(),
326
+ date: new Date(),
327
+ type: 'info',
328
+ title: 'Update Document Props',
329
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection + ', Id: ' + doc_id + ', ' + 'Version: ' + doc__v,
330
+ payload: JSON.stringify(updateParams),
331
+ method: 'updateDocumentProps',
332
+ user: _this.user,
333
+ messageId: ''
334
+ });
335
+ }
336
+ else {
337
+ log_collection_1.Logs.create({
338
+ _id: mongoose_1.Types.ObjectId().toHexString(),
339
+ date: new Date(),
340
+ type: 'info',
341
+ title: 'Update Document Props',
342
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection + ', Id: ' + doc_id + ', ' + 'Version: ' + doc__v,
343
+ payload: 'Too Big',
344
+ method: 'updateDocumentProps',
345
+ user: _this.user,
346
+ messageId: ''
347
+ });
348
+ }
349
+ }
350
+ }
351
+ else {
352
+ console.log('invalid version - ' + collection, currDoc.__v, doc__v);
353
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).findOne({
354
+ $and: [
355
+ { '_id._id': currDoc._id },
356
+ { '_id.__v': doc__v }
357
+ ]
358
+ }).lean().exec(function (errOldDoc, oldDoc) {
359
+ var newCurrDocId = currDoc._id;
360
+ if (oldDoc) {
361
+ var versionDoc_2 = common_1.deepCopy(currDoc);
362
+ versionDoc_2._id = {
363
+ _id: currDoc._id,
364
+ __v: currDoc.__v
365
+ };
366
+ var updatedDoc = common_1.getMongoMergeUpdatedDoc(modifiedDoc_1, currDoc, oldDoc);
367
+ updatedDoc._id = newCurrDocId;
368
+ updatedDoc.__v++;
369
+ __1.ResolveIOServer.getSupportDB().model(collection).replaceOne({ _id: newCurrDocId }, updatedDoc).exec().then(function (res) {
370
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).create(versionDoc_2).then(function (doc) {
371
+ __1.ResolveIOServer.getSupportDB().model(__1.ResolveIOServer.getSupportDB().model(collection)['versionCollection']).deleteMany({
372
+ $and: [
373
+ { '_id._id': versionDoc_2._id._id },
374
+ { '_id.__v': { $lte: versionDoc_2._id.__v - 4 } }
375
+ ]
376
+ }).exec();
377
+ }, function (err) {
378
+ console.log(err);
379
+ });
380
+ resolve(res.nModified);
381
+ }, function (err) { return reject(err); });
382
+ }
383
+ else {
384
+ reject('Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + modifiedDoc_1.__v);
385
+ }
386
+ });
387
+ }
388
+ }
389
+ else {
390
+ reject(errDoc);
391
+ }
392
+ });
393
+ });
394
+ }
395
+ },
396
+ // Removes 1 document (from _id)
397
+ // @Inputs: collection, document id
398
+ // @Outputs: res = 1 (deleted), res = 0 (not deleted), err = not deleted
399
+ // Search for doc, if found then try and remove
400
+ removeDocument: {
401
+ check: new simpl_schema_1.default({
402
+ collection: {
403
+ type: String
404
+ },
405
+ doc_id: {
406
+ type: String
407
+ }
408
+ }),
409
+ function: function (collection, doc_id) {
410
+ var _this = this;
411
+ return new Promise(function (resolve, reject) {
412
+ log_collection_1.Logs.create({
413
+ _id: mongoose_1.Types.ObjectId().toHexString(),
414
+ date: new Date(),
415
+ type: 'info',
416
+ title: 'Remove Document',
417
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
418
+ payload: JSON.stringify({ _id: doc_id }),
419
+ method: 'removeDocument',
420
+ user: _this.user,
421
+ messageId: ''
422
+ });
423
+ __1.ResolveIOServer.getSupportDB().model(collection).deleteOne({ _id: doc_id }).exec(function (err, res) {
424
+ if (err) {
425
+ reject(err);
426
+ }
427
+ else {
428
+ resolve(res.ok);
429
+ }
430
+ });
431
+ });
432
+ }
433
+ },
434
+ removeDocumentWithQuery: {
435
+ check: new simpl_schema_1.default({
436
+ collection: {
437
+ type: String
438
+ },
439
+ query: {
440
+ type: Object,
441
+ blackbox: true
442
+ }
443
+ }),
444
+ function: function (collection, query) {
445
+ var _this = this;
446
+ return new Promise(function (resolve, reject) {
447
+ log_collection_1.Logs.create({
448
+ _id: mongoose_1.Types.ObjectId().toHexString(),
449
+ date: new Date(),
450
+ type: 'info',
451
+ title: 'Remove Document (Query)',
452
+ message: 'User: ' + _this.user + ', Collection Type: ' + collection,
453
+ payload: JSON.stringify({ _id: query }),
454
+ method: 'removeDocumentWithQuery',
455
+ user: _this.user,
456
+ messageId: ''
457
+ });
458
+ __1.ResolveIOServer.getSupportDB().model(collection).deleteOne(query).exec(function (err, res) {
459
+ if (err) {
460
+ reject(err);
461
+ }
462
+ else {
463
+ resolve(res.ok);
464
+ }
465
+ });
466
+ });
467
+ }
468
+ }
469
+ });
470
+ }
471
+ exports.loadSupportCollectionMethods = loadSupportCollectionMethods;
@@ -0,0 +1,2 @@
1
+ import { SupportManager } from '../managers/support.manager';
2
+ export declare function loadCounterMethods(supportManager: SupportManager): void;
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ var mongoose_1 = require("mongoose");
39
+ var counter_collection_1 = require("../collections/counter.collection");
40
+ var simpl_schema_1 = require("simpl-schema");
41
+ var __1 = require("..");
42
+ function loadCounterMethods(supportManager) {
43
+ supportManager.supportMethods({
44
+ incCounter: {
45
+ check: new simpl_schema_1.default({
46
+ counterType: {
47
+ type: String
48
+ }
49
+ }),
50
+ function: function (counterType) {
51
+ var _this = this;
52
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
53
+ var counter, newCount;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0: return [4 /*yield*/, counter_collection_1.SupportCounters.findOne({ type: counterType })];
57
+ case 1:
58
+ counter = _a.sent();
59
+ if (!!counter) return [3 /*break*/, 2];
60
+ counter_collection_1.SupportCounters.create({
61
+ _id: mongoose_1.Types.ObjectId().toHexString(),
62
+ count: 2,
63
+ type: counterType
64
+ });
65
+ resolve(1);
66
+ return [3 /*break*/, 4];
67
+ case 2: return [4 /*yield*/, counter_collection_1.SupportCounters.findOneAndUpdate({ type: counterType }, { $inc: { count: 1 } }).exec()];
68
+ case 3:
69
+ newCount = _a.sent();
70
+ resolve(newCount.count);
71
+ _a.label = 4;
72
+ case 4: return [2 /*return*/];
73
+ }
74
+ });
75
+ }); });
76
+ }
77
+ },
78
+ countCollectionWithQuery: {
79
+ check: new simpl_schema_1.default({
80
+ collectionType: {
81
+ type: String
82
+ },
83
+ query: {
84
+ type: Object,
85
+ blackbox: true
86
+ }
87
+ }),
88
+ function: function (collectionType, query) {
89
+ return __1.ResolveIOServer.getSupportDB().model(collectionType).collection.countDocuments(query);
90
+ }
91
+ },
92
+ countQuery: {
93
+ check: new simpl_schema_1.default({
94
+ collectionType: {
95
+ type: String
96
+ },
97
+ search: {
98
+ type: String,
99
+ optional: true
100
+ },
101
+ filters: simpl_schema_1.default.oneOf({
102
+ type: Array,
103
+ optional: true
104
+ }, {
105
+ type: Object,
106
+ blackbox: true,
107
+ optional: true
108
+ }),
109
+ 'filters.$': {
110
+ type: Object,
111
+ optional: true,
112
+ blackbox: true
113
+ },
114
+ subType: {
115
+ type: String,
116
+ optional: true
117
+ }
118
+ }),
119
+ function: function (collectionType, search, filters) {
120
+ if (search === void 0) { search = ''; }
121
+ if (filters === void 0) { filters = []; }
122
+ var query = {};
123
+ if (!search && (!filters || !filters.length)) {
124
+ query = {};
125
+ }
126
+ else {
127
+ if (filters && filters.length) {
128
+ query['$and'] = [];
129
+ filters.forEach(function (filter) {
130
+ var _a;
131
+ query['$and'].push((_a = {}, _a[filter['prop']] = filter['data'], _a));
132
+ });
133
+ }
134
+ if (search && collectionType === 'support-tickets') {
135
+ var searchRegEx = { '$regex': '.*' + (search || '') + '.*', '$options': 'i' };
136
+ if (query['$and']) {
137
+ query['$and'].push({
138
+ $or: [
139
+ {
140
+ support_ticket_number_string: searchRegEx
141
+ },
142
+ {
143
+ date_created_string: searchRegEx
144
+ },
145
+ {
146
+ status: searchRegEx
147
+ },
148
+ {
149
+ user_created: searchRegEx
150
+ }
151
+ ]
152
+ });
153
+ }
154
+ else {
155
+ query = {
156
+ $or: [
157
+ {
158
+ support_ticket_number_string: searchRegEx
159
+ },
160
+ {
161
+ date_created_string: searchRegEx
162
+ },
163
+ {
164
+ status: searchRegEx
165
+ },
166
+ {
167
+ user_created: searchRegEx
168
+ }
169
+ ]
170
+ };
171
+ }
172
+ }
173
+ }
174
+ return __1.ResolveIOServer.getSupportDB().model(collectionType).collection.countDocuments(query);
175
+ }
176
+ },
177
+ countCollection: {
178
+ check: new simpl_schema_1.default({
179
+ collectionType: {
180
+ type: String
181
+ }
182
+ }),
183
+ function: function (collectionType) {
184
+ return __1.ResolveIOServer.getSupportDB().model(collectionType).collection.countDocuments();
185
+ }
186
+ }
187
+ });
188
+ }
189
+ exports.loadCounterMethods = loadCounterMethods;
@@ -0,0 +1,2 @@
1
+ import { SupportManager } from '../managers/support.manager';
2
+ export declare function loadSupportMethods(supportManager: SupportManager): void;