+
+ {{ 'NOTIFICATION-SERVICE.USER-PROFILE.NOTIFIER-LIST-EDITOR.MESSAGES.ERROR' | translate}}
+
+
+
diff --git a/dmp-frontend/src/notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.component.scss b/dmp-frontend/src/notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.component.scss
new file mode 100644
index 000000000..e69de29bb
diff --git a/dmp-frontend/src/notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.component.ts b/dmp-frontend/src/notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.component.ts
new file mode 100644
index 000000000..2cd130b19
--- /dev/null
+++ b/dmp-frontend/src/notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.component.ts
@@ -0,0 +1,158 @@
+import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
+import { HttpErrorResponse } from '@angular/common/http';
+import { Component, EventEmitter, OnInit, Output } from '@angular/core';
+import { FormGroup } from '@angular/forms';
+import { AuthService } from '@app/core/services/auth/auth.service';
+import { LoggingService } from '@app/core/services/logging/logging-service';
+import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service';
+import { BaseComponent } from '@common/base/base.component';
+import { FormService } from '@common/forms/form-service';
+import { HttpError, HttpErrorHandlingService } from '@common/modules/errors/error-handling/http-error-handling.service';
+// import { TotpService } from '@idp-service/ui/totp/totp.service';
+import { TranslateService } from '@ngx-translate/core';
+import { ContactType } from '@notification-service/core/enum/contact-type.enum';
+import { NotificationTrackingProcess } from '@notification-service/core/enum/notification-tracking-process.enum';
+import { NotificationType } from '@notification-service/core/enum/notification-type.enum';
+import { NotificationServiceEnumUtils } from '@notification-service/core/formatting/enum-utils.service';
+import { UserNotificationPreference } from '@notification-service/core/model/user-notification-preference.model';
+import { NotifierListLookup } from '@notification-service/core/query/notifier-list.lookup';
+import { UserNotificationPreferenceService } from '@notification-service/services/http/user-notification-preference.service';
+import { UserProfileNotifierListEditorModel } from '@notification-service/ui/user-profile/notifier-list/user-profile-notifier-list-editor.model';
+import { delay, takeUntil } from 'rxjs/operators';
+import { nameof } from 'ts-simple-nameof';
+
+@Component({
+ selector: 'app-user-profile-notifier-list-editor',
+ templateUrl: './user-profile-notifier-list-editor.component.html',
+ styleUrls: ['./user-profile-notifier-list-editor.component.scss']
+})
+export class UserProfileNotifierListEditorComponent extends BaseComponent implements OnInit {
+
+ formGroup: FormGroup;
+ editorModel: UserProfileNotifierListEditorModel;
+ availableNotifiers: { [key: string]: ContactType[] } = {};
+ availableNotifiersKeys: NotificationType[];
+
+ notificationTrackingProcess: NotificationTrackingProcess = NotificationTrackingProcess.Pending;
+
+ constructor(
+ private userNotificationPreferenceService: UserNotificationPreferenceService,
+ private uiNotificationService: UiNotificationService,
+ private language: TranslateService,
+ private httpErrorHandlingService: HttpErrorHandlingService,
+ private authService: AuthService,
+ private formService: FormService,
+ private logger: LoggingService,
+ public notificationServiceEnumUtils: NotificationServiceEnumUtils,
+ // private totpService: TotpService
+ ) {
+ super();
+ }
+
+ ngOnInit(): void {
+ this.getConfiguration();
+ }
+
+ getConfiguration() {
+ this.formGroup = null;
+ this.userNotificationPreferenceService.getNotifierList(new NotifierListLookup())
+ .pipe(takeUntil(this._destroyed))
+ .subscribe(
+ data => {
+ try {
+ this.availableNotifiers = data.notifiers;
+ this.availableNotifiersKeys = Object.keys(this.availableNotifiers) as NotificationType[];
+ this.getExistingSelections();
+ } catch {
+ this.notificationTrackingProcess = NotificationTrackingProcess.Error;
+ this.logger.error('Could not parse Dataset: ' + data);
+ this.uiNotificationService.snackBarNotification(this.language.instant('COMMONS.ERRORS.DEFAULT'), SnackBarNotificationLevel.Error);
+ }
+ },
+ error => this.onCallbackError(error)
+ );
+ }
+
+ getExistingSelections() {
+ this.userNotificationPreferenceService.current(this.authService.userId(), [
+ nameof