@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.
- 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
- package/fesm2022/acorex-platform-module-communication-management-client-acorex-platform-module-communication-management-client-CZh_tBTN.mjs.map +1 -0
- 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
- 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
- package/fesm2022/acorex-platform-module-communication-management-client-communication-email-show-dialog.command-NuJLiYs_.mjs.map +1 -1
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-module-communication-management-client-communication-show-sent-message.command-D9KRxkdp.mjs.map +1 -1
- 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
- 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
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs +235 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication.mjs +254 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entities-communication.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-acorex-platform-module-communication-management-client-contracts-entity-catalog-BvLoGDK5.mjs +60 -0
- 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
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication-delivery.entity-DPCU8P32.mjs +183 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication-delivery.entity-DPCU8P32.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication.entity-DGj9OD3Z.mjs +202 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-communication.entity-DGj9OD3Z.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-status.keys-JESc4HlO.mjs +15 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog-status.keys-JESc4HlO.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog.mjs +2 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts-entity-catalog.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-communication-management-client-local-entities.mjs +30 -0
- package/fesm2022/acorex-platform-module-communication-management-client-local-entities.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-communication-management-client.mjs +1 -1
- package/package.json +19 -3
- package/types/acorex-platform-module-communication-management-client-contracts-entities-communication-delivery.d.ts +5 -0
- package/types/acorex-platform-module-communication-management-client-contracts-entities-communication.d.ts +5 -0
- package/types/acorex-platform-module-communication-management-client-contracts-entity-catalog.d.ts +10 -0
- package/types/acorex-platform-module-communication-management-client-local-entities.d.ts +12 -0
- package/types/acorex-platform-module-communication-management-client.d.ts +2 -0
- 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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"}
|