@resolveio/server-lib 22.2.36 → 22.2.37
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/methods/support.js
CHANGED
|
@@ -112,12 +112,13 @@ function loadSupportMethods(methodManager) {
|
|
|
112
112
|
skipValidation: true,
|
|
113
113
|
function: function (supportTicket) {
|
|
114
114
|
return __awaiter(this, void 0, void 0, function () {
|
|
115
|
-
var body, error_2;
|
|
115
|
+
var safePayload, body, error_2;
|
|
116
116
|
return __generator(this, function (_a) {
|
|
117
117
|
switch (_a.label) {
|
|
118
118
|
case 0:
|
|
119
119
|
_a.trys.push([0, 2, , 3]);
|
|
120
|
-
|
|
120
|
+
safePayload = sanitizeSupportTicketCreatePayload(supportTicket);
|
|
121
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportInsertTicket', safePayload)];
|
|
121
122
|
case 1:
|
|
122
123
|
body = _a.sent();
|
|
123
124
|
return [2 /*return*/, body.data.result];
|
|
@@ -187,12 +188,13 @@ function loadSupportMethods(methodManager) {
|
|
|
187
188
|
}),
|
|
188
189
|
function: function (options, searchString, filters) {
|
|
189
190
|
return __awaiter(this, void 0, void 0, function () {
|
|
190
|
-
var body, results, error_4;
|
|
191
|
+
var safeFilters, body, results, error_4;
|
|
191
192
|
return __generator(this, function (_a) {
|
|
192
193
|
switch (_a.label) {
|
|
193
194
|
case 0:
|
|
194
195
|
_a.trys.push([0, 2, , 3]);
|
|
195
|
-
|
|
196
|
+
safeFilters = sanitizeSupportTicketFiltersForBackend(filters);
|
|
197
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, safeFilters])];
|
|
196
198
|
case 1:
|
|
197
199
|
body = _a.sent();
|
|
198
200
|
results = Array.isArray(body.data.result) ? body.data.result : [];
|
|
@@ -222,12 +224,13 @@ function loadSupportMethods(methodManager) {
|
|
|
222
224
|
}),
|
|
223
225
|
function: function (searchString, filters) {
|
|
224
226
|
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
var body, error_5;
|
|
227
|
+
var safeFilters, body, error_5;
|
|
226
228
|
return __generator(this, function (_a) {
|
|
227
229
|
switch (_a.label) {
|
|
228
230
|
case 0:
|
|
229
231
|
_a.trys.push([0, 2, , 3]);
|
|
230
|
-
|
|
232
|
+
safeFilters = sanitizeSupportTicketFiltersForBackend(filters);
|
|
233
|
+
return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, safeFilters])];
|
|
231
234
|
case 1:
|
|
232
235
|
body = _a.sent();
|
|
233
236
|
return [2 /*return*/, body.data.result];
|
|
@@ -289,6 +292,7 @@ function sanitizeSupportTicketForClientView(ticket) {
|
|
|
289
292
|
return ticket;
|
|
290
293
|
}
|
|
291
294
|
var next = __assign({}, ticket);
|
|
295
|
+
next.status = normalizeSupportTicketStatusForClient(ticket.status);
|
|
292
296
|
next.messages = Array.isArray(ticket.messages)
|
|
293
297
|
? ticket.messages
|
|
294
298
|
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
@@ -301,11 +305,26 @@ function sanitizeSupportTicketForClientView(ticket) {
|
|
|
301
305
|
delete next.source;
|
|
302
306
|
return next;
|
|
303
307
|
}
|
|
308
|
+
function sanitizeSupportTicketCreatePayload(ticket) {
|
|
309
|
+
if (!ticket || typeof ticket !== 'object') {
|
|
310
|
+
return ticket;
|
|
311
|
+
}
|
|
312
|
+
var next = __assign({}, ticket);
|
|
313
|
+
next.status = normalizeSupportTicketStatusForBackend(ticket.status);
|
|
314
|
+
next.messages = Array.isArray(ticket.messages)
|
|
315
|
+
? ticket.messages
|
|
316
|
+
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
317
|
+
.map(function (message) { return stripSupportMessageInternalMetadata(message); })
|
|
318
|
+
: [];
|
|
319
|
+
delete next.url_ticket;
|
|
320
|
+
return next;
|
|
321
|
+
}
|
|
304
322
|
function sanitizeSupportTicketUpdatePayload(ticket) {
|
|
305
323
|
if (!ticket || typeof ticket !== 'object') {
|
|
306
324
|
return ticket;
|
|
307
325
|
}
|
|
308
326
|
var next = __assign({}, ticket);
|
|
327
|
+
next.status = normalizeSupportTicketStatusForBackend(ticket.status);
|
|
309
328
|
next.messages = Array.isArray(ticket.messages)
|
|
310
329
|
? ticket.messages
|
|
311
330
|
.filter(function (message) { return !isInternalSupportMessage(message); })
|
|
@@ -318,5 +337,73 @@ function sanitizeSupportTicketUpdatePayload(ticket) {
|
|
|
318
337
|
delete next.url_ticket;
|
|
319
338
|
return next;
|
|
320
339
|
}
|
|
340
|
+
function normalizeSupportTicketStatusForClient(status) {
|
|
341
|
+
var value = String(status || '').trim().toLowerCase();
|
|
342
|
+
if (value === 'opened' || value === 'active') {
|
|
343
|
+
return 'Active';
|
|
344
|
+
}
|
|
345
|
+
if (value === 'review') {
|
|
346
|
+
return 'Review';
|
|
347
|
+
}
|
|
348
|
+
if (value === 'resolved' || value === 'closed') {
|
|
349
|
+
return 'Closed';
|
|
350
|
+
}
|
|
351
|
+
return String(status || '').trim();
|
|
352
|
+
}
|
|
353
|
+
function normalizeSupportTicketStatusForBackend(status) {
|
|
354
|
+
var value = String(status || '').trim().toLowerCase();
|
|
355
|
+
if (value === 'active' || value === 'opened') {
|
|
356
|
+
return 'Opened';
|
|
357
|
+
}
|
|
358
|
+
if (value === 'review') {
|
|
359
|
+
return 'Review';
|
|
360
|
+
}
|
|
361
|
+
if (value === 'resolved' || value === 'closed') {
|
|
362
|
+
return 'Closed';
|
|
363
|
+
}
|
|
364
|
+
return String(status || '').trim();
|
|
365
|
+
}
|
|
366
|
+
function sanitizeSupportTicketFiltersForBackend(filters) {
|
|
367
|
+
if (!Array.isArray(filters)) {
|
|
368
|
+
return [];
|
|
369
|
+
}
|
|
370
|
+
return filters.map(function (filter) { return sanitizeSupportTicketFilterForBackend(filter); });
|
|
371
|
+
}
|
|
372
|
+
function sanitizeSupportTicketFilterForBackend(filter) {
|
|
373
|
+
if (!filter || typeof filter !== 'object') {
|
|
374
|
+
return filter;
|
|
375
|
+
}
|
|
376
|
+
var next = __assign({}, filter);
|
|
377
|
+
if (String(filter.prop || '').trim() !== 'status') {
|
|
378
|
+
return next;
|
|
379
|
+
}
|
|
380
|
+
next.data = normalizeSupportTicketFilterDataForBackend(filter.data);
|
|
381
|
+
return next;
|
|
382
|
+
}
|
|
383
|
+
function normalizeSupportTicketFilterDataForBackend(value) {
|
|
384
|
+
if (typeof value === 'string') {
|
|
385
|
+
return normalizeSupportTicketStatusForBackend(value);
|
|
386
|
+
}
|
|
387
|
+
if (Array.isArray(value)) {
|
|
388
|
+
return value.map(function (item) { return normalizeSupportTicketFilterDataForBackend(item); });
|
|
389
|
+
}
|
|
390
|
+
if (!value || typeof value !== 'object') {
|
|
391
|
+
return value;
|
|
392
|
+
}
|
|
393
|
+
var next = __assign({}, value);
|
|
394
|
+
if (typeof next.$eq === 'string') {
|
|
395
|
+
next.$eq = normalizeSupportTicketStatusForBackend(next.$eq);
|
|
396
|
+
}
|
|
397
|
+
if (typeof next.$ne === 'string') {
|
|
398
|
+
next.$ne = normalizeSupportTicketStatusForBackend(next.$ne);
|
|
399
|
+
}
|
|
400
|
+
if (Array.isArray(next.$in)) {
|
|
401
|
+
next.$in = next.$in.map(function (entry) { return normalizeSupportTicketFilterDataForBackend(entry); });
|
|
402
|
+
}
|
|
403
|
+
if (Array.isArray(next.$nin)) {
|
|
404
|
+
next.$nin = next.$nin.map(function (entry) { return normalizeSupportTicketFilterDataForBackend(entry); });
|
|
405
|
+
}
|
|
406
|
+
return next;
|
|
407
|
+
}
|
|
321
408
|
|
|
322
409
|
//# sourceMappingURL=support.js.map
|
package/methods/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/support.ts"],"names":[],"mappings":"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","file":"support.js","sourcesContent":["import axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nconst SUPPORT_INTERNAL_MESSAGE_PATTERN = /\\b(codex|openai|ai dashboard|ai assistant|workflow update|build plan|pull request|confidence gate|dependency follow-up|thread key|workspace cleanup|support automation)\\b/i;\nconst SUPPORT_INTERNAL_SOURCE_PATTERN = /\\b(support_automation|codex|openai|ai(?:[_ -]?assistant|[_ -]?dashboard)?)\\b/i;\n\nexport function loadSupportMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n supportCreateBillingUser: {\n \tcheck: new SimpleSchema({\n\t\t\t\tuser: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(user) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/billing-user', user);\n return body.data.result;\n }\n catch {\n return false;\n }\n }\n\t\t},\n\t\tsupportGetSupportTicketWithId: {\n \tcheck: new SimpleSchema({\n\t\t\t\tid_support_ticket: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n }),\n function: async function(id_support_ticket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportTicketWithId', {id_support_ticket: id_support_ticket});\n return sanitizeSupportTicketForClientView(body.data.result);\n }\n catch(error) {\n error.message = `Error in Support Get Support Ticket With Id: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportInsertSupportTicket: {\n \tskipValidation: true,\n function: async function(supportTicket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportInsertTicket', supportTicket);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Insert Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportUpdateSupportTicket: {\n\t\t\tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketUpdatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportUpdateTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Update Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketsWithOptions: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\toptions: {\n\t\t\t\t\ttype: Object\n\t\t\t\t},\n\t\t\t\t'options.limit': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.skip': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.sort': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\t'options.fields': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(options, searchString, filters) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, filters]);\n const results = Array.isArray(body.data.result) ? body.data.result : [];\n return results.map((ticket: any) => sanitizeSupportTicketForClientView(ticket));\n }\n catch(error) {\n error.message = `Error in Support Tickets With Options: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketCount: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(searchString, filters) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, filters]);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Ticket Count: ${error.message}`;\n throw error;\n }\n }\n\t\t}\n\t});\n}\n\nfunction isInternalSupportMessage(message: any): boolean {\n\tif (!message || typeof message !== 'object') {\n\t\treturn false;\n\t}\n\tif (message.internal === true) {\n\t\treturn true;\n\t}\n\tconst visibility = String(message.visibility || '').trim().toLowerCase();\n\tif (visibility === 'internal') {\n\t\treturn true;\n\t}\n\tconst badge = String(message.badge || '').trim().toLowerCase();\n\tif (badge.includes('internal')) {\n\t\treturn true;\n\t}\n\tconst source = String(message.source || '').trim();\n\tif (source && SUPPORT_INTERNAL_SOURCE_PATTERN.test(source)) {\n\t\treturn true;\n\t}\n\tconst text = [\n\t\tString(message.type || ''),\n\t\tString(message.user || ''),\n\t\tString(message.message || '')\n\t].join(' ');\n\treturn SUPPORT_INTERNAL_MESSAGE_PATTERN.test(text);\n}\n\nfunction stripSupportMessageInternalMetadata(message: any): Record<string, any> {\n\tconst next: Record<string, any> = { ...(message || {}) };\n\tdelete next.internal;\n\tdelete next.visibility;\n\tdelete next.badge;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction buildSupportTicketDetailPath(ticket: any): string {\n\tconst ticketId = String(ticket?._id || '').trim();\n\tif (!ticketId) {\n\t\treturn '/support-ticket/detail';\n\t}\n\treturn `/support-ticket/detail/${ticketId}`;\n}\n\nfunction sanitizeSupportTicketForClientView(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.url_ticket = String(ticket.url_ticket || '').trim() || buildSupportTicketDetailPath(ticket);\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketUpdatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\tdelete next.url_ticket;\n\treturn next;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/support.ts"],"names":[],"mappings":"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","file":"support.js","sourcesContent":["import axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { MethodManager } from '../managers/method.manager';\nconst SUPPORT_INTERNAL_MESSAGE_PATTERN = /\\b(codex|openai|ai dashboard|ai assistant|workflow update|build plan|pull request|confidence gate|dependency follow-up|thread key|workspace cleanup|support automation)\\b/i;\nconst SUPPORT_INTERNAL_SOURCE_PATTERN = /\\b(support_automation|codex|openai|ai(?:[_ -]?assistant|[_ -]?dashboard)?)\\b/i;\n\nexport function loadSupportMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n supportCreateBillingUser: {\n \tcheck: new SimpleSchema({\n\t\t\t\tuser: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(user) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/billing-user', user);\n return body.data.result;\n }\n catch {\n return false;\n }\n }\n\t\t},\n\t\tsupportGetSupportTicketWithId: {\n \tcheck: new SimpleSchema({\n\t\t\t\tid_support_ticket: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n }),\n function: async function(id_support_ticket) {\n try {\n let body = await axios.post('https://backend.resolveio.com/api/support/supportTicketWithId', {id_support_ticket: id_support_ticket});\n return sanitizeSupportTicketForClientView(body.data.result);\n }\n catch(error) {\n error.message = `Error in Support Get Support Ticket With Id: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportInsertSupportTicket: {\n \tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketCreatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportInsertTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Insert Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportUpdateSupportTicket: {\n\t\t\tskipValidation: true,\n function: async function(supportTicket) {\n try {\n const safePayload = sanitizeSupportTicketUpdatePayload(supportTicket);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportUpdateTicket', safePayload);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Update Support Ticket: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketsWithOptions: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\toptions: {\n\t\t\t\t\ttype: Object\n\t\t\t\t},\n\t\t\t\t'options.limit': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.skip': {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\t'options.sort': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\t'options.fields': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(options, searchString, filters) {\n try {\n const safeFilters = sanitizeSupportTicketFiltersForBackend(filters);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportticketsWithOptions', [options, searchString, safeFilters]);\n const results = Array.isArray(body.data.result) ? body.data.result : [];\n return results.map((ticket: any) => sanitizeSupportTicketForClientView(ticket));\n }\n catch(error) {\n error.message = `Error in Support Tickets With Options: ${error.message}`;\n throw error;\n }\n }\n\t\t},\n\t\tsupportticketCount: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tsearchString: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilters: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'filters.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n }),\n function: async function(searchString, filters) {\n try {\n const safeFilters = sanitizeSupportTicketFiltersForBackend(filters);\n let body = await axios.post('https://backend.resolveio.com/api/support/supportCountTickets', [searchString, safeFilters]);\n\n return body.data.result;\n }\n catch(error) {\n error.message = `Error in Support Ticket Count: ${error.message}`;\n throw error;\n }\n }\n\t\t}\n\t});\n}\n\nfunction isInternalSupportMessage(message: any): boolean {\n\tif (!message || typeof message !== 'object') {\n\t\treturn false;\n\t}\n\tif (message.internal === true) {\n\t\treturn true;\n\t}\n\tconst visibility = String(message.visibility || '').trim().toLowerCase();\n\tif (visibility === 'internal') {\n\t\treturn true;\n\t}\n\tconst badge = String(message.badge || '').trim().toLowerCase();\n\tif (badge.includes('internal')) {\n\t\treturn true;\n\t}\n\tconst source = String(message.source || '').trim();\n\tif (source && SUPPORT_INTERNAL_SOURCE_PATTERN.test(source)) {\n\t\treturn true;\n\t}\n\tconst text = [\n\t\tString(message.type || ''),\n\t\tString(message.user || ''),\n\t\tString(message.message || '')\n\t].join(' ');\n\treturn SUPPORT_INTERNAL_MESSAGE_PATTERN.test(text);\n}\n\nfunction stripSupportMessageInternalMetadata(message: any): Record<string, any> {\n\tconst next: Record<string, any> = { ...(message || {}) };\n\tdelete next.internal;\n\tdelete next.visibility;\n\tdelete next.badge;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction buildSupportTicketDetailPath(ticket: any): string {\n\tconst ticketId = String(ticket?._id || '').trim();\n\tif (!ticketId) {\n\t\treturn '/support-ticket/detail';\n\t}\n\treturn `/support-ticket/detail/${ticketId}`;\n}\n\nfunction sanitizeSupportTicketForClientView(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForClient(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.url_ticket = String(ticket.url_ticket || '').trim() || buildSupportTicketDetailPath(ticket);\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketCreatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForBackend(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tdelete next.url_ticket;\n\treturn next;\n}\n\nfunction sanitizeSupportTicketUpdatePayload(ticket: any): any {\n\tif (!ticket || typeof ticket !== 'object') {\n\t\treturn ticket;\n\t}\n\tconst next: Record<string, any> = { ...ticket };\n\tnext.status = normalizeSupportTicketStatusForBackend(ticket.status);\n\tnext.messages = Array.isArray(ticket.messages)\n\t\t? ticket.messages\n\t\t\t.filter((message: any) => !isInternalSupportMessage(message))\n\t\t\t.map((message: any) => stripSupportMessageInternalMetadata(message))\n\t\t: [];\n\tnext.notes = [];\n\tdelete next.automation;\n\tdelete next.ai_recommendations;\n\tdelete next.source;\n\tdelete next.url_ticket;\n\treturn next;\n}\n\nfunction normalizeSupportTicketStatusForClient(status: any): string {\n\tconst value = String(status || '').trim().toLowerCase();\n\tif (value === 'opened' || value === 'active') {\n\t\treturn 'Active';\n\t}\n\tif (value === 'review') {\n\t\treturn 'Review';\n\t}\n\tif (value === 'resolved' || value === 'closed') {\n\t\treturn 'Closed';\n\t}\n\treturn String(status || '').trim();\n}\n\nfunction normalizeSupportTicketStatusForBackend(status: any): string {\n\tconst value = String(status || '').trim().toLowerCase();\n\tif (value === 'active' || value === 'opened') {\n\t\treturn 'Opened';\n\t}\n\tif (value === 'review') {\n\t\treturn 'Review';\n\t}\n\tif (value === 'resolved' || value === 'closed') {\n\t\treturn 'Closed';\n\t}\n\treturn String(status || '').trim();\n}\n\nfunction sanitizeSupportTicketFiltersForBackend(filters: any): any {\n\tif (!Array.isArray(filters)) {\n\t\treturn [];\n\t}\n\treturn filters.map((filter: any) => sanitizeSupportTicketFilterForBackend(filter));\n}\n\nfunction sanitizeSupportTicketFilterForBackend(filter: any): any {\n\tif (!filter || typeof filter !== 'object') {\n\t\treturn filter;\n\t}\n\tconst next: Record<string, any> = { ...filter };\n\tif (String(filter.prop || '').trim() !== 'status') {\n\t\treturn next;\n\t}\n\tnext.data = normalizeSupportTicketFilterDataForBackend(filter.data);\n\treturn next;\n}\n\nfunction normalizeSupportTicketFilterDataForBackend(value: any): any {\n\tif (typeof value === 'string') {\n\t\treturn normalizeSupportTicketStatusForBackend(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item: any) => normalizeSupportTicketFilterDataForBackend(item));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst next: Record<string, any> = { ...value };\n\tif (typeof next.$eq === 'string') {\n\t\tnext.$eq = normalizeSupportTicketStatusForBackend(next.$eq);\n\t}\n\tif (typeof next.$ne === 'string') {\n\t\tnext.$ne = normalizeSupportTicketStatusForBackend(next.$ne);\n\t}\n\tif (Array.isArray(next.$in)) {\n\t\tnext.$in = next.$in.map((entry: any) => normalizeSupportTicketFilterDataForBackend(entry));\n\t}\n\tif (Array.isArray(next.$nin)) {\n\t\tnext.$nin = next.$nin.map((entry: any) => normalizeSupportTicketFilterDataForBackend(entry));\n\t}\n\treturn next;\n}\n"]}
|
|
@@ -47,7 +47,7 @@ export interface SupportTicketClientUserModel {
|
|
|
47
47
|
export type SupportTicketPriority = 'High' | 'Low';
|
|
48
48
|
export type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';
|
|
49
49
|
export type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';
|
|
50
|
-
type SupportTicketStatus = 'Opened' | 'Resolved';
|
|
50
|
+
export type SupportTicketStatus = 'Active' | 'Review' | 'Closed' | 'Opened' | 'Resolved';
|
|
51
51
|
export interface SupportTicketMessageModel {
|
|
52
52
|
message: string;
|
|
53
53
|
id_user: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/support-ticket.model.ts"],"names":[],"mappings":"","file":"support-ticket.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface SupportTicketModel extends CollectionDocument {\n\ttype: SupportTicketType;\n\tpriority: SupportTicketPriority;\n\tissue: string;\n\tai_recommendations?: SupportTicketAiRecommendationsModel;\n\tsupport_ticket_number: number;\n\tsupport_ticket_number_string: string;\n\tstatus: SupportTicketStatus;\n\tsubstatus: SupportTicketSubstatus;\n\tclient: string;\n\tid_client: string;\n\turl_ticket?: string;\n\tmessages: SupportTicketMessageModel[];\n\tdate_created: Date;\n\tdate_created_string: string;\n\tid_user_created: string;\n\tuser_created: string;\n\tbillable: boolean;\n\tdate_investigation?: Date;\n\tdate_closed?: Date;\n\tfiles: string[];\n\tcurrent_watchers: SupportTicketWatchersModel[];\n\tclient_user: SupportTicketClientUserModel;\n\tusers_assigned: SupportTicketUserAssignedModel[];\n\testimated_billable_hours?: number;\n\tbillable_hours?: number;\n\tbill_description: string;\n\ttasks: SupportTicketTaskModel[];\n\tnotes: SupportTicketNoteModel[];\n\tdifficulty: number;\n}\n\nexport interface SupportTicketAiRecommendationsModel {\n\tsource?: string;\n\thidden_from_client?: boolean;\n\tcreated_at?: Date;\n\tsource_message_id?: string;\n\tsummary?: string;\n\tinternal_recommendations?: string;\n\tcode_change_recommendations?: string;\n}\n\nexport interface SupportTicketClientUserModel {\n\tid_user: string;\n\tuser: string;\n\temail: string;\n}\n\nexport type SupportTicketPriority = 'High' | 'Low';\n\nexport type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';\nexport type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';\
|
|
1
|
+
{"version":3,"sources":["../../src/models/support-ticket.model.ts"],"names":[],"mappings":"","file":"support-ticket.model.js","sourcesContent":["import { CollectionDocument } from './collection-document.model';\n\nexport interface SupportTicketModel extends CollectionDocument {\n\ttype: SupportTicketType;\n\tpriority: SupportTicketPriority;\n\tissue: string;\n\tai_recommendations?: SupportTicketAiRecommendationsModel;\n\tsupport_ticket_number: number;\n\tsupport_ticket_number_string: string;\n\tstatus: SupportTicketStatus;\n\tsubstatus: SupportTicketSubstatus;\n\tclient: string;\n\tid_client: string;\n\turl_ticket?: string;\n\tmessages: SupportTicketMessageModel[];\n\tdate_created: Date;\n\tdate_created_string: string;\n\tid_user_created: string;\n\tuser_created: string;\n\tbillable: boolean;\n\tdate_investigation?: Date;\n\tdate_closed?: Date;\n\tfiles: string[];\n\tcurrent_watchers: SupportTicketWatchersModel[];\n\tclient_user: SupportTicketClientUserModel;\n\tusers_assigned: SupportTicketUserAssignedModel[];\n\testimated_billable_hours?: number;\n\tbillable_hours?: number;\n\tbill_description: string;\n\ttasks: SupportTicketTaskModel[];\n\tnotes: SupportTicketNoteModel[];\n\tdifficulty: number;\n}\n\nexport interface SupportTicketAiRecommendationsModel {\n\tsource?: string;\n\thidden_from_client?: boolean;\n\tcreated_at?: Date;\n\tsource_message_id?: string;\n\tsummary?: string;\n\tinternal_recommendations?: string;\n\tcode_change_recommendations?: string;\n}\n\nexport interface SupportTicketClientUserModel {\n\tid_user: string;\n\tuser: string;\n\temail: string;\n}\n\nexport type SupportTicketPriority = 'High' | 'Low';\n\nexport type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction';\nexport type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';\nexport type SupportTicketStatus = 'Active' | 'Review' | 'Closed' | 'Opened' | 'Resolved';\n\nexport interface SupportTicketMessageModel {\n\tmessage: string;\n\tid_user: string;\n\tuser: string;\n\tdate: Date;\n\ttype: SupportTicketMessageType;\n\tinternal?: boolean;\n\tvisibility?: 'public' | 'internal';\n\tbadge?: string;\n\tsource?: string;\n}\n\ntype SupportTicketMessageType = 'ResolveIO' | 'Client';\n\nexport interface SupportTicketWatchersModel {\n\tuser: string;\n\tid_user: string;\n\temail: string;\n}\n\nexport interface SupportTicketTaskModel {\n\tdescription: string;\n\tcompleted: boolean;\n\tid_user?: string;\n\tuser?: string;\n\tdate_created: Date;\n\tdate_completed?: Date;\n}\n\nexport interface SupportTicketNoteModel {\n\tdescription: string;\n\tid_user: string;\n\tuser: string;\n\tdate_created: Date;\n}\n\nexport interface SupportTicketUserAssignedModel {\n\tid_user: string;\n\tuser: string;\n\tdate_created: Date;\n} \n"]}
|