Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-coremodules/org.eclipse.openk-coremodules.contactBaseData.frontend into KON-605-NEW
diff --git a/i18n/general.de.json b/i18n/general.de.json
index 3856877..582671f 100644
--- a/i18n/general.de.json
+++ b/i18n/general.de.json
@@ -31,6 +31,7 @@
     "SubmitBtn": "Ja",
     "CancelBtn": "Nein",
     "Anonymization": "Wollen Sie diesen Kontakt wirklich anonymisieren? Dieser Vorgang kann nicht rückgängig gemacht werden. Sämtliche zu diesem Kontakt gehörenden Daten werden anonymisiert. Diese Daten können nicht wiederhergestellt werden.",
+    "AnonymizationWithAssignment": "Zu diesem Kontakt existieren aktive Modulzuordnungen. Wollen Sie diesen Kontakt wirklich anonymisieren? Dieser Vorgang kann nicht rückgängig gemacht werden. Sämtliche zu diesem Kontakt gehörenden Daten werden anonymisiert. Diese Daten können nicht wiederhergestellt werden.",
     "MainAddressModification": "Es existiert schon eine Hauptadresse. Wollen Sie sie wirklich ändern?",
     "Action": {
       "delete": "Datensatz löschen",
diff --git a/src/app/shared/components/anonymizer/anonymizer.component.ts b/src/app/shared/components/anonymizer/anonymizer.component.ts
index 4b55552..7dc2348 100644
--- a/src/app/shared/components/anonymizer/anonymizer.component.ts
+++ b/src/app/shared/components/anonymizer/anonymizer.component.ts
@@ -26,11 +26,9 @@
   public anonymizeContact(): void {
     this._sandbox.anonymizeContact(this.contactId);
   }
-
   ngOnInit() {
     this._sandbox.init();
   }
-
   ngOnDestroy() {
     this._sandbox.endSubscriptions();
     this.contactId = null;
diff --git a/src/app/shared/components/anonymizer/anonymizer.sandbox.ts b/src/app/shared/components/anonymizer/anonymizer.sandbox.ts
index 83302b7..045e6fb 100644
--- a/src/app/shared/components/anonymizer/anonymizer.sandbox.ts
+++ b/src/app/shared/components/anonymizer/anonymizer.sandbox.ts
@@ -16,27 +16,49 @@
 import * as store from '@shared/store';
 import * as contactsActions from '@shared/store/actions/contacts.action';
 import { ofType } from '@ngrx/effects';
-import { takeUntil } from 'rxjs/operators';
+import { takeUntil, map } from 'rxjs/operators';
 import { Router } from '@angular/router';
 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { SafetyQueryDialogComponent } from '@shared/components/dialogs/safety-query-dialog/safety-query-dialog.component';
+import { Observable } from 'rxjs';
+import { InternalPerson, UserModuleAssignment } from '@app/shared/models';
 
 @Injectable()
 export class AnonymizerSandbox extends BaseSandbox {
+
+  public userModuleAssignmentsDataDetails$: Observable<Array<UserModuleAssignment>> = this.appState$.select(store.getUserModuleAssignmentsData);
+  private _userModuls:UserModuleAssignment[]=[];
+
+
   constructor(protected appState$: Store<store.State>, protected actionsSubject: ActionsSubject, protected router: Router, protected modalService: NgbModal) {
     super(appState$);
   }
-
   public init() {
+    this.userModuleAssignmentsDataDetails$.subscribe((userModuls:UserModuleAssignment[])=>{
+      this._userModuls= userModuls;
+    });
     this.actionsSubject.pipe(ofType(contactsActions.anonymizeContactSuccess), takeUntil(this._endSubscriptions$)).subscribe(() => {
       this.router.navigateByUrl(`/overview`);
     });
   }
 
   public anonymizeContact(contactId: string): void {
+    let noExclamationMark: boolean = true;
+
+    this._userModuls.forEach(item => console.log(item.deletionLockUntil));
+    noExclamationMark = this._userModuls.every(this.hasNoActiveAssignments);
+
     const modalRef = this.modalService.open(SafetyQueryDialogComponent);
     modalRef.componentInstance.title = 'ConfirmDialog.Action.anonymize';
-    modalRef.componentInstance.body = 'ConfirmDialog.Anonymization';
+    if(noExclamationMark){
+      modalRef.componentInstance.body = 'ConfirmDialog.Anonymization';
+      modalRef.componentInstance.showExclamationMarkIcon = false;
+    }
+    else{
+      modalRef.componentInstance.body = 'ConfirmDialog.AnonymizationWithAssignment';
+      modalRef.componentInstance.showExclamationMarkIcon = true;
+    }
+
     modalRef.result.then(
       () => {
         this.appState$.dispatch(contactsActions.anonymizeContact({ payload: contactId }));
@@ -44,4 +66,11 @@
       () => {}
     );
   }
+
+  private hasNoActiveAssignments(element, index, array) {
+      let dateNow: number = Date.now();
+      let dateUntil: number = Date.parse(element.deletionLockUntil)
+      return dateUntil < dateNow;
+
+  }
 }
diff --git a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.html b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.html
index bb4506c..5d9af44 100644
--- a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.html
+++ b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.html
@@ -14,10 +14,16 @@
   <h4 class="modal-title">{{title | translate}}</h4>
 </div>
 <div class="modal-body">
-  <p>{{body | translate}}</p>
+  <p *ngIf="showExclamationMarkIcon" class="exclamation-icon">
+    <i class="fa fa-exclamation fa-5x" aria-hidden="true" ></i>
+  </p>
+  <p class="text-body">
+    {{body | translate}}
+  </p>
 </div>
 <div class="modal-footer">
   <button type="button" class="btn btn-outline-danger" (click)="activeModal.close()">{{ 'ConfirmDialog.SubmitBtn' | translate }}</button>
   <button type="button" class="btn btn-outline-secondary" (click)="activeModal.dismiss()">{{ 'ConfirmDialog.CancelBtn' | translate }}</button>
-
 </div>
+
+
diff --git a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.scss b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.scss
index 46dc5b1..f82530b 100644
--- a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.scss
+++ b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.scss
@@ -10,3 +10,15 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
+ .exclamation-icon {
+    border-style: none;
+    color:red;
+    padding-right: 25px;
+    padding-top: 6%;
+    float: left;
+}
+
+.body {
+    border-style: none;
+    float: right;
+}
\ No newline at end of file
diff --git a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.ts b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.ts
index 23b725c..9003da0 100644
--- a/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.ts
+++ b/src/app/shared/components/dialogs/safety-query-dialog/safety-query-dialog.component.ts
@@ -22,10 +22,11 @@
 
   @Input() title;
   @Input() body;
+  @Input() showExclamationMarkIcon;
 
   constructor(public activeModal: NgbActiveModal) {}
 
-  ngOnInit() {
+   ngOnInit() {
   }
 
 }