@antelopejs/dms-saas 0.3.1 → 0.3.2

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 (98) hide show
  1. package/README.md +0 -86
  2. package/dist/config/runtime.d.ts +0 -1
  3. package/dist/config/runtime.js +0 -7
  4. package/dist/config/runtime.js.map +1 -1
  5. package/dist/data-api/platformOwner/index.d.ts +0 -1
  6. package/dist/data-api/platformOwner/index.js +0 -1
  7. package/dist/data-api/platformOwner/index.js.map +1 -1
  8. package/dist/data-api/tenant/index.d.ts +0 -1
  9. package/dist/data-api/tenant/index.js +0 -1
  10. package/dist/data-api/tenant/index.js.map +1 -1
  11. package/dist/notifications/subjects.d.ts +0 -2
  12. package/dist/notifications/subjects.js +1 -13
  13. package/dist/notifications/subjects.js.map +1 -1
  14. package/dist/pages/platform/categories.d.ts +0 -1
  15. package/dist/pages/platform/categories.js +1 -8
  16. package/dist/pages/platform/categories.js.map +1 -1
  17. package/dist/pages/platform/index.d.ts +0 -1
  18. package/dist/pages/platform/index.js +0 -1
  19. package/dist/pages/platform/index.js.map +1 -1
  20. package/dist/pages/tenant/index.d.ts +0 -1
  21. package/dist/pages/tenant/index.js +0 -1
  22. package/dist/pages/tenant/index.js.map +1 -1
  23. package/dist/routes/platformOwner/index.d.ts +0 -1
  24. package/dist/routes/platformOwner/index.js +0 -1
  25. package/dist/routes/platformOwner/index.js.map +1 -1
  26. package/dist/routes/tenant/index.d.ts +0 -1
  27. package/dist/routes/tenant/index.js +0 -1
  28. package/dist/routes/tenant/index.js.map +1 -1
  29. package/dist/types/config.d.ts +0 -1
  30. package/frontend-vue/i18n/locales/saas-en-GB.json +1 -142
  31. package/frontend-vue/i18n/locales/saas-fr-FR.json +1 -142
  32. package/package.json +2 -4
  33. package/dist/data-api/platformOwner/support.d.ts +0 -58
  34. package/dist/data-api/platformOwner/support.js +0 -111
  35. package/dist/data-api/platformOwner/support.js.map +0 -1
  36. package/dist/data-api/support-fields.d.ts +0 -49
  37. package/dist/data-api/support-fields.js +0 -166
  38. package/dist/data-api/support-fields.js.map +0 -1
  39. package/dist/data-api/support-routes.d.ts +0 -10
  40. package/dist/data-api/support-routes.js +0 -71
  41. package/dist/data-api/support-routes.js.map +0 -1
  42. package/dist/data-api/tenant/support.d.ts +0 -39
  43. package/dist/data-api/tenant/support.js +0 -53
  44. package/dist/data-api/tenant/support.js.map +0 -1
  45. package/dist/pages/platform/support.d.ts +0 -9
  46. package/dist/pages/platform/support.js +0 -29
  47. package/dist/pages/platform/support.js.map +0 -1
  48. package/dist/pages/tenant/support.d.ts +0 -9
  49. package/dist/pages/tenant/support.js +0 -27
  50. package/dist/pages/tenant/support.js.map +0 -1
  51. package/dist/routes/platformOwner/support.d.ts +0 -21
  52. package/dist/routes/platformOwner/support.js +0 -180
  53. package/dist/routes/platformOwner/support.js.map +0 -1
  54. package/dist/routes/tenant/support.d.ts +0 -27
  55. package/dist/routes/tenant/support.js +0 -185
  56. package/dist/routes/tenant/support.js.map +0 -1
  57. package/dist/support/admissions.d.ts +0 -36
  58. package/dist/support/admissions.js +0 -136
  59. package/dist/support/admissions.js.map +0 -1
  60. package/dist/support/attachments.d.ts +0 -12
  61. package/dist/support/attachments.js +0 -56
  62. package/dist/support/attachments.js.map +0 -1
  63. package/dist/support/config.d.ts +0 -19
  64. package/dist/support/config.js +0 -75
  65. package/dist/support/config.js.map +0 -1
  66. package/dist/support/index.d.ts +0 -6
  67. package/dist/support/index.js +0 -23
  68. package/dist/support/index.js.map +0 -1
  69. package/dist/support/operations.d.ts +0 -51
  70. package/dist/support/operations.js +0 -109
  71. package/dist/support/operations.js.map +0 -1
  72. package/dist/support/plans.d.ts +0 -6
  73. package/dist/support/plans.js +0 -130
  74. package/dist/support/plans.js.map +0 -1
  75. package/dist/support/publications.d.ts +0 -8
  76. package/dist/support/publications.js +0 -106
  77. package/dist/support/publications.js.map +0 -1
  78. package/dist/support/recovery.d.ts +0 -7
  79. package/dist/support/recovery.js +0 -43
  80. package/dist/support/recovery.js.map +0 -1
  81. package/dist/support/service.d.ts +0 -51
  82. package/dist/support/service.js +0 -143
  83. package/dist/support/service.js.map +0 -1
  84. package/dist/support/transitions.d.ts +0 -4
  85. package/dist/support/transitions.js +0 -29
  86. package/dist/support/transitions.js.map +0 -1
  87. package/dist/support/uploads.d.ts +0 -39
  88. package/dist/support/uploads.js +0 -115
  89. package/dist/support/uploads.js.map +0 -1
  90. package/dist/support/validation.d.ts +0 -15
  91. package/dist/support/validation.js +0 -54
  92. package/dist/support/validation.js.map +0 -1
  93. package/frontend-vue/app/components/PlatformSupport.vue +0 -461
  94. package/frontend-vue/app/components/SupportAttachmentUpload.vue +0 -140
  95. package/frontend-vue/app/components/SupportThreadHistory.vue +0 -139
  96. package/frontend-vue/app/components/TenantSupport.vue +0 -415
  97. package/frontend-vue/app/composables/useSupportRequest.ts +0 -74
  98. package/frontend-vue/app/types/support.ts +0 -123
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supportTenantId = supportTenantId;
4
- exports.supportReadRoutes = supportReadRoutes;
5
- const interface_api_util_1 = require("@antelopejs/interface-api-util");
6
- const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
7
- const guards_1 = require("@antelopejs/interface-dms/guards");
8
- const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
9
- const auth_1 = require("@antelopejs/interface-dms/auth");
10
- const base_1 = require("@antelopejs/interface-dms/base");
11
- const db_1 = require("../db");
12
- const publications_1 = require("../support/publications");
13
- const HTTP_BAD_REQUEST = 400;
14
- const PAGE_SIZE = 20;
15
- const MAX_PAGE_SIZE = 100;
16
- const GUARDS = { tenant: guards_1.AuthTenantMember, platform: auth_1.AuthOwnerOnly };
17
- const RECENT_SORTS = {
18
- tickets: ["lastMessageAt", db_1.SUPPORT_TICKET_ORDER_INDEX],
19
- messages: ["createdAt", db_1.SUPPORT_MESSAGE_ORDER_INDEX],
20
- events: ["createdAt", db_1.SUPPORT_EVENT_ORDER_INDEX],
21
- owners: ["_id", "_id"],
22
- };
23
- function validatePagination(params) {
24
- (0, interface_api_util_1.assert)(Number.isSafeInteger(params.offset ?? 0) &&
25
- (params.offset ?? 0) >= 0 &&
26
- Number.isSafeInteger(params.limit ?? PAGE_SIZE) &&
27
- (params.limit ?? PAGE_SIZE) > 0 &&
28
- (!params.sortDirection || ["asc", "desc"].includes(params.sortDirection)), HTTP_BAD_REQUEST, "saas.errors.support.invalid_pagination");
29
- }
30
- function supportTenantId(ctx) {
31
- return ctx.routeParameters.tenantId ?? (0, request_tenant_1.getRequestTenantId)(ctx);
32
- }
33
- async function scopedParameters(ctx, params, collection) {
34
- validatePagination(params);
35
- const filters = { ...params.filters };
36
- if (collection === "messages" || collection === "events") {
37
- const ticketId = ctx.routeParameters.ticketId;
38
- await (0, publications_1.reconcileSupportTicket)((0, interface_database_decorators_1.GetModel)(db_1.SupportTicketModel, supportTenantId(ctx)), ticketId);
39
- filters.ticketId = [ticketId, "eq"];
40
- }
41
- if (collection === "owners")
42
- filters.owner = ["true", "eq"];
43
- const [dateField, recentIndex] = RECENT_SORTS[collection];
44
- const sortKey = params.sortKey ?? dateField;
45
- return {
46
- ...params,
47
- filters,
48
- limit: Math.min(params.limit ?? PAGE_SIZE, MAX_PAGE_SIZE),
49
- sortKey: sortKey === dateField ? recentIndex : sortKey,
50
- sortDirection: params.sortDirection ?? "desc",
51
- noPluck: false,
52
- noForeign: false,
53
- };
54
- }
55
- function scopedRoute(base, audience, collection) {
56
- return {
57
- ...base,
58
- args: [...base.args.slice(0, -1), GUARDS[audience]()],
59
- func: async function (ctx, params, ...rest) {
60
- const scoped = await scopedParameters(ctx, params, collection);
61
- return base.func.call(this, ctx, scoped, ...rest);
62
- },
63
- };
64
- }
65
- function supportReadRoutes(audience, collection) {
66
- return {
67
- list: scopedRoute(base_1.TableViewRoutes.List, audience, collection),
68
- count: scopedRoute(base_1.TableViewRoutes.Count, audience, collection),
69
- };
70
- }
71
- //# sourceMappingURL=support-routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support-routes.js","sourceRoot":"","sources":["../../src/data-api/support-routes.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { SupportMessage, SupportMessageModel, SupportTicket, SupportTicketEvent, SupportTicketEventModel, SupportTicketModel } from "../../db";
2
- import { SupportEventFields, SupportMessageFields, SupportTicketFields } from "../support-fields";
3
- declare const tenantSupportTicketsDataAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
4
- list: import("@antelopejs/interface-data-api").DataControllerCallback;
5
- count: import("@antelopejs/interface-data-api").DataControllerCallback;
6
- }> & {
7
- table: SupportTicket;
8
- }> & import("@antelopejs/interface-core/decorators").Class<SupportTicketFields> & {
9
- extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
10
- location: string;
11
- };
12
- export declare class tenantSupportTicketsDataAPI extends tenantSupportTicketsDataAPI_base {
13
- model: SupportTicketModel;
14
- }
15
- declare const tenantSupportMessagesDataAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
16
- list: import("@antelopejs/interface-data-api").DataControllerCallback;
17
- count: import("@antelopejs/interface-data-api").DataControllerCallback;
18
- }> & {
19
- table: SupportMessage;
20
- }> & import("@antelopejs/interface-core/decorators").Class<SupportMessageFields> & {
21
- extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
22
- location: string;
23
- };
24
- export declare class tenantSupportMessagesDataAPI extends tenantSupportMessagesDataAPI_base {
25
- model: SupportMessageModel;
26
- }
27
- declare const tenantSupportEventsDataAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
28
- list: import("@antelopejs/interface-data-api").DataControllerCallback;
29
- count: import("@antelopejs/interface-data-api").DataControllerCallback;
30
- }> & {
31
- table: SupportTicketEvent;
32
- }> & import("@antelopejs/interface-core/decorators").Class<SupportEventFields> & {
33
- extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
34
- location: string;
35
- };
36
- export declare class tenantSupportEventsDataAPI extends tenantSupportEventsDataAPI_base {
37
- model: SupportTicketEventModel;
38
- }
39
- export {};
@@ -1,53 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.tenantSupportEventsDataAPI = exports.tenantSupportMessagesDataAPI = exports.tenantSupportTicketsDataAPI = void 0;
13
- const interface_api_1 = require("@antelopejs/interface-api");
14
- const interface_data_api_1 = require("@antelopejs/interface-data-api");
15
- const metadata_1 = require("@antelopejs/interface-data-api/metadata");
16
- const tenant_scoped_model_1 = require("@antelopejs/interface-dms/tenant-scoped-model");
17
- const db_1 = require("../../db");
18
- const support_fields_1 = require("../support-fields");
19
- const support_routes_1 = require("../support-routes");
20
- let tenantSupportTicketsDataAPI = class tenantSupportTicketsDataAPI extends (0, interface_data_api_1.DataController)(db_1.SupportTicket, (0, support_routes_1.supportReadRoutes)("tenant", "tickets"), (0, interface_api_1.Controller)("/api/saas/tenant/tables/support-tickets", support_fields_1.SupportTicketFields)) {
21
- };
22
- exports.tenantSupportTicketsDataAPI = tenantSupportTicketsDataAPI;
23
- __decorate([
24
- (0, metadata_1.ModelReference)(),
25
- (0, tenant_scoped_model_1.TenantScopedModel)(db_1.SupportTicketModel),
26
- __metadata("design:type", db_1.SupportTicketModel)
27
- ], tenantSupportTicketsDataAPI.prototype, "model", void 0);
28
- exports.tenantSupportTicketsDataAPI = tenantSupportTicketsDataAPI = __decorate([
29
- (0, interface_data_api_1.RegisterDataController)()
30
- ], tenantSupportTicketsDataAPI);
31
- let tenantSupportMessagesDataAPI = class tenantSupportMessagesDataAPI extends (0, interface_data_api_1.DataController)(db_1.SupportMessage, (0, support_routes_1.supportReadRoutes)("tenant", "messages"), (0, interface_api_1.Controller)("/api/saas/support/:ticketId/messages", support_fields_1.SupportMessageFields)) {
32
- };
33
- exports.tenantSupportMessagesDataAPI = tenantSupportMessagesDataAPI;
34
- __decorate([
35
- (0, metadata_1.ModelReference)(),
36
- (0, tenant_scoped_model_1.TenantScopedModel)(db_1.SupportMessageModel),
37
- __metadata("design:type", db_1.SupportMessageModel)
38
- ], tenantSupportMessagesDataAPI.prototype, "model", void 0);
39
- exports.tenantSupportMessagesDataAPI = tenantSupportMessagesDataAPI = __decorate([
40
- (0, interface_data_api_1.RegisterDataController)()
41
- ], tenantSupportMessagesDataAPI);
42
- let tenantSupportEventsDataAPI = class tenantSupportEventsDataAPI extends (0, interface_data_api_1.DataController)(db_1.SupportTicketEvent, (0, support_routes_1.supportReadRoutes)("tenant", "events"), (0, interface_api_1.Controller)("/api/saas/support/:ticketId/events", support_fields_1.SupportEventFields)) {
43
- };
44
- exports.tenantSupportEventsDataAPI = tenantSupportEventsDataAPI;
45
- __decorate([
46
- (0, metadata_1.ModelReference)(),
47
- (0, tenant_scoped_model_1.TenantScopedModel)(db_1.SupportTicketEventModel),
48
- __metadata("design:type", db_1.SupportTicketEventModel)
49
- ], tenantSupportEventsDataAPI.prototype, "model", void 0);
50
- exports.tenantSupportEventsDataAPI = tenantSupportEventsDataAPI = __decorate([
51
- (0, interface_data_api_1.RegisterDataController)()
52
- ], tenantSupportEventsDataAPI);
53
- //# sourceMappingURL=support.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/data-api/tenant/support.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAuD;AACvD,uEAGwC;AACxC,sEAAyE;AACzE,uFAAkF;AAClF,iCAOkB;AAClB,sDAI2B;AAC3B,sDAAsD;AAI/C,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,IAAA,mCAAc,EAC7D,kBAAa,EACb,IAAA,kCAAiB,EAAC,QAAQ,EAAE,SAAS,CAAC,EACtC,IAAA,0BAAU,EAAC,yCAAyC,EAAE,oCAAmB,CAAC,CAC3E;CAIA,CAAA;AARY,kEAA2B;AAO9B;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,uCAAiB,EAAC,uBAAkB,CAAC;8BACvB,uBAAkB;0DAAC;sCAPvB,2BAA2B;IADvC,IAAA,2CAAsB,GAAE;GACZ,2BAA2B,CAQvC;AAIM,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,IAAA,mCAAc,EAC9D,mBAAc,EACd,IAAA,kCAAiB,EAAC,QAAQ,EAAE,UAAU,CAAC,EACvC,IAAA,0BAAU,EAAC,sCAAsC,EAAE,qCAAoB,CAAC,CACzE;CAIA,CAAA;AARY,oEAA4B;AAO/B;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,uCAAiB,EAAC,wBAAmB,CAAC;8BACxB,wBAAmB;2DAAC;uCAPxB,4BAA4B;IADxC,IAAA,2CAAsB,GAAE;GACZ,4BAA4B,CAQxC;AAIM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,IAAA,mCAAc,EAC5D,uBAAkB,EAClB,IAAA,kCAAiB,EAAC,QAAQ,EAAE,QAAQ,CAAC,EACrC,IAAA,0BAAU,EAAC,oCAAoC,EAAE,mCAAkB,CAAC,CACrE;CAIA,CAAA;AARY,gEAA0B;AAO7B;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,uCAAiB,EAAC,4BAAuB,CAAC;8BAC5B,4BAAuB;yDAAC;qCAP5B,0BAA0B;IADtC,IAAA,2CAAsB,GAAE;GACZ,0BAA0B,CAQtC"}
@@ -1,9 +0,0 @@
1
- declare const SaasPlatformSupportPageController_base: {
2
- new (...args: any[]): {};
3
- extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
4
- location: string;
5
- };
6
- export declare class SaasPlatformSupportPageController extends SaasPlatformSupportPageController_base {
7
- static content: import("@antelopejs/interface-dms").ComponentBuilder<unknown>;
8
- }
9
- export {};
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SaasPlatformSupportPageController = void 0;
10
- const page_1 = require("@antelopejs/interface-dms/page");
11
- const custom_1 = require("@antelopejs/interface-dms/base/custom");
12
- const layouts_1 = require("@antelopejs/interface-dms/base/layouts");
13
- const module_1 = require("../module");
14
- const categories_1 = require("./categories");
15
- let SaasPlatformSupportPageController = class SaasPlatformSupportPageController extends (0, page_1.PageController)("support", {
16
- displayName: "$saas.support.platform.title",
17
- description: "$saas.support.platform.description",
18
- module: module_1.SAAS_MODULE_ID,
19
- category: categories_1.supportCategory,
20
- icon: "i-ph-lifebuoy",
21
- order: 0,
22
- }, (0, layouts_1.DefaultLayout)({ fullWidth: true })) {
23
- static content = (0, custom_1.CustomComponent)("DmsSaasPlatformSupport");
24
- };
25
- exports.SaasPlatformSupportPageController = SaasPlatformSupportPageController;
26
- exports.SaasPlatformSupportPageController = SaasPlatformSupportPageController = __decorate([
27
- (0, page_1.RegisterPage)()
28
- ], SaasPlatformSupportPageController);
29
- //# sourceMappingURL=support.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/pages/platform/support.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAA8E;AAC9E,kEAAwE;AACxE,oEAAuE;AACvE,sCAA2C;AAC3C,6CAA+C;AAGxC,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,IAAA,qBAAc,EACnE,SAAS,EACT;IACE,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,oCAAoC;IACjD,MAAM,EAAE,uBAAc;IACtB,QAAQ,EAAE,4BAAe;IACzB,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,CAAC;CACT,EACD,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACnC;IACC,MAAM,CAAC,OAAO,GAAG,IAAA,wBAAe,EAAC,wBAAwB,CAAC,CAAC;;AAZhD,8EAAiC;4CAAjC,iCAAiC;IAD7C,IAAA,mBAAY,GAAE;GACF,iCAAiC,CAa7C"}
@@ -1,9 +0,0 @@
1
- declare const SaasTenantSupportPageController_base: {
2
- new (...args: any[]): {};
3
- extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
4
- location: string;
5
- };
6
- export declare class SaasTenantSupportPageController extends SaasTenantSupportPageController_base {
7
- static content: import("@antelopejs/interface-dms").ComponentBuilder<unknown>;
8
- }
9
- export {};
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SaasTenantSupportPageController = void 0;
10
- const page_1 = require("@antelopejs/interface-dms/page");
11
- const custom_1 = require("@antelopejs/interface-dms/base/custom");
12
- const layouts_1 = require("@antelopejs/interface-dms/base/layouts");
13
- const module_1 = require("../module");
14
- let SaasTenantSupportPageController = class SaasTenantSupportPageController extends (0, page_1.PageController)("support", {
15
- displayName: "$saas.support.tenant.title",
16
- description: "$saas.support.tenant.description",
17
- category: module_1.workspaceSettingsCategory,
18
- icon: "i-ph-lifebuoy",
19
- order: 90,
20
- }, (0, layouts_1.DefaultLayout)({ fullWidth: true })) {
21
- static content = (0, custom_1.CustomComponent)("DmsSaasTenantSupport");
22
- };
23
- exports.SaasTenantSupportPageController = SaasTenantSupportPageController;
24
- exports.SaasTenantSupportPageController = SaasTenantSupportPageController = __decorate([
25
- (0, page_1.RegisterPage)()
26
- ], SaasTenantSupportPageController);
27
- //# sourceMappingURL=support.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/pages/tenant/support.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAA8E;AAC9E,kEAAwE;AACxE,oEAAuE;AACvE,sCAAsD;AAG/C,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,IAAA,qBAAc,EACjE,SAAS,EACT;IACE,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,kCAAkC;IAC/C,QAAQ,EAAE,kCAAyB;IACnC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,EAAE;CACV,EACD,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACnC;IACC,MAAM,CAAC,OAAO,GAAG,IAAA,wBAAe,EAAC,sBAAsB,CAAC,CAAC;;AAX9C,0EAA+B;0CAA/B,+BAA+B;IAD3C,IAAA,mBAAY,GAAE;GACF,+BAA+B,CAY3C"}
@@ -1,21 +0,0 @@
1
- import { TenantModel } from "@antelopejs/interface-dms/db";
2
- import { type User, UserModel } from "@antelopejs/interface-dms/auth/db";
3
- import { type SupportMessage, type SupportTicket } from "../../db";
4
- import { type SupportAttachmentMetadata } from "../../support";
5
- import { type SupportRecoveryPage } from "../../support/recovery";
6
- interface PlatformSupportDetail {
7
- ticket: SupportTicket;
8
- tenantId: string;
9
- tenantName: string;
10
- }
11
- declare const SaasPlatformSupportController_base: import("@antelopejs/interface-api").ControllerClass<object>;
12
- export declare class SaasPlatformSupportController extends SaasPlatformSupportController_base {
13
- tenantModel: TenantModel;
14
- userModel: UserModel;
15
- reconcile(_user: User, tenantId: string, after?: string): Promise<SupportRecoveryPage>;
16
- detail(_user: User, tenantId: string, ticketId: string): Promise<PlatformSupportDetail>;
17
- reply(user: User, tenantId: string, ticketId: string, body: unknown): Promise<SupportMessage>;
18
- update(user: User, tenantId: string, ticketId: string, body: unknown): Promise<SupportTicket>;
19
- attachment(_user: User, tenantId: string, ticketId: string, resourceKey: string): Promise<SupportAttachmentMetadata>;
20
- }
21
- export {};
@@ -1,180 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SaasPlatformSupportController = void 0;
16
- const interface_api_1 = require("@antelopejs/interface-api");
17
- const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
- const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
19
- const interface_file_storage_1 = require("@antelopejs/interface-file-storage");
20
- const db_1 = require("@antelopejs/interface-dms/db");
21
- const auth_1 = require("@antelopejs/interface-dms/auth");
22
- const db_2 = require("@antelopejs/interface-dms/auth/db");
23
- const db_3 = require("../../db");
24
- const notifications_1 = require("../../notifications");
25
- const support_1 = require("../../support");
26
- const recovery_1 = require("../../support/recovery");
27
- const uploads_1 = require("../../support/uploads");
28
- const HTTP_BAD_REQUEST = 400;
29
- const HTTP_NOT_FOUND = 404;
30
- const TENANT_SUPPORT_PATH = "/settings/workspace/support";
31
- async function requireOwnerAssignment(users, value) {
32
- if (value === null)
33
- return null;
34
- (0, interface_api_util_1.assert)(typeof value === "string" && value.length > 0, HTTP_BAD_REQUEST, "saas.errors.support.invalid_assignee");
35
- const assignee = await users.get(value);
36
- (0, interface_api_util_1.assert)(assignee?.owner, HTTP_BAD_REQUEST, "saas.errors.support.invalid_assignee");
37
- return value;
38
- }
39
- function resolveTicketUpdate(body) {
40
- const value = body && typeof body === "object" ? body : {};
41
- const patch = {};
42
- if (value.status !== undefined)
43
- patch.status = (0, support_1.parseSupportStatus)(value.status);
44
- if (value.assignedTo !== undefined) {
45
- (0, interface_api_util_1.assert)(value.assignedTo === null ||
46
- (typeof value.assignedTo === "string" && value.assignedTo.length > 0), HTTP_BAD_REQUEST, "saas.errors.support.invalid_assignee");
47
- patch.assignedTo = value.assignedTo;
48
- }
49
- return patch;
50
- }
51
- function tenantModels(tenantId) {
52
- (0, interface_api_util_1.assert)(tenantId.length > 0, HTTP_BAD_REQUEST, "saas.errors.workspace.not_found");
53
- return {
54
- tickets: (0, interface_database_decorators_1.GetModel)(db_3.SupportTicketModel, tenantId),
55
- messages: (0, interface_database_decorators_1.GetModel)(db_3.SupportMessageModel, tenantId),
56
- events: (0, interface_database_decorators_1.GetModel)(db_3.SupportTicketEventModel, tenantId),
57
- };
58
- }
59
- class SaasPlatformSupportController extends (0, interface_api_1.Controller)("/api/saas/support/platform") {
60
- async reconcile(_user, tenantId, after = "") {
61
- return (0, recovery_1.recoverSupportOperations)(tenantId, tenantModels(tenantId), after);
62
- }
63
- async detail(_user, tenantId, ticketId) {
64
- const ticket = await (0, support_1.reconcileSupportTicket)(tenantModels(tenantId).tickets, ticketId);
65
- const tenant = await this.tenantModel.get(tenantId);
66
- return { ticket, tenantId, tenantName: tenant?.name ?? tenantId };
67
- }
68
- async reply(user, tenantId, ticketId, body) {
69
- const input = (0, support_1.parseSupportMessage)(body);
70
- (0, interface_api_util_1.assert)(input.attachments.length === 0, HTTP_BAD_REQUEST, "saas.errors.support.platform_attachments_not_available");
71
- const message = await (0, support_1.addSupportMessage)({
72
- tenantId,
73
- ticketId,
74
- authorId: user._id,
75
- authorName: user.name,
76
- authorType: "platform",
77
- requestId: (0, support_1.parseSupportRequestId)(body),
78
- input,
79
- models: tenantModels(tenantId),
80
- });
81
- await (0, notifications_1.notifyTenantMembers)(tenantId, notifications_1.supportNewMessageSubject, {
82
- icon: "i-ph-chat-circle-text",
83
- title: "$saas.notifications.payload.support_platform_reply.title",
84
- description: "$saas.notifications.payload.support_platform_reply.description",
85
- linkTo: TENANT_SUPPORT_PATH,
86
- });
87
- return message;
88
- }
89
- async update(user, tenantId, ticketId, body) {
90
- const models = tenantModels(tenantId);
91
- const input = resolveTicketUpdate(body);
92
- const previous = await (0, support_1.reconcileSupportTicket)(models.tickets, ticketId);
93
- const updated = await (0, support_1.updateSupportTicket)({
94
- tenantId,
95
- ticketId,
96
- requestId: (0, support_1.parseSupportRequestId)(body),
97
- input,
98
- models,
99
- actorId: user._id,
100
- actorName: user.name || user._id,
101
- validateNewRequest: async () => {
102
- if (input.assignedTo)
103
- await requireOwnerAssignment(this.userModel, input.assignedTo);
104
- },
105
- });
106
- if (previous.status !== updated.status)
107
- await (0, notifications_1.notifyTenantMembers)(tenantId, notifications_1.supportStatusChangedSubject, {
108
- icon: "i-ph-arrows-clockwise",
109
- title: "$saas.notifications.payload.support_status_changed.title",
110
- description: `$saas.support.status.${updated.status}`,
111
- linkTo: TENANT_SUPPORT_PATH,
112
- });
113
- return updated;
114
- }
115
- async attachment(_user, tenantId, ticketId, resourceKey) {
116
- const models = tenantModels(tenantId);
117
- await (0, support_1.reconcileSupportTicket)(models.tickets, ticketId);
118
- (0, interface_api_util_1.assert)(await models.messages.hasAttachment(ticketId, resourceKey), HTTP_NOT_FOUND, "saas.errors.support.attachment_not_found");
119
- const upload = await (0, uploads_1.getSupportUpload)(tenantId, (0, interface_file_storage_1.toStagedKey)(resourceKey));
120
- return (0, support_1.getSupportAttachmentMetadata)(resourceKey, upload.storage);
121
- }
122
- }
123
- exports.SaasPlatformSupportController = SaasPlatformSupportController;
124
- __decorate([
125
- (0, interface_database_decorators_1.Model)(db_1.TenantModel),
126
- __metadata("design:type", db_1.TenantModel)
127
- ], SaasPlatformSupportController.prototype, "tenantModel", void 0);
128
- __decorate([
129
- (0, interface_database_decorators_1.Model)(db_2.UserModel),
130
- __metadata("design:type", db_2.UserModel)
131
- ], SaasPlatformSupportController.prototype, "userModel", void 0);
132
- __decorate([
133
- (0, interface_api_1.Post)("/:tenantId/reconcile"),
134
- __param(0, (0, auth_1.AuthOwnerOnly)()),
135
- __param(1, (0, interface_api_1.Parameter)("tenantId")),
136
- __param(2, (0, interface_api_1.Parameter)("after", "query")),
137
- __metadata("design:type", Function),
138
- __metadata("design:paramtypes", [Function, String, Object]),
139
- __metadata("design:returntype", Promise)
140
- ], SaasPlatformSupportController.prototype, "reconcile", null);
141
- __decorate([
142
- (0, interface_api_1.Get)("/:tenantId/:ticketId"),
143
- __param(0, (0, auth_1.AuthOwnerOnly)()),
144
- __param(1, (0, interface_api_1.Parameter)("tenantId")),
145
- __param(2, (0, interface_api_1.Parameter)("ticketId")),
146
- __metadata("design:type", Function),
147
- __metadata("design:paramtypes", [Function, String, String]),
148
- __metadata("design:returntype", Promise)
149
- ], SaasPlatformSupportController.prototype, "detail", null);
150
- __decorate([
151
- (0, interface_api_1.Post)("/:tenantId/:ticketId/messages"),
152
- __param(0, (0, auth_1.AuthOwnerOnly)()),
153
- __param(1, (0, interface_api_1.Parameter)("tenantId")),
154
- __param(2, (0, interface_api_1.Parameter)("ticketId")),
155
- __param(3, (0, interface_api_1.JSONBody)()),
156
- __metadata("design:type", Function),
157
- __metadata("design:paramtypes", [Function, String, String, Object]),
158
- __metadata("design:returntype", Promise)
159
- ], SaasPlatformSupportController.prototype, "reply", null);
160
- __decorate([
161
- (0, interface_api_1.Put)("/:tenantId/:ticketId"),
162
- __param(0, (0, auth_1.AuthOwnerOnly)()),
163
- __param(1, (0, interface_api_1.Parameter)("tenantId")),
164
- __param(2, (0, interface_api_1.Parameter)("ticketId")),
165
- __param(3, (0, interface_api_1.JSONBody)()),
166
- __metadata("design:type", Function),
167
- __metadata("design:paramtypes", [Function, String, String, Object]),
168
- __metadata("design:returntype", Promise)
169
- ], SaasPlatformSupportController.prototype, "update", null);
170
- __decorate([
171
- (0, interface_api_1.Get)("/:tenantId/:ticketId/attachment"),
172
- __param(0, (0, auth_1.AuthOwnerOnly)()),
173
- __param(1, (0, interface_api_1.Parameter)("tenantId")),
174
- __param(2, (0, interface_api_1.Parameter)("ticketId")),
175
- __param(3, (0, interface_api_1.Parameter)("resourceKey", "query")),
176
- __metadata("design:type", Function),
177
- __metadata("design:paramtypes", [Function, String, String, String]),
178
- __metadata("design:returntype", Promise)
179
- ], SaasPlatformSupportController.prototype, "attachment", null);
180
- //# sourceMappingURL=support.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/routes/platformOwner/support.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAOmC;AACnC,uEAAwD;AACxD,6FAA4E;AAC5E,+EAAiE;AACjE,qDAA2D;AAC3D,yDAA+D;AAC/D,0DAAyE;AACzE,iCAMkB;AAClB,uDAI6B;AAC7B,2CAWuB;AACvB,qDAGgC;AAChC,mDAAyD;AAEzD,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAa1D,KAAK,UAAU,sBAAsB,CACnC,KAAgB,EAChB,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAA,2BAAM,EACJ,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAC7C,gBAAgB,EAChB,sCAAsC,CACvC,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,IAAA,2BAAM,EACJ,QAAQ,EAAE,KAAK,EACf,gBAAgB,EAChB,sCAAsC,CACvC,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAa;IACxC,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAC5B,KAAK,CAAC,MAAM,GAAG,IAAA,4BAAkB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IAAA,2BAAM,EACJ,KAAK,CAAC,UAAU,KAAK,IAAI;YACvB,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EACvE,gBAAgB,EAChB,sCAAsC,CACvC,CAAC;QACF,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAA,2BAAM,EACJ,QAAQ,CAAC,MAAM,GAAG,CAAC,EACnB,gBAAgB,EAChB,iCAAiC,CAClC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,IAAA,wCAAQ,EAAC,uBAAkB,EAAE,QAAQ,CAAC;QAC/C,QAAQ,EAAE,IAAA,wCAAQ,EAAC,wBAAmB,EAAE,QAAQ,CAAC;QACjD,MAAM,EAAE,IAAA,wCAAQ,EAAC,4BAAuB,EAAE,QAAQ,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAa,6BAA8B,SAAQ,IAAA,0BAAU,EAC3D,4BAA4B,CAC7B;IAQO,AAAN,KAAK,CAAC,SAAS,CACI,KAAW,EACL,QAAgB,EACV,QAAQ,EAAE;QAEvC,OAAO,IAAA,mCAAwB,EAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACO,KAAW,EACL,QAAgB,EAChB,QAAgB;QAEvC,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAsB,EACzC,YAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,EAC9B,QAAQ,CACT,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC;IACpE,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CACQ,IAAU,EACJ,QAAgB,EAChB,QAAgB,EAC3B,IAAa;QAEzB,MAAM,KAAK,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,CAAC;QACxC,IAAA,2BAAM,EACJ,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAC9B,gBAAgB,EAChB,wDAAwD,CACzD,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAiB,EAAC;YACtC,QAAQ;YACR,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,IAAA,+BAAqB,EAAC,IAAI,CAAC;YACtC,KAAK;YACL,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;SAC/B,CAAC,CAAC;QACH,MAAM,IAAA,mCAAmB,EAAC,QAAQ,EAAE,wCAAwB,EAAE;YAC5D,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,0DAA0D;YACjE,WAAW,EACT,gEAAgE;YAClE,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACO,IAAU,EACJ,QAAgB,EAChB,QAAgB,EAC3B,IAAa;QAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAsB,EAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC;YACxC,QAAQ;YACR,QAAQ;YACR,SAAS,EAAE,IAAA,+BAAqB,EAAC,IAAI,CAAC;YACtC,KAAK;YACL,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG;YAChC,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBAC7B,IAAI,KAAK,CAAC,UAAU;oBAClB,MAAM,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YACpC,MAAM,IAAA,mCAAmB,EAAC,QAAQ,EAAE,2CAA2B,EAAE;gBAC/D,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,0DAA0D;gBACjE,WAAW,EAAE,wBAAwB,OAAO,CAAC,MAAM,EAAE;gBACrD,MAAM,EAAE,mBAAmB;aAC5B,CAAC,CAAC;QACL,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACG,KAAW,EACL,QAAgB,EAChB,QAAgB,EACJ,WAAmB;QAEtD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAA,gCAAsB,EAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAA,2BAAM,EACJ,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,EAC1D,cAAc,EACd,0CAA0C,CAC3C,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAgB,EAAC,QAAQ,EAAE,IAAA,oCAAW,EAAC,WAAW,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAA,sCAA4B,EAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;CACF;AAnHD,sEAmHC;AA/GS;IADP,IAAA,qCAAK,EAAC,gBAAW,CAAC;8BACE,gBAAW;kEAAC;AAGzB;IADP,IAAA,qCAAK,EAAC,cAAS,CAAC;8BACE,cAAS;gEAAC;AAGvB;IADL,IAAA,oBAAI,EAAC,sBAAsB,CAAC;IAE1B,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;;;;8DAG7B;AAGK;IADL,IAAA,mBAAG,EAAC,sBAAsB,CAAC;IAEzB,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;;;;2DAQvB;AAGK;IADL,IAAA,oBAAI,EAAC,+BAA+B,CAAC;IAEnC,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,wBAAQ,GAAE,CAAA;;;;0DA0BZ;AAGK;IADL,IAAA,mBAAG,EAAC,sBAAsB,CAAC;IAEzB,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,wBAAQ,GAAE,CAAA;;;;2DA0BZ;AAGK;IADL,IAAA,mBAAG,EAAC,iCAAiC,CAAC;IAEpC,WAAA,IAAA,oBAAa,GAAE,CAAA;IACf,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAA;IACrB,WAAA,IAAA,yBAAS,EAAC,aAAa,EAAE,OAAO,CAAC,CAAA;;;;+DAWnC"}
@@ -1,27 +0,0 @@
1
- import { type RequestContext } from "@antelopejs/interface-api";
2
- import { type PresignedUploadResponse } from "@antelopejs/interface-file-storage";
3
- import { TenantModel } from "@antelopejs/interface-dms/db";
4
- import type { User } from "@antelopejs/interface-dms/auth/db";
5
- import { PlanModel, type SupportMessage, SupportMessageModel, type SupportTicket, SupportTicketEventModel, SupportTicketModel, TenantSubscriptionModel } from "../../db";
6
- import { type SupportAttachmentMetadata, type SupportSlaPolicy } from "../../support";
7
- export interface SupportPageConfig {
8
- policy: SupportSlaPolicy;
9
- uploadPath: string;
10
- maxAttachmentSize: number;
11
- allowedMimetypes: readonly string[];
12
- }
13
- interface TenantSupportDetail {
14
- ticket: SupportTicket;
15
- }
16
- declare const SaasTenantSupportController_base: import("@antelopejs/interface-api").ControllerClass<object>;
17
- export declare class SaasTenantSupportController extends SaasTenantSupportController_base {
18
- tenantModel: TenantModel;
19
- planModel: PlanModel;
20
- config(_user: User, ctx: RequestContext, subscriptions: TenantSubscriptionModel): Promise<SupportPageConfig>;
21
- upload(_user: User, ctx: RequestContext, body: unknown): Promise<PresignedUploadResponse>;
22
- create(user: User, ctx: RequestContext, body: unknown, tickets: SupportTicketModel, messages: SupportMessageModel, subscriptions: TenantSubscriptionModel, events: SupportTicketEventModel): Promise<SupportTicket>;
23
- detail(_user: User, ticketId: string, tickets: SupportTicketModel): Promise<TenantSupportDetail>;
24
- reply(user: User, ctx: RequestContext, ticketId: string, body: unknown, tickets: SupportTicketModel, messages: SupportMessageModel, events: SupportTicketEventModel): Promise<SupportMessage>;
25
- attachment(_user: User, ctx: RequestContext, ticketId: string, resourceKey: string, tickets: SupportTicketModel, messages: SupportMessageModel): Promise<SupportAttachmentMetadata>;
26
- }
27
- export {};