From 065cd249c9787f20b0956e23818234eec562e40f Mon Sep 17 00:00:00 2001 From: amentis Date: Thu, 4 Jan 2024 15:17:56 +0200 Subject: [PATCH] add notification type UI dropdown --- .../persist/NotificationTemplatePersist.java | 2 ++ .../NotificationServiceTemplateImpl.java | 5 +---- .../app/core/common/enum/notification-type.ts | 13 +++++++++++++ .../services/utilities/enum-utils.service.ts | 16 ++++++++++++++++ .../notification-template-editor.component.html | 12 +++++++++++- .../notification-template-editor.component.ts | 8 ++++++++ .../editor/notification-template-editor.model.ts | 2 +- dmp-frontend/src/assets/i18n/en.json | 13 +++++++++++++ 8 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 dmp-frontend/src/app/core/common/enum/notification-type.ts diff --git a/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/model/persist/NotificationTemplatePersist.java b/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/model/persist/NotificationTemplatePersist.java index 81ba162b3..c1518fa9c 100644 --- a/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/model/persist/NotificationTemplatePersist.java +++ b/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/model/persist/NotificationTemplatePersist.java @@ -18,6 +18,8 @@ public class NotificationTemplatePersist { @ValidEnum private NotificationTemplateChannel channel; + @NotNull + @Valid private UUID notificationType; @ValidEnum diff --git a/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/service/notificationtemplate/NotificationServiceTemplateImpl.java b/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/service/notificationtemplate/NotificationServiceTemplateImpl.java index 819916832..0b2b74349 100644 --- a/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/service/notificationtemplate/NotificationServiceTemplateImpl.java +++ b/dmp-backend/notification-service/notification/src/main/java/gr/cite/notification/service/notificationtemplate/NotificationServiceTemplateImpl.java @@ -102,17 +102,14 @@ public class NotificationServiceTemplateImpl implements NotificationTemplateServ data = this.entityManager.find(NotificationTemplateEntity.class, model.getId()); if (data == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getId(), NotificationTemplate.class.getSimpleName()}, LocaleContextHolder.getLocale())); if (!this.conventionService.hashValue(data.getUpdatedAt()).equals(model.getHash())) throw new MyValidationException(this.errors.getHashConflict().getCode(), this.errors.getHashConflict().getMessage()); - if (model.getNotificationType() != null){ - data.setNotificationType(model.getNotificationType()); - } } else { data = new NotificationTemplateEntity(); data.setId(UUID.randomUUID()); data.setIsActive(IsActive.Active); data.setCreatedAt(Instant.now()); - data.setNotificationType(UUID.randomUUID()); } + data.setNotificationType(model.getNotificationType()); data.setChannel(model.getChannel()); data.setKind(model.getKind()); data.setLanguageId(model.getLanguageId()); diff --git a/dmp-frontend/src/app/core/common/enum/notification-type.ts b/dmp-frontend/src/app/core/common/enum/notification-type.ts new file mode 100644 index 000000000..5844b53e4 --- /dev/null +++ b/dmp-frontend/src/app/core/common/enum/notification-type.ts @@ -0,0 +1,13 @@ + +export enum NotificationType { + dmpInvitationExternalUser = '065deecd-21bb-44af-9983-e660fdf24bc4', + dmpInvitationExistingUser = '4904dea2-5079-46d3-83be-3a19c9ab45dc', + dmpModified = '4542262a-22f8-4baa-9db6-1c8e70ac1dbb', + dmpFinalised = '90db0b46-42de-bd89-aebf-6f27efeb256e', + descriptionModified = '4fdbfa80-7a71-4a69-b854-67cbb70648f1', + descriptionFinalised = '33790bad-94d4-488a-8ee2-7f6295ca18ea', + mergeAccountConfirmation = 'bfe68845-cb05-4c5a-a03d-29161a7c9660', + removeCredentialConfirmation = 'c9bc3f16-057e-4bba-8a5f-36bd835e5604', + dmpDeposit = '55736f7a-83ab-4190-af43-9d031a6f9612', + descriptionTemplateInvitation = '223bb607-efa1-4ce7-99ec-4beabfef9a8b' +} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts index 0abdaf342..514721cf6 100644 --- a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts +++ b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts @@ -26,6 +26,7 @@ import { DmpBlueprintType } from '../../common/enum/dmp-blueprint-type'; import { DmpStatus } from '../../common/enum/dmp-status'; import { ValidationType } from '../../common/enum/validation-type'; import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; +import { NotificationType } from '@app/core/common/enum/notification-type'; @Injectable() export class EnumUtils { @@ -316,4 +317,19 @@ export class EnumUtils { case RecentActivityOrder.Status: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.STATUS'); } } + + toNotificationTypeString(status: NotificationType): string { + switch (status) { + case NotificationType.dmpInvitationExternalUser: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DMP-INVITATION-EXTERNAL-USER'); + case NotificationType.dmpInvitationExistingUser: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DMP-INVITATION-EXISTING-USER'); + case NotificationType.dmpModified: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DMP-MODIFIED'); + case NotificationType.dmpFinalised: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DMP-FINALISED'); + case NotificationType.descriptionModified: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DESCRIPTION-MODIFIED'); + case NotificationType.descriptionFinalised: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DESCRIPTION-FINALISED'); + case NotificationType.mergeAccountConfirmation: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.MERGE-ACCOUNT-CONFIRMATION'); + case NotificationType.removeCredentialConfirmation: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.REMOVE-CREDENTIAL-CONFIRMATION'); + case NotificationType.dmpDeposit: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DMP-DEPOSIT'); + case NotificationType.descriptionTemplateInvitation: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE.DESCRIPTION-TEMPLATE-INVITATION'); + } + } } diff --git a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.html b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.html index d46607c6e..ab3cb0e4f 100644 --- a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.html +++ b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.html @@ -30,6 +30,16 @@
+
+ + {{'NOTIFICATION-SERVICE.NOTIFICATION-TEMPLATE-EDITOR.FIELDS.NOTIFICATION-TYPE' | translate}} + + + {{enumUtils.toNotificationTypeString(type)}} + + + +
{{'NOTIFICATION-SERVICE.NOTIFICATION-TEMPLATE-EDITOR.FIELDS.LANGUAGE' | translate}} @@ -49,7 +59,7 @@ {{enumUtils.toNotificationTemplateKindString(kind)}} - {{'GENERAL.VALIDATION.REQUIRED' | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}}
diff --git a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.ts b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.ts index e93205799..51daaad43 100644 --- a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.component.ts @@ -33,6 +33,7 @@ import { MatChipEditedEvent, MatChipInputEvent } from '@angular/material/chips'; import { MatCheckboxChange } from '@angular/material/checkbox'; import { NotificationDataType } from '@app/core/common/enum/notification-data-type'; import { EmailOverrideMode } from '@app/core/common/enum/email-override-mode'; +import { NotificationType } from '@app/core/common/enum/notification-type'; @Component({ selector: 'app-notification-template-editor', @@ -56,6 +57,8 @@ export class NotificationTemplateEditorComponent extends BaseEditor(x => x.id),nameof(x => x.code)]) diff --git a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.model.ts b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.model.ts index 9bc1745e3..82f994429 100644 --- a/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.model.ts +++ b/dmp-frontend/src/app/ui/admin/notification-template/editor/notification-template-editor.model.ts @@ -57,7 +57,7 @@ export class NotificationTemplateEditorModel extends BaseEditorModel implements const baseValidationArray: Validation[] = new Array(); baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] }); baseValidationArray.push({ key: 'channel', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'channel')] }); - baseValidationArray.push({ key: 'notificationType', validators: [BackendErrorValidator(this.validationErrorModel, 'notificationType')] }); + baseValidationArray.push({ key: 'notificationType', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'notificationType')] }); baseValidationArray.push({ key: 'kind', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'kind')] }); baseValidationArray.push({ key: 'languageId', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'languageId')] }); baseValidationArray.push({ key: 'value', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'value')] }); diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 6cff527c2..be0f51e0f 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -1331,6 +1331,7 @@ "NOTIFICATION-TEMPLATE-EDITOR": { "NEW": "New Notification Template", "FIELDS": { + "NOTIFICATION-TYPE": "Notification Type", "LANGUAGE": "Language", "CHANNEL": "Channel", "KIND": "Kind", @@ -2260,6 +2261,18 @@ "NOT": "Not Override", "ADDITIVE": "Additive", "REPLACE": "Replace" + }, + "NOTIFICATION-TEMPLATE-NOTIFICATION-TYPE": { + "DMP-INVITATION-EXTERNAL-USER": "DMP Invitation External User", + "DMP-INVITATION-EXISTING-USER": "DMP Invitation Existing User", + "DMP-MODIFIED": "DMP Modified", + "DMP-FINALISED": "DMP Finalised", + "DESCRIPTION-MODIFIED": "Description Modified", + "DESCRIPTION-FINALISED": "Description Finalised", + "MERGE-ACCOUNT-CONFIRMATION": "Merge Account Confirmation", + "REMOVE-CREDENTIAL-CONFIRMATION": "Remove Credential Confirmation", + "DMP-DEPOSIT": "DMP Deposit", + "DESCRIPTION-TEMPLATE-INVITATION": "Description Template Invitation" } }, "ADDRESEARCHERS-EDITOR": {