@acorex-platform/module-communication-management-client 0.0.32 → 0.0.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.
Files changed (37) hide show
  1. package/fesm2022/{acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-G4wzzccx.mjs → acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-CZh_tBTN.mjs} +28 -12
  2. package/fesm2022/acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-CZh_tBTN.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-communication-management-client-communication-email-send.command-De8K6vIB.mjs → acorex-platform-module-communication-management-client-communication-email-send.command-Bnqy-YMs.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-communication-management-client-communication-email-send.command-De8K6vIB.mjs.map → acorex-platform-module-communication-management-client-communication-email-send.command-Bnqy-YMs.mjs.map} +1 -1
  5. package/fesm2022/acorex-platform-module-communication-management-client-communication-email-show-dialog.command-NuJLiYs_.mjs.map +1 -1
  6. package/fesm2022/{acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-BjJjqWja.mjs → acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-D4o0Bhce.mjs} +3 -3
  7. package/fesm2022/{acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-BjJjqWja.mjs.map → acorex-platform-module-communication-management-client-communication-in-app-inbox-page.component-D4o0Bhce.mjs.map} +1 -1
  8. package/fesm2022/{acorex-platform-module-communication-management-client-communication-send.command-NEXrsogP.mjs → acorex-platform-module-communication-management-client-communication-send.command-BH9jjHfA.mjs} +2 -2
  9. package/fesm2022/{acorex-platform-module-communication-management-client-communication-send.command-NEXrsogP.mjs.map → acorex-platform-module-communication-management-client-communication-send.command-BH9jjHfA.mjs.map} +1 -1
  10. package/fesm2022/acorex-platform-module-communication-management-client-communication-show-sent-message.command-D9KRxkdp.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-module-communication-management-client-communication-test-smtp.command-Cp5fHOh4.mjs → acorex-platform-module-communication-management-client-communication-test-smtp.command-BMsTVFBN.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-communication-management-client-communication-test-smtp.command-Cp5fHOh4.mjs.map → acorex-platform-module-communication-management-client-communication-test-smtp.command-BMsTVFBN.mjs.map} +1 -1
  13. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs +235 -0
  14. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication.mjs +254 -0
  16. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-acorex-platform-module-communication-management-client-contracts-entity-catalog-BvLoGDK5.mjs +60 -0
  18. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-acorex-platform-module-communication-management-client-contracts-entity-catalog-BvLoGDK5.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication-delivery.entity-DPCU8P32.mjs +183 -0
  20. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication-delivery.entity-DPCU8P32.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication.entity-DGj9OD3Z.mjs +202 -0
  22. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication.entity-DGj9OD3Z.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-status.keys-JESc4HlO.mjs +15 -0
  24. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-status.keys-JESc4HlO.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog.mjs +2 -0
  26. package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-communication-management-client-contracts.mjs.map +1 -1
  28. package/fesm2022/acorex-platform-module-communication-management-client-local-entities.mjs +30 -0
  29. package/fesm2022/acorex-platform-module-communication-management-client-local-entities.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-module-communication-management-client.mjs +1 -1
  31. package/package.json +19 -3
  32. package/types/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.d.ts +5 -0
  33. package/types/acorex-platform-module-communication-management-client-contracts-entities-communication.d.ts +5 -0
  34. package/types/acorex-platform-module-communication-management-client-contracts-entity-catalog.d.ts +10 -0
  35. package/types/acorex-platform-module-communication-management-client-local-entities.d.ts +12 -0
  36. package/types/acorex-platform-module-communication-management-client.d.ts +2 -0
  37. package/fesm2022/acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-G4wzzccx.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-communication-management-client-communication-test-smtp.command-Cp5fHOh4.mjs","sources":["../../../../libs/modules/communication-management/client/src/lib/features/smtp/communication-smtp-test-dialog.service.ts","../../../../libs/modules/communication-management/client/src/lib/commands/communication-test-smtp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService, type AXPUser } from '@acorex-platform/framework-client/auth';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPRuntimeCommandResult, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\nimport type { CommunicationSmtpTestResult } from '@acorex-platform/module-communication-management-client/contracts';\nimport { AXPOrganizationManagementSettings } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXPCommunicationManagementClient } from '../../communication-management-client.port';\n\n//#region ----- Types -----\n\ntype SmtpTestDialogResult = AXPRuntimeCommandResult<CommunicationSmtpTestResult> | null;\n\n//#endregion\n\n//#region ----- SMTP test dialog -----\n\nfunction coerceEmailSettingValue(value: unknown): string {\n if (typeof value === 'string' && value.includes('@')) {\n return value.trim();\n }\n\n if (value != null && typeof value === 'object' && 'value' in value) {\n const nested = (value as { value?: unknown }).value;\n if (typeof nested === 'string' && nested.includes('@')) {\n return nested.trim();\n }\n }\n\n return '';\n}\n\nfunction resolveUserRecipientEmail(user: AXPUser | null): string {\n if (!user) {\n return '';\n }\n\n const runtimeEmail = (user as { email?: unknown }).email;\n const fromRuntime = coerceEmailSettingValue(runtimeEmail);\n if (fromRuntime) {\n return fromRuntime;\n }\n\n const candidates = [user.name, user.title];\n for (const candidate of candidates) {\n const email = coerceEmailSettingValue(candidate);\n if (email) {\n return email;\n }\n }\n\n return '';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMCommunicationSmtpTestDialogService {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly client = inject(AXPCommunicationManagementClient);\n\n private async resolveDefaultRecipientEmail(): Promise<string> {\n const fromUser = resolveUserRecipientEmail(this.sessionService.user);\n if (fromUser) {\n return fromUser;\n }\n\n const supportEmail = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get(AXPOrganizationManagementSettings.SupportEmail);\n\n return coerceEmailSettingValue(supportEmail);\n }\n\n async openAndSendTestEmail(): Promise<SmtpTestDialogResult> {\n const defaultRecipient = await this.resolveDefaultRecipientEmail();\n\n try {\n const result = await this.layoutBuilder\n .create()\n .dialog<SmtpTestDialogResult>((dialog) => {\n dialog\n .setTitle('@communication-management:settings.communication.smtp.test.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({\n recipientAddress: defaultRecipient,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField('@communication-management:settings.communication.smtp.test.dialog.fields.recipient.title', (field) => {\n field.path('recipientAddress');\n field.textBox({\n validations: [{ rule: 'required' }, { rule: 'email' }],\n placeholder:\n '@communication-management:settings.communication.smtp.test.dialog.fields.recipient.placeholder',\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@communication-management:settings.communication.smtp.test.dialog.actions.send');\n })\n .onAction(async (dialogRef: AXPDialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = dialogRef.context() as Record<string, unknown> | null;\n const recipientAddress = String(context?.['recipientAddress'] ?? '').trim();\n if (!recipientAddress) {\n throw new Error(\n await this.translationService.translateAsync(\n '@communication-management:settings.communication.smtp.test.messages.recipient-required',\n ),\n );\n }\n\n const data = await this.client.testSmtp({ recipientAddress });\n return { success: true, kind: 'object', data };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<CommunicationSmtpTestResult>>(result);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'SMTP test failed.';\n return {\n success: false,\n message: { text: message },\n };\n }\n }\n}\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport type { CommunicationSmtpTestResult } from '@acorex-platform/module-communication-management-client/contracts';\nimport { Injectable, inject } from '@angular/core';\nimport { AXMCommunicationSmtpTestDialogService } from '../features/smtp/communication-smtp-test-dialog.service';\n\n//#region ----- Communication SMTP test command -----\n\n@Injectable()\nexport class CommunicationTestSmtpCommand implements AXPCommand<void, CommunicationSmtpTestResult | null> {\n private readonly dialog = inject(AXMCommunicationSmtpTestDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise<CommunicationSmtpTestResult | null> {\n const result = await this.dialog.openAndSendTestEmail();\n\n // Cancel / header close — not a failure for the integrations panel.\n if (!result) {\n return { success: true, kind: 'object', data: null };\n }\n\n if (result.success) {\n this.toastService.success(\n await this.translationService.translateAsync(\n '@communication-management:settings.communication.smtp.test.messages.success',\n ),\n );\n return result;\n }\n\n if (result.message?.text) {\n const content = await this.translationService.translateAsync(result.message.text);\n this.toastService.show({ color: 'danger', title: 'Test failed', content });\n }\n\n return result;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-communication-management-client-communication-test-smtp.command-BMsTVFBN.mjs","sources":["../../../../libs/modules/communication-management/client/src/lib/features/smtp/communication-smtp-test-dialog.service.ts","../../../../libs/modules/communication-management/client/src/lib/commands/communication-test-smtp.command.ts"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService, type AXPUser } from '@acorex-platform/framework-client/auth';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPRuntimeCommandResult, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type AXPDialogRef,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { Injectable, inject } from '@angular/core';\nimport type { CommunicationSmtpTestResult } from '@acorex-platform/module-communication-management-client/contracts';\nimport { AXPOrganizationManagementSettings } from '@acorex-platform/module-organization-management-client/contracts';\nimport { AXPCommunicationManagementClient } from '../../communication-management-client.port';\n\n//#region ----- Types -----\n\ntype SmtpTestDialogResult = AXPRuntimeCommandResult<CommunicationSmtpTestResult> | null;\n\n//#endregion\n\n//#region ----- SMTP test dialog -----\n\nfunction coerceEmailSettingValue(value: unknown): string {\n if (typeof value === 'string' && value.includes('@')) {\n return value.trim();\n }\n\n if (value != null && typeof value === 'object' && 'value' in value) {\n const nested = (value as { value?: unknown }).value;\n if (typeof nested === 'string' && nested.includes('@')) {\n return nested.trim();\n }\n }\n\n return '';\n}\n\nfunction resolveUserRecipientEmail(user: AXPUser | null): string {\n if (!user) {\n return '';\n }\n\n const runtimeEmail = (user as { email?: unknown }).email;\n const fromRuntime = coerceEmailSettingValue(runtimeEmail);\n if (fromRuntime) {\n return fromRuntime;\n }\n\n const candidates = [user.name, user.title];\n for (const candidate of candidates) {\n const email = coerceEmailSettingValue(candidate);\n if (email) {\n return email;\n }\n }\n\n return '';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMCommunicationSmtpTestDialogService {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly client = inject(AXPCommunicationManagementClient);\n\n private async resolveDefaultRecipientEmail(): Promise<string> {\n const fromUser = resolveUserRecipientEmail(this.sessionService.user);\n if (fromUser) {\n return fromUser;\n }\n\n const supportEmail = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get(AXPOrganizationManagementSettings.SupportEmail);\n\n return coerceEmailSettingValue(supportEmail);\n }\n\n async openAndSendTestEmail(): Promise<SmtpTestDialogResult> {\n const defaultRecipient = await this.resolveDefaultRecipientEmail();\n\n try {\n const result = await this.layoutBuilder\n .create()\n .dialog<SmtpTestDialogResult>((dialog) => {\n dialog\n .setTitle('@communication-management:settings.communication.smtp.test.dialog.title')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({\n recipientAddress: defaultRecipient,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField('@communication-management:settings.communication.smtp.test.dialog.fields.recipient.title', (field) => {\n field.path('recipientAddress');\n field.textBox({\n validations: [{ rule: 'required' }, { rule: 'email' }],\n placeholder:\n '@communication-management:settings.communication.smtp.test.dialog.fields.recipient.placeholder',\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@communication-management:settings.communication.smtp.test.dialog.actions.send');\n })\n .onAction(async (dialogRef: AXPDialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = dialogRef.context() as Record<string, unknown> | null;\n const recipientAddress = String(context?.['recipientAddress'] ?? '').trim();\n if (!recipientAddress) {\n throw new Error(\n await this.translationService.translateAsync(\n '@communication-management:settings.communication.smtp.test.messages.recipient-required',\n ),\n );\n }\n\n const data = await this.client.testSmtp({ recipientAddress });\n return { success: true, kind: 'object', data };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<CommunicationSmtpTestResult>>(result);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'SMTP test failed.';\n return {\n success: false,\n message: { text: message },\n };\n }\n }\n}\n\n//#endregion\n","import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPCommand, AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport type { CommunicationSmtpTestResult } from '@acorex-platform/module-communication-management-client/contracts';\nimport { Injectable, inject } from '@angular/core';\nimport { AXMCommunicationSmtpTestDialogService } from '../features/smtp/communication-smtp-test-dialog.service';\n\n//#region ----- Communication SMTP test command -----\n\n@Injectable()\nexport class CommunicationTestSmtpCommand implements AXPCommand<void, CommunicationSmtpTestResult | null> {\n private readonly dialog = inject(AXMCommunicationSmtpTestDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(): AXPCommandExecuteResultPromise<CommunicationSmtpTestResult | null> {\n const result = await this.dialog.openAndSendTestEmail();\n\n // Cancel / header close — not a failure for the integrations panel.\n if (!result) {\n return { success: true, kind: 'object', data: null };\n }\n\n if (result.success) {\n this.toastService.success(\n await this.translationService.translateAsync(\n '@communication-management:settings.communication.smtp.test.messages.success',\n ),\n );\n return result;\n }\n\n if (result.message?.text) {\n const content = await this.translationService.translateAsync(result.message.text);\n this.toastService.show({ color: 'danger', title: 'Test failed', content });\n }\n\n return result;\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ //#region ---- Status definition keys ----
5
+ /** Registered client status provider key for logical communications. */
6
+ const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';
7
+ /** Registered client status provider key for communication deliveries. */
8
+ const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY = 'communication-management.status.communication-delivery';
9
+ const AXP_COMMUNICATION_STATUS_PENDING = 'Pending';
10
+ const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing';
11
+ const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed';
12
+ const AXP_COMMUNICATION_STATUS_FAILED = 'Failed';
13
+ const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending';
14
+ const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered';
15
+ //#endregion
16
+
17
+ const config = {
18
+ i18n: 'communication-management',
19
+ };
20
+ const dashboardWidgetId = (segment) => `CommunicationManagement:Widget:Dashboard:${segment}`;
21
+ const RootConfig = {
22
+ config,
23
+ module: {
24
+ name: 'CommunicationManagement',
25
+ title: '@communication-management:module.title',
26
+ icon: 'fa-light fa-paper-plane',
27
+ },
28
+ entities: {
29
+ communication: {
30
+ name: 'Communications',
31
+ title: '@communication-management:entities.communication.title',
32
+ titlePlural: '@communication-management:entities.communication.plural',
33
+ icon: 'fa-light fa-envelope',
34
+ },
35
+ communicationDelivery: {
36
+ name: 'CommunicationDeliveries',
37
+ title: '@communication-management:entities.communication-delivery.title',
38
+ titlePlural: '@communication-management:entities.communication-delivery.plural',
39
+ icon: 'fa-light fa-truck-fast',
40
+ },
41
+ },
42
+ widgets: {
43
+ myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),
44
+ },
45
+ queries: {
46
+ dashboard: {
47
+ deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',
48
+ },
49
+ },
50
+ };
51
+ const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;
52
+ const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;
53
+
54
+ const listOptions = {
55
+ filter: { inline: { enabled: true }, advance: { enabled: true } },
56
+ sort: { enabled: true },
57
+ };
58
+ async function communicationDeliveryEntityFactory() {
59
+ const i18n = RootConfig.config.i18n;
60
+ return {
61
+ module: RootConfig.module.name,
62
+ name: RootConfig.entities.communicationDelivery.name,
63
+ title: RootConfig.entities.communicationDelivery.title,
64
+ icon: RootConfig.entities.communicationDelivery.icon,
65
+ plugins: [
66
+ {
67
+ name: 'status',
68
+ options: {
69
+ field: 'status',
70
+ definition: AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY,
71
+ showInCreate: false,
72
+ readonly: true,
73
+ generate: { views: { enabled: true } },
74
+ },
75
+ },
76
+ ],
77
+ formats: {
78
+ individual: RootConfig.entities.communicationDelivery.title,
79
+ plural: RootConfig.entities.communicationDelivery.titlePlural,
80
+ searchResult: {
81
+ title: '{{ channel }} — {{ recipientAddress }}',
82
+ description: '{{ status }}',
83
+ },
84
+ },
85
+ columns: [
86
+ { name: 'communicationId', options: { width: '180px' } },
87
+ { name: 'channel', options: { width: '120px' } },
88
+ { name: 'recipientAddress', options: { width: '200px' } },
89
+ { name: 'sentAt', options: { width: '170px' } },
90
+ { name: 'deliveredAt', options: { width: '170px' } },
91
+ ],
92
+ groups: [
93
+ { id: 'general', title: '@general:terms.interface.basic-info' },
94
+ { id: 'tracking', title: `@${i18n}:entities.communication-delivery.groups.tracking` },
95
+ { id: 'timeline', title: `@${i18n}:entities.communication-delivery.groups.timeline` },
96
+ ],
97
+ properties: [
98
+ {
99
+ name: 'communicationId',
100
+ title: `@${i18n}:entities.communication-delivery.fields.communication-id`,
101
+ groupId: 'general',
102
+ options: listOptions,
103
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
104
+ },
105
+ {
106
+ name: 'channel',
107
+ title: `@${i18n}:entities.communication-delivery.fields.channel`,
108
+ groupId: 'general',
109
+ options: listOptions,
110
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
111
+ },
112
+ {
113
+ name: 'providerKey',
114
+ title: `@${i18n}:entities.communication-delivery.fields.provider-key`,
115
+ groupId: 'general',
116
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
117
+ },
118
+ {
119
+ name: 'recipientUserId',
120
+ title: `@${i18n}:entities.communication-delivery.fields.recipient-user-id`,
121
+ groupId: 'general',
122
+ options: listOptions,
123
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
124
+ },
125
+ {
126
+ name: 'recipientAddress',
127
+ title: `@${i18n}:entities.communication-delivery.fields.recipient-address`,
128
+ groupId: 'general',
129
+ options: listOptions,
130
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
131
+ },
132
+ {
133
+ name: 'providerMessageId',
134
+ title: `@${i18n}:entities.communication-delivery.fields.provider-message-id`,
135
+ groupId: 'tracking',
136
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
137
+ },
138
+ {
139
+ name: 'sentAt',
140
+ title: `@${i18n}:entities.communication-delivery.fields.sent-at`,
141
+ groupId: 'tracking',
142
+ options: listOptions,
143
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
144
+ },
145
+ {
146
+ name: 'deliveredAt',
147
+ title: `@${i18n}:entities.communication-delivery.fields.delivered-at`,
148
+ groupId: 'tracking',
149
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
150
+ },
151
+ {
152
+ name: 'seenAt',
153
+ title: `@${i18n}:entities.communication-delivery.fields.seen-at`,
154
+ groupId: 'tracking',
155
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
156
+ },
157
+ {
158
+ name: 'readAt',
159
+ title: `@${i18n}:entities.communication-delivery.fields.read-at`,
160
+ groupId: 'tracking',
161
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
162
+ },
163
+ {
164
+ name: 'isPinned',
165
+ title: `@${i18n}:entities.communication-delivery.fields.is-pinned`,
166
+ groupId: 'tracking',
167
+ schema: { dataType: 'boolean', readonly: true, interface: { type: AXPWidgetsCatalog.toggle } },
168
+ },
169
+ {
170
+ name: 'archivedAt',
171
+ title: `@${i18n}:entities.communication-delivery.fields.archived-at`,
172
+ groupId: 'tracking',
173
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
174
+ },
175
+ {
176
+ name: 'repliedAt',
177
+ title: `@${i18n}:entities.communication-delivery.fields.replied-at`,
178
+ groupId: 'tracking',
179
+ schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },
180
+ },
181
+ {
182
+ name: 'timelineSummary',
183
+ title: `@${i18n}:entities.communication-delivery.fields.timeline-summary`,
184
+ groupId: 'timeline',
185
+ schema: {
186
+ dataType: 'string',
187
+ readonly: true,
188
+ interface: { type: AXPWidgetsCatalog.largeText },
189
+ },
190
+ },
191
+ ],
192
+ interfaces: {
193
+ master: {
194
+ // Empty create/update keeps deliveries view-only (engine creates records).
195
+ create: {
196
+ sections: [],
197
+ properties: [],
198
+ },
199
+ update: {
200
+ sections: [],
201
+ properties: [],
202
+ },
203
+ single: {
204
+ title: '{{ channel }} — {{ recipientAddress }}',
205
+ sections: [{ id: 'general' }, { id: 'tracking' }, { id: 'timeline' }],
206
+ properties: [
207
+ { name: 'communicationId' },
208
+ { name: 'channel' },
209
+ { name: 'providerKey' },
210
+ { name: 'recipientAddress' },
211
+ { name: 'providerMessageId' },
212
+ { name: 'sentAt' },
213
+ { name: 'deliveredAt' },
214
+ { name: 'seenAt' },
215
+ { name: 'readAt' },
216
+ { name: 'repliedAt' },
217
+ { name: 'timelineSummary' },
218
+ ],
219
+ actions: [],
220
+ },
221
+ list: {
222
+ actions: [...entityMasterCrudActions({ create: false, delete: false, edit: false, view: true })],
223
+ views: [createAllQueryView()],
224
+ },
225
+ },
226
+ },
227
+ };
228
+ }
229
+
230
+ /**
231
+ * Generated bundle index. Do not edit.
232
+ */
233
+
234
+ export { communicationDeliveryEntityFactory };
235
+ //# sourceMappingURL=acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs","sources":["../../../../libs/modules/communication-management/contracts/src/status.keys.ts","../../../../libs/modules/communication-management/contracts/src/root-config.ts","../../../../libs/modules/communication-management/contracts/src/entities/communication-delivery/communication-delivery.entity.ts","../../../../libs/modules/communication-management/contracts/src/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.ts"],"sourcesContent":["//#region ---- Status definition keys ----\n\n/** Registered client status provider key for logical communications. */\nexport const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';\n\n/** Registered client status provider key for communication deliveries. */\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY =\n 'communication-management.status.communication-delivery';\n\nexport const AXP_COMMUNICATION_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing' as const;\nexport const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed' as const;\nexport const AXP_COMMUNICATION_STATUS_FAILED = 'Failed' as const;\n\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered' as const;\n\n//#endregion\n","const config = {\n i18n: 'communication-management',\n};\n\nconst dashboardWidgetId = (segment: string): string =>\n `CommunicationManagement:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n name: 'CommunicationManagement',\n title: '@communication-management:module.title',\n icon: 'fa-light fa-paper-plane',\n },\n entities: {\n communication: {\n name: 'Communications',\n title: '@communication-management:entities.communication.title',\n titlePlural: '@communication-management:entities.communication.plural',\n icon: 'fa-light fa-envelope',\n },\n communicationDelivery: {\n name: 'CommunicationDeliveries',\n title: '@communication-management:entities.communication-delivery.title',\n titlePlural: '@communication-management:entities.communication-delivery.plural',\n icon: 'fa-light fa-truck-fast',\n },\n },\n widgets: {\n myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),\n },\n queries: {\n dashboard: {\n deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',\n },\n },\n} as const;\n\nexport const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;\nexport const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;\n","import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n createAllQueryView,\n entityMasterCrudActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY } from '../../status.keys';\nimport { RootConfig } from '../../root-config';\n\nconst listOptions = {\n filter: { inline: { enabled: true }, advance: { enabled: true } },\n sort: { enabled: true },\n};\n\nexport async function communicationDeliveryEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n return {\n module: RootConfig.module.name,\n name: RootConfig.entities.communicationDelivery.name,\n title: RootConfig.entities.communicationDelivery.title,\n icon: RootConfig.entities.communicationDelivery.icon,\n plugins: [\n {\n name: 'status',\n options: {\n field: 'status',\n definition: AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY,\n showInCreate: false,\n readonly: true,\n generate: { views: { enabled: true } },\n },\n },\n ],\n formats: {\n individual: RootConfig.entities.communicationDelivery.title,\n plural: RootConfig.entities.communicationDelivery.titlePlural,\n searchResult: {\n title: '{{ channel }} — {{ recipientAddress }}',\n description: '{{ status }}',\n },\n },\n columns: [\n { name: 'communicationId', options: { width: '180px' } },\n { name: 'channel', options: { width: '120px' } },\n { name: 'recipientAddress', options: { width: '200px' } },\n { name: 'sentAt', options: { width: '170px' } },\n { name: 'deliveredAt', options: { width: '170px' } },\n ],\n groups: [\n { id: 'general', title: '@general:terms.interface.basic-info' },\n { id: 'tracking', title: `@${i18n}:entities.communication-delivery.groups.tracking` },\n { id: 'timeline', title: `@${i18n}:entities.communication-delivery.groups.timeline` },\n ],\n properties: [\n {\n name: 'communicationId',\n title: `@${i18n}:entities.communication-delivery.fields.communication-id`,\n groupId: 'general',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'channel',\n title: `@${i18n}:entities.communication-delivery.fields.channel`,\n groupId: 'general',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'providerKey',\n title: `@${i18n}:entities.communication-delivery.fields.provider-key`,\n groupId: 'general',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'recipientUserId',\n title: `@${i18n}:entities.communication-delivery.fields.recipient-user-id`,\n groupId: 'general',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'recipientAddress',\n title: `@${i18n}:entities.communication-delivery.fields.recipient-address`,\n groupId: 'general',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'providerMessageId',\n title: `@${i18n}:entities.communication-delivery.fields.provider-message-id`,\n groupId: 'tracking',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'sentAt',\n title: `@${i18n}:entities.communication-delivery.fields.sent-at`,\n groupId: 'tracking',\n options: listOptions,\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'deliveredAt',\n title: `@${i18n}:entities.communication-delivery.fields.delivered-at`,\n groupId: 'tracking',\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'seenAt',\n title: `@${i18n}:entities.communication-delivery.fields.seen-at`,\n groupId: 'tracking',\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'readAt',\n title: `@${i18n}:entities.communication-delivery.fields.read-at`,\n groupId: 'tracking',\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'isPinned',\n title: `@${i18n}:entities.communication-delivery.fields.is-pinned`,\n groupId: 'tracking',\n schema: { dataType: 'boolean', readonly: true, interface: { type: AXPWidgetsCatalog.toggle } },\n },\n {\n name: 'archivedAt',\n title: `@${i18n}:entities.communication-delivery.fields.archived-at`,\n groupId: 'tracking',\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'repliedAt',\n title: `@${i18n}:entities.communication-delivery.fields.replied-at`,\n groupId: 'tracking',\n schema: { dataType: 'date', readonly: true, interface: { type: AXPWidgetsCatalog.dateTime } },\n },\n {\n name: 'timelineSummary',\n title: `@${i18n}:entities.communication-delivery.fields.timeline-summary`,\n groupId: 'timeline',\n schema: {\n dataType: 'string',\n readonly: true,\n interface: { type: AXPWidgetsCatalog.largeText },\n },\n },\n ],\n interfaces: {\n master: {\n // Empty create/update keeps deliveries view-only (engine creates records).\n create: {\n sections: [],\n properties: [],\n },\n update: {\n sections: [],\n properties: [],\n },\n single: {\n title: '{{ channel }} — {{ recipientAddress }}',\n sections: [{ id: 'general' }, { id: 'tracking' }, { id: 'timeline' }],\n properties: [\n { name: 'communicationId' },\n { name: 'channel' },\n { name: 'providerKey' },\n { name: 'recipientAddress' },\n { name: 'providerMessageId' },\n { name: 'sentAt' },\n { name: 'deliveredAt' },\n { name: 'seenAt' },\n { name: 'readAt' },\n { name: 'repliedAt' },\n { name: 'timelineSummary' },\n ],\n actions: [],\n },\n list: {\n actions: [...entityMasterCrudActions({ create: false, delete: false, edit: false, view: true })],\n views: [createAllQueryView()],\n },\n },\n },\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.communication-delivery';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
2
+ import { AXPEntityCommandScope, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions, entityDetailsCrudActions, entityDetailsSimpleCondition } from '@acorex-platform/framework-shared/entity';
3
+
4
+ //#region ---- Client command keys ----
5
+ const AXMCommunicationManagementCommandKeys = {
6
+ Send: 'CommunicationManagement:Communication:Send',
7
+ TestSmtp: 'CommunicationManagement:Communication:TestSmtp',
8
+ EmailShowDialog: 'CommunicationManagement:Email:ShowDialog',
9
+ EmailSend: 'CommunicationManagement:Email:Send',
10
+ ShowSentMessage: 'CommunicationManagement:Communication:ShowSentMessage',
11
+ };
12
+ //#endregion
13
+
14
+ //#region ---- Status definition keys ----
15
+ /** Registered client status provider key for logical communications. */
16
+ const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';
17
+ /** Registered client status provider key for communication deliveries. */
18
+ const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY = 'communication-management.status.communication-delivery';
19
+ const AXP_COMMUNICATION_STATUS_PENDING = 'Pending';
20
+ const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing';
21
+ const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed';
22
+ const AXP_COMMUNICATION_STATUS_FAILED = 'Failed';
23
+ const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending';
24
+ const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered';
25
+ //#endregion
26
+
27
+ const config = {
28
+ i18n: 'communication-management',
29
+ };
30
+ const dashboardWidgetId = (segment) => `CommunicationManagement:Widget:Dashboard:${segment}`;
31
+ const RootConfig = {
32
+ config,
33
+ module: {
34
+ name: 'CommunicationManagement',
35
+ title: '@communication-management:module.title',
36
+ icon: 'fa-light fa-paper-plane',
37
+ },
38
+ entities: {
39
+ communication: {
40
+ name: 'Communications',
41
+ title: '@communication-management:entities.communication.title',
42
+ titlePlural: '@communication-management:entities.communication.plural',
43
+ icon: 'fa-light fa-envelope',
44
+ },
45
+ communicationDelivery: {
46
+ name: 'CommunicationDeliveries',
47
+ title: '@communication-management:entities.communication-delivery.title',
48
+ titlePlural: '@communication-management:entities.communication-delivery.plural',
49
+ icon: 'fa-light fa-truck-fast',
50
+ },
51
+ },
52
+ widgets: {
53
+ myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),
54
+ },
55
+ queries: {
56
+ dashboard: {
57
+ deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',
58
+ },
59
+ },
60
+ };
61
+ const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;
62
+ const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;
63
+
64
+ const listOptions = {
65
+ filter: { inline: { enabled: true }, advance: { enabled: true } },
66
+ sort: { enabled: true },
67
+ };
68
+ const previewMessageAction = (i18n) => ({
69
+ title: `@${i18n}:entities.communication.actions.preview.title`,
70
+ name: 'preview-message',
71
+ icon: 'fa-light fa-envelope-open-text',
72
+ command: {
73
+ name: AXMCommunicationManagementCommandKeys.ShowSentMessage,
74
+ options: {
75
+ communicationId: '{{ context.eval("id") }}',
76
+ },
77
+ },
78
+ priority: 'primary',
79
+ type: 'execute',
80
+ scope: AXPEntityCommandScope.Individual,
81
+ });
82
+ async function communicationEntityFactory() {
83
+ const i18n = RootConfig.config.i18n;
84
+ return {
85
+ module: RootConfig.module.name,
86
+ name: RootConfig.entities.communication.name,
87
+ title: RootConfig.entities.communication.title,
88
+ icon: RootConfig.entities.communication.icon,
89
+ plugins: [
90
+ {
91
+ name: 'status',
92
+ options: {
93
+ field: 'status',
94
+ definition: AXP_COMMUNICATION_STATUS_DEFINITION_KEY,
95
+ showInCreate: false,
96
+ readonly: true,
97
+ generate: { views: { enabled: true } },
98
+ },
99
+ },
100
+ ],
101
+ formats: {
102
+ individual: RootConfig.entities.communication.title,
103
+ plural: RootConfig.entities.communication.titlePlural,
104
+ searchResult: {
105
+ title: '{{ title }}',
106
+ description: '{{ message.subject }}',
107
+ },
108
+ },
109
+ columns: [
110
+ { name: 'title', options: { width: '220px' } },
111
+ { name: 'primaryChannel', options: { width: '140px' } },
112
+ { name: 'recipientSummary', options: { width: '200px' } },
113
+ ],
114
+ relatedEntities: [
115
+ {
116
+ entity: `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`,
117
+ title: RootConfig.entities.communicationDelivery.titlePlural,
118
+ columns: ['channel', 'status', 'recipientAddress', 'sentAt', 'deliveredAt'],
119
+ conditions: [entityDetailsSimpleCondition('communicationId')],
120
+ persistence: { foreignKeyField: 'communicationId' },
121
+ excludeProperties: ['communicationId'],
122
+ actions: [
123
+ ...entityDetailsCrudActions('communicationId', {
124
+ create: false,
125
+ edit: false,
126
+ delete: false,
127
+ view: true,
128
+ }),
129
+ ],
130
+ layout: { type: 'page-list', position: 'after', order: 1 },
131
+ },
132
+ ],
133
+ groups: [
134
+ { id: 'general', title: '@general:terms.interface.basic-info' },
135
+ { id: 'routing', title: `@${i18n}:entities.communication.groups.routing` },
136
+ ],
137
+ properties: [
138
+ {
139
+ name: 'title',
140
+ title: '@general:terms.common.title',
141
+ groupId: 'general',
142
+ options: listOptions,
143
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
144
+ },
145
+ {
146
+ name: 'message.subject',
147
+ title: `@${i18n}:entities.communication.fields.message-subject`,
148
+ groupId: 'general',
149
+ options: listOptions,
150
+ schema: {
151
+ dataType: 'string',
152
+ visible: false,
153
+ readonly: true,
154
+ interface: { type: AXPWidgetsCatalog.text },
155
+ },
156
+ },
157
+ {
158
+ name: 'message.body',
159
+ title: `@${i18n}:entities.communication.fields.message-body`,
160
+ groupId: 'general',
161
+ schema: {
162
+ dataType: 'string',
163
+ visible: false,
164
+ readonly: true,
165
+ interface: { type: AXPWidgetsCatalog.largeText },
166
+ },
167
+ },
168
+ {
169
+ name: 'primaryChannel',
170
+ title: `@${i18n}:entities.communication.fields.primary-channel`,
171
+ groupId: 'routing',
172
+ options: listOptions,
173
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
174
+ },
175
+ {
176
+ name: 'recipientSummary',
177
+ title: `@${i18n}:entities.communication.fields.recipient-summary`,
178
+ groupId: 'routing',
179
+ options: listOptions,
180
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
181
+ },
182
+ {
183
+ name: 'definitionKey',
184
+ title: `@${i18n}:entities.communication.fields.definition-key`,
185
+ groupId: 'routing',
186
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
187
+ },
188
+ {
189
+ name: 'priority',
190
+ title: `@${i18n}:entities.communication.fields.priority`,
191
+ groupId: 'routing',
192
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
193
+ },
194
+ {
195
+ name: 'correlationId',
196
+ title: `@${i18n}:entities.communication.fields.correlation-id`,
197
+ groupId: 'routing',
198
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
199
+ },
200
+ {
201
+ name: 'idempotencyKey',
202
+ title: `@${i18n}:entities.communication.fields.idempotency-key`,
203
+ groupId: 'routing',
204
+ schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
205
+ },
206
+ {
207
+ name: 'actions',
208
+ title: `@${i18n}:entities.communication.fields.actions`,
209
+ groupId: 'routing',
210
+ schema: { dataType: 'object', readonly: true, interface: { type: AXPWidgetsCatalog.text } },
211
+ },
212
+ ],
213
+ interfaces: {
214
+ master: {
215
+ // Empty create/update keeps the entity view-only (send API creates records).
216
+ create: {
217
+ sections: [],
218
+ properties: [],
219
+ },
220
+ update: {
221
+ sections: [],
222
+ properties: [],
223
+ },
224
+ single: {
225
+ title: '{{ title }}',
226
+ sections: [{ id: 'general' }, { id: 'routing' }],
227
+ properties: [
228
+ { name: 'title' },
229
+ { name: 'primaryChannel' },
230
+ { name: 'recipientSummary' },
231
+ { name: 'definitionKey' },
232
+ { name: 'correlationId' },
233
+ { name: 'idempotencyKey' },
234
+ ],
235
+ actions: [previewMessageAction(i18n), ...entityMasterRecordActions()],
236
+ },
237
+ list: {
238
+ actions: [
239
+ ...entityMasterCrudActions({ create: false, edit: false, view: true, delete: true }),
240
+ previewMessageAction(i18n),
241
+ ],
242
+ views: [createAllQueryView()],
243
+ },
244
+ },
245
+ },
246
+ };
247
+ }
248
+
249
+ /**
250
+ * Generated bundle index. Do not edit.
251
+ */
252
+
253
+ export { communicationEntityFactory };
254
+ //# sourceMappingURL=acorex-platform-module-communication-management-client-contracts-entities-communication.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-communication-management-client-contracts-entities-communication.mjs","sources":["../../../../libs/modules/communication-management/contracts/src/commands.keys.ts","../../../../libs/modules/communication-management/contracts/src/status.keys.ts","../../../../libs/modules/communication-management/contracts/src/root-config.ts","../../../../libs/modules/communication-management/contracts/src/entities/communication/communication.entity.ts","../../../../libs/modules/communication-management/contracts/src/acorex-platform-module-communication-management-client-contracts-entities-communication.ts"],"sourcesContent":["//#region ---- Client command keys ----\n\nexport const AXMCommunicationManagementCommandKeys = {\n Send: 'CommunicationManagement:Communication:Send',\n TestSmtp: 'CommunicationManagement:Communication:TestSmtp',\n EmailShowDialog: 'CommunicationManagement:Email:ShowDialog',\n EmailSend: 'CommunicationManagement:Email:Send',\n ShowSentMessage: 'CommunicationManagement:Communication:ShowSentMessage',\n} as const;\n\n//#endregion\n","//#region ---- Status definition keys ----\n\n/** Registered client status provider key for logical communications. */\nexport const AXP_COMMUNICATION_STATUS_DEFINITION_KEY = 'communication-management.status.communication';\n\n/** Registered client status provider key for communication deliveries. */\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DEFINITION_KEY =\n 'communication-management.status.communication-delivery';\n\nexport const AXP_COMMUNICATION_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_STATUS_PROCESSING = 'Processing' as const;\nexport const AXP_COMMUNICATION_STATUS_COMPLETED = 'Completed' as const;\nexport const AXP_COMMUNICATION_STATUS_FAILED = 'Failed' as const;\n\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_PENDING = 'Pending' as const;\nexport const AXP_COMMUNICATION_DELIVERY_STATUS_DELIVERED = 'Delivered' as const;\n\n//#endregion\n","const config = {\n i18n: 'communication-management',\n};\n\nconst dashboardWidgetId = (segment: string): string =>\n `CommunicationManagement:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n name: 'CommunicationManagement',\n title: '@communication-management:module.title',\n icon: 'fa-light fa-paper-plane',\n },\n entities: {\n communication: {\n name: 'Communications',\n title: '@communication-management:entities.communication.title',\n titlePlural: '@communication-management:entities.communication.plural',\n icon: 'fa-light fa-envelope',\n },\n communicationDelivery: {\n name: 'CommunicationDeliveries',\n title: '@communication-management:entities.communication-delivery.title',\n titlePlural: '@communication-management:entities.communication-delivery.plural',\n icon: 'fa-light fa-truck-fast',\n },\n },\n widgets: {\n myInAppInboxDashboard: dashboardWidgetId('MyInAppInboxDashboard'),\n },\n queries: {\n dashboard: {\n deliveryStatusDonut: 'CommunicationManagement:Dashboard:DeliveryStatusDonut',\n },\n },\n} as const;\n\nexport const COMMUNICATION_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communication.name}`;\nexport const COMMUNICATION_DELIVERY_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`;\n","import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n AXPEntityAction,\n AXPEntityCommandScope,\n createAllQueryView,\n entityDetailsCrudActions,\n entityDetailsSimpleCondition,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXMCommunicationManagementCommandKeys } from '../../commands.keys';\nimport { AXP_COMMUNICATION_STATUS_DEFINITION_KEY } from '../../status.keys';\nimport { RootConfig } from '../../root-config';\n\nconst listOptions = {\n filter: { inline: { enabled: true }, advance: { enabled: true } },\n sort: { enabled: true },\n};\n\nconst previewMessageAction = (i18n: string): AXPEntityAction =>\n ({\n title: `@${i18n}:entities.communication.actions.preview.title`,\n name: 'preview-message',\n icon: 'fa-light fa-envelope-open-text',\n command: {\n name: AXMCommunicationManagementCommandKeys.ShowSentMessage,\n options: {\n communicationId: '{{ context.eval(\"id\") }}',\n },\n },\n priority: 'primary',\n type: 'execute',\n scope: AXPEntityCommandScope.Individual,\n }) as AXPEntityAction;\n\nexport async function communicationEntityFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n return {\n module: RootConfig.module.name,\n name: RootConfig.entities.communication.name,\n title: RootConfig.entities.communication.title,\n icon: RootConfig.entities.communication.icon,\n plugins: [\n {\n name: 'status',\n options: {\n field: 'status',\n definition: AXP_COMMUNICATION_STATUS_DEFINITION_KEY,\n showInCreate: false,\n readonly: true,\n generate: { views: { enabled: true } },\n },\n },\n ],\n formats: {\n individual: RootConfig.entities.communication.title,\n plural: RootConfig.entities.communication.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: '{{ message.subject }}',\n },\n },\n columns: [\n { name: 'title', options: { width: '220px' } },\n { name: 'primaryChannel', options: { width: '140px' } },\n { name: 'recipientSummary', options: { width: '200px' } },\n ],\n relatedEntities: [\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.communicationDelivery.name}`,\n title: RootConfig.entities.communicationDelivery.titlePlural,\n columns: ['channel', 'status', 'recipientAddress', 'sentAt', 'deliveredAt'],\n conditions: [entityDetailsSimpleCondition('communicationId')],\n persistence: { foreignKeyField: 'communicationId' },\n excludeProperties: ['communicationId'],\n actions: [\n ...entityDetailsCrudActions('communicationId', {\n create: false,\n edit: false,\n delete: false,\n view: true,\n }),\n ],\n layout: { type: 'page-list', position: 'after', order: 1 },\n },\n ],\n\n groups: [\n { id: 'general', title: '@general:terms.interface.basic-info' },\n { id: 'routing', title: `@${i18n}:entities.communication.groups.routing` },\n ],\n properties: [\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'general',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'message.subject',\n title: `@${i18n}:entities.communication.fields.message-subject`,\n groupId: 'general',\n options: listOptions,\n schema: {\n dataType: 'string',\n visible: false,\n readonly: true,\n interface: { type: AXPWidgetsCatalog.text },\n },\n },\n {\n name: 'message.body',\n title: `@${i18n}:entities.communication.fields.message-body`,\n groupId: 'general',\n schema: {\n dataType: 'string',\n visible: false,\n readonly: true,\n interface: { type: AXPWidgetsCatalog.largeText },\n },\n },\n {\n name: 'primaryChannel',\n title: `@${i18n}:entities.communication.fields.primary-channel`,\n groupId: 'routing',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'recipientSummary',\n title: `@${i18n}:entities.communication.fields.recipient-summary`,\n groupId: 'routing',\n options: listOptions,\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'definitionKey',\n title: `@${i18n}:entities.communication.fields.definition-key`,\n groupId: 'routing',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'priority',\n title: `@${i18n}:entities.communication.fields.priority`,\n groupId: 'routing',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'correlationId',\n title: `@${i18n}:entities.communication.fields.correlation-id`,\n groupId: 'routing',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'idempotencyKey',\n title: `@${i18n}:entities.communication.fields.idempotency-key`,\n groupId: 'routing',\n schema: { dataType: 'string', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'actions',\n title: `@${i18n}:entities.communication.fields.actions`,\n groupId: 'routing',\n schema: { dataType: 'object', readonly: true, interface: { type: AXPWidgetsCatalog.text } },\n },\n ],\n interfaces: {\n master: {\n // Empty create/update keeps the entity view-only (send API creates records).\n create: {\n sections: [],\n properties: [],\n },\n update: {\n sections: [],\n properties: [],\n },\n single: {\n title: '{{ title }}',\n sections: [{ id: 'general' }, { id: 'routing' }],\n properties: [\n { name: 'title' },\n { name: 'primaryChannel' },\n { name: 'recipientSummary' },\n { name: 'definitionKey' },\n { name: 'correlationId' },\n { name: 'idempotencyKey' },\n ],\n actions: [previewMessageAction(i18n), ...entityMasterRecordActions()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({ create: false, edit: false, view: true, delete: true }),\n previewMessageAction(i18n),\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.communication';\n"],"names":[],"mappings":"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"}