OK-490 filter to valid new responsible users
diff --git a/src/app/dialogs/shift-change/shift-change.component.spec.ts b/src/app/dialogs/shift-change/shift-change.component.spec.ts
index 1d2a3dd..2c0a175 100644
--- a/src/app/dialogs/shift-change/shift-change.component.spec.ts
+++ b/src/app/dialogs/shift-change/shift-change.component.spec.ts
@@ -13,6 +13,7 @@
 import { ResponsibilityService } from '../../services/responsibility.service';
 import { SessionContext } from '../../common/session-context';
 import { RESPONSIBILITIES } from '../../test-data/responsibilities';
+import { RESPONSIBILITIES_SHIFT_CHANGE } from '../../test-data/responsibilities';
 import { USERS } from '../../test-data/users';
 import { AngularMultiSelectComponent } from '../../common-components/multiselect-dropdown/multiselect.component';
 import { MessageService } from '../../services/message.service';
@@ -198,6 +199,26 @@
 
     });
   }));
+
+  it('should filter responsibilityContainers', async(() => {
+    sessionContext.setCurrUser(USERS[0]); 
+    const responsibilityContainers = RESPONSIBILITIES_SHIFT_CHANGE;
+    const testUser = USERS[0];
+    const filteredRespContainers1 = fixture.componentInstance.filterToValidResponsibilityContainerValues(responsibilityContainers);
+    fixture.detectChanges();
+    fixture.whenStable().then(() => {      
+      expect(filteredRespContainers1.length).toBe(2);
+      filteredRespContainers1.forEach(responsibilityContainer => {
+        responsibilityContainer.responsibilityList.forEach(responsibility => {
+          expect(responsibility.responsibleUser).toBe(testUser.username);
+          expect(responsibility.newResponsibleUser).not.toBe(testUser.username);
+        });        
+      });
+      
+    });
+
+  }));
+
 });
 class Page {
   //  gotoSpy:      jasmine.Spy;
diff --git a/src/app/dialogs/shift-change/shift-change.component.ts b/src/app/dialogs/shift-change/shift-change.component.ts
index 534efee..23cde1c 100644
--- a/src/app/dialogs/shift-change/shift-change.component.ts
+++ b/src/app/dialogs/shift-change/shift-change.component.ts
@@ -1,5 +1,7 @@
 import { Component, Optional, OnInit } from '@angular/core';
 import { MdDialogRef } from '@angular/material';
+
+import { Responsibility } from '../../model/responsibility';
 import { TerritoryResponsibility } from '../../model/territory-responsibility';
 import { ResponsibilityService } from '../../services/responsibility.service';
 import { SessionContext } from '../../common/session-context';
@@ -8,6 +10,7 @@
 import { User } from '../../model/user';
 import { BannerMessageStatusEn, ErrorType } from '../../common/enums';
 import { MessageService, MessageDefines } from '../../services/message.service';
+
 @Component({
   selector: 'app-shift-change',
   templateUrl: './shift-change.component.html',
@@ -29,7 +32,7 @@
   constructor(
     @Optional() public dialogRef: MdDialogRef<ShiftChangeComponent>,
     private responsibilityService: ResponsibilityService,
-    private messageService:MessageService,
+    private messageService: MessageService,
     private userService: UserService,
     private sessionContext: SessionContext) { }
 
@@ -52,6 +55,7 @@
     this.responsibilityService.getResponsibilities().subscribe(resps => setUIRespValues(resps),
       error => {
         console.log(error);
+        this.messageService.emitError('Schichtübergabe getResponsibilities', ErrorType.retrieve);
       }
     );
     function setUIRespValues(resps: TerritoryResponsibility[]) {
@@ -79,6 +83,7 @@
     this.userService.getUsers().subscribe(resps => setUsers(resps),
       error => {
         console.log(error);
+        this.messageService.emitError('Schichtübergabe getUsers', ErrorType.retrieve);
       }
     );
     function setUsers(_allUsers: User[]) {
@@ -120,7 +125,9 @@
 
   shiftChange(): void {
     const self = this;
-    this.responsibilityService.planResponsibilities(this.responsibilityContainers).subscribe(resps => setResp(resps),
+    const filteredResponsibilityContainers = this.filterToValidResponsibilityContainerValues(this.responsibilityContainers);
+
+    this.responsibilityService.planResponsibilities(filteredResponsibilityContainers).subscribe(resps => setResp(resps),
       error => {
         this.messageService.emitError('Schichtübergabe', ErrorType.update);
         this.dialogRef.close();
@@ -137,4 +144,27 @@
       }
     }
   }
+
+  filterToValidResponsibilityContainerValues(_responsibilityContainers: TerritoryResponsibility[]): TerritoryResponsibility[] {
+    const filteredRespContainers = new Array<TerritoryResponsibility>();
+    const currUserName = this.sessionContext.getCurrUser().username;
+
+    _responsibilityContainers.forEach(territoryResponsibility => {
+      
+      let tmpResponsibilityList = new Array<Responsibility>();      
+      tmpResponsibilityList = territoryResponsibility.responsibilityList.filter(
+        resp => (resp.responsibleUser === currUserName) 
+              && (resp.newResponsibleUser !== '') 
+              && (resp.newResponsibleUser !== currUserName));
+      if (tmpResponsibilityList.length > 0) {
+        const tmpTerritoryResponsibility = new TerritoryResponsibility();
+        tmpTerritoryResponsibility.id = territoryResponsibility.id;
+        tmpTerritoryResponsibility.gridTerritoryDescription = territoryResponsibility.gridTerritoryDescription;
+        tmpTerritoryResponsibility.responsibilityList = tmpResponsibilityList;
+        filteredRespContainers.push(tmpTerritoryResponsibility);
+      }
+    });          
+
+    return filteredRespContainers;
+  } 
 }
diff --git a/src/app/test-data/responsibilities.ts b/src/app/test-data/responsibilities.ts
index 3d4316c..d7d4f5b 100644
--- a/src/app/test-data/responsibilities.ts
+++ b/src/app/test-data/responsibilities.ts
@@ -104,3 +104,108 @@
         ]
     }
 ];
+
+export const RESPONSIBILITIES_SHIFT_CHANGE: TerritoryResponsibility[] = [
+    {
+        id: 1,
+        gridTerritoryDescription: 'Mannheim',
+        responsibilityList: [
+            new Responsibility({
+                id: 1,
+                responsibleUser: 'max',
+                newResponsibleUser: 'otto',
+                branchName: 'S',
+                isActive: true
+            }),
+            new Responsibility({
+                id: 2,
+                responsibleUser: 'max',
+                newResponsibleUser: 'hugo',
+                branchName: 'W',
+                isActive: true
+            }),
+            new Responsibility({
+                id: 3,
+                responsibleUser: 'max',
+                newResponsibleUser: '',
+                branchName: 'F',
+                isActive: true
+            }),
+            new Responsibility({
+                id: 4,
+                responsibleUser: 'admin',
+                newResponsibleUser: '',
+                branchName: 'G',
+                isActive: true
+            })           
+        ]
+    },
+    {
+        id: 2,
+        gridTerritoryDescription: 'Offenbach',
+        responsibilityList: [
+            new Responsibility({
+                id: 5,
+                responsibleUser: 'admin',
+                newResponsibleUser: '',
+                branchName: 'S',
+                isActive: true
+            }),
+            new Responsibility({
+                id: 6,
+                responsibleUser: 'admin',
+                newResponsibleUser: '',
+                branchName: 'W',
+                isActive: true
+            }),
+            new Responsibility({
+                id: 7,
+                responsibleUser: 'admin',
+                newResponsibleUser: '',
+                branchName: 'F',
+                isActive: true
+            }),
+           new Responsibility({
+                id: 8,
+                responsibleUser: 'max',
+                newResponsibleUser: '',
+                branchName: 'G',
+                isActive: true
+            })
+        ]
+    },
+    {
+        id: 3,
+        gridTerritoryDescription: 'Kassel',
+        responsibilityList: [
+            new Responsibility({
+                id: 9,
+                responsibleUser: 'User1',
+                newResponsibleUser: '',
+                branchName: 'S',
+                isActive: false
+            }),
+          new Responsibility({
+                id: 10,
+                responsibleUser: 'User1',
+                newResponsibleUser: '',
+                branchName: 'W',
+                isActive: false
+            }),
+            new Responsibility({
+                id: 11,
+                responsibleUser: 'User1',
+                newResponsibleUser: '',
+                branchName: 'F',
+                isActive: false
+            }),
+            new Responsibility({
+                id: 12,
+                responsibleUser: 'max',
+                newResponsibleUser: 'hugo',
+                branchName: 'G',
+                isActive: false
+            }),
+        ]
+    }
+];
\ No newline at end of file