BZ 530163 - New functionality "fetch responsibilities"
diff --git a/src/app/common-components/main-navigation/main-navigation.component.html b/src/app/common-components/main-navigation/main-navigation.component.html
index dd68691..b3c569b 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.html
+++ b/src/app/common-components/main-navigation/main-navigation.component.html
@@ -43,7 +43,10 @@
         </a>
         <ul class="dropdown-menu" style="left: auto; right: auto; top: 40px;">
           <li class="dropdown">
-            <a (click)="openDialogShiftChange()">Schicht übergeben</a>
+            <a (click)="openDialogShiftChange(false)">Schicht übergeben</a>
+          </li>
+          <li class="dropdown">
+            <a (click)="openDialogShiftChange(true)">Schicht holen</a>
           </li>
           <li class="dropdown">
             <a (click)="openDialogLogout()">Abmelden</a>
diff --git a/src/app/common-components/main-navigation/main-navigation.component.spec.ts b/src/app/common-components/main-navigation/main-navigation.component.spec.ts
index f6114b3..f338d63 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.spec.ts
+++ b/src/app/common-components/main-navigation/main-navigation.component.spec.ts
@@ -10,6 +10,7 @@
 import { MdDialogModule, MaterialModule, MdDialog } from '@angular/material';
 import { SessionContext } from '../../common/session-context';
 import { MainNavigationComponent } from './main-navigation.component';
+import { MessageService } from 'app/services/message.service';
 //import { LogoutComponent } from '../../dialogs/logout/logout.component';
 
 class FakeRouter {
@@ -52,7 +53,8 @@
       providers: [
         { provide: Router, useValue: routerStub },
         { provide: MdDialog, useClass: MdDialog },
-        { provide: SessionContext, useValue: sessionContext }
+        { provide: SessionContext, useValue: sessionContext },
+        { provide: MessageService }
       ]
     })
       .compileComponents();
diff --git a/src/app/common-components/main-navigation/main-navigation.component.ts b/src/app/common-components/main-navigation/main-navigation.component.ts
index 23d1527..e422d98 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.ts
+++ b/src/app/common-components/main-navigation/main-navigation.component.ts
@@ -3,6 +3,7 @@
 import { MdDialog, MdDialogConfig } from '@angular/material';
 import { LogoutComponent } from '../../dialogs/logout/logout.component';
 import { ShiftChangeComponent } from '../../dialogs/shift-change/shift-change.component';
+import { MessageService } from '../../services/message.service';
 import { Router } from '@angular/router';
 
 @Component({
@@ -19,8 +20,9 @@
   constructor(
     public sessionContext: SessionContext,
     public dialog: MdDialog,
-    public router: Router
-  ) { }
+    public router: Router,
+    private messageService: MessageService
+    ) { }
 
   ngOnInit() {
     this.dialogConfig.disableClose = true;
@@ -33,14 +35,27 @@
     });
   }
 
-  openDialogShiftChange() {
+  openDialogShiftChange( fetchResponsibility: boolean ) {
     const dialogRef = this.dialog.open(ShiftChangeComponent, this.dialogConfig);
-    dialogRef.afterClosed().subscribe(result => {
-      if (dialogRef.componentInstance.isChangingShift) {
-        this.openDialogLogout();
-      }
-    });
+    dialogRef.componentInstance.isFetchingResp = fetchResponsibility;
+
+    dialogRef.afterClosed().subscribe(() => this.onDialogShiftClosed( dialogRef.componentInstance.isFetchingResp, 
+                                                                          dialogRef.componentInstance.isChangingShift ));
   }
+
+
+  onDialogShiftClosed( isFetching: boolean, isChangingShift: boolean ) {
+   if ( isChangingShift ) {
+        if ( isFetching ) {
+          this.sessionContext.setfilterMatrix(null);
+          this.router.navigate(['logout']);
+//          this.messageService.respChangedForCurrentUser$.emit(true);
+        } else {
+    this.openDialogLogout();
+      }
+    }
+  }
+
   
   goToSearchPage() {
     this.router.navigate(['/search']);
diff --git a/src/app/common/globals.ts b/src/app/common/globals.ts
index d4f75b9..0af4819 100644
--- a/src/app/common/globals.ts
+++ b/src/app/common/globals.ts
@@ -1,5 +1,5 @@
 export class Globals {
-    static FRONTEND_VERSION = '1.0.1';
+    static FRONTEND_VERSION = '1.0.2';
     static SESSION_TOKEN_TAG = 'X-XSRF-TOKEN';
     static CURRENT_USER = 'CURRENT_USER';
     static ALL_USERS = 'ALL_USERS';
diff --git a/src/app/dialogs/responsibility/responsibility.component.ts b/src/app/dialogs/responsibility/responsibility.component.ts
index af54ea7..efef139 100644
--- a/src/app/dialogs/responsibility/responsibility.component.ts
+++ b/src/app/dialogs/responsibility/responsibility.component.ts
@@ -42,6 +42,7 @@
         this.responsiblitySelection = [];
         this.messageService.deactivateMessage();
         this.dialogRef.close();
+        //this.messageService.respConfirmed$.emit(true);
       } else {
         const message = 'Ihre Verantwortlichkeiten haben sich geändert. ' +
           'Bitte prüfen Sie Ihre Eingaben und versuchen Sie es erneut.';
@@ -54,9 +55,6 @@
         this.messageService.emitError('Verantwortlichkeiten', ErrorType.update);
       }
     );
-    function setResp(respCs: TerritoryResponsibility[]): void {
-
-    }
   }
 
   responsibilitiesSelectionChanged() {
diff --git a/src/app/dialogs/shift-change/shift-change.component.css b/src/app/dialogs/shift-change/shift-change.component.css
index 3a708e1..90d1507 100644
--- a/src/app/dialogs/shift-change/shift-change.component.css
+++ b/src/app/dialogs/shift-change/shift-change.component.css
@@ -22,4 +22,18 @@
 }
 .shc-table-col{
   width: 70px;
+  vertical-align: top;  
+}
+.shc-table-data{
+  text-align: left;
+}
+.curr-resp-label {
+  color  : #337ab7;
+}
+.curr-new-resp-label {
+  color  : #999999;
+}
+.important-text {
+  color: #a94442;
+  font-style: bold;
 }
\ No newline at end of file
diff --git a/src/app/dialogs/shift-change/shift-change.component.html b/src/app/dialogs/shift-change/shift-change.component.html
index 449b2a6..5650984 100644
--- a/src/app/dialogs/shift-change/shift-change.component.html
+++ b/src/app/dialogs/shift-change/shift-change.component.html
@@ -1,7 +1,6 @@
 <header>
-  <h2>
-    Schichtübergabe
-  </h2>
+  <h2 *ngIf="!isFetchingResp">Schichtübergabe</h2>
+  <h2 *ngIf="isFetchingResp">Schichtübernahme</h2>
 </header>
 
 <div>
@@ -16,7 +15,7 @@
         {{sessionContext.bannerMessage.text}}
       </div>
       <div class="panel-body" style="max-width: 450px;">
-        <multiselect class="customMultiSelect" [data]="allUsersButLoggedIn" [(ngModel)]="preSelectedUsers" [settings]="dropdownSettings"
+        <multiselect class="customMultiSelect" *ngIf="!isFetchingResp" [data]="allRelevantUsers" [(ngModel)]="preSelectedUsers" [settings]="dropdownSettings"
           ngDefaultControl></multiselect>
       </div>
       <form #shiftForm="ngForm" novalidate>
@@ -35,43 +34,67 @@
               <tbody>
                 <tr *ngFor="let responsibilityContainer of responsibilityContainers">
                   <td class="shc-table-col">{{ responsibilityContainer.gridTerritoryDescription }}</td>
-                  <td class="shc-table-col">
+                  <td class="shc-table-col shc-table-data">
                     <div class="form-group">
+                      <span class="curr-resp-label" *ngIf="isFetchingResp">
+                          Aktuell: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'S').responsibleUser)}} <br>
+                      </span>
+                      <span class="curr-new-resp-label" *ngIf="isFetchingResp && isNewUserPresent(getResponsibilityAll(responsibilityContainer,'S'))">
+                          Geplant: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'S').newResponsibleUser)}}
+                      </span>                      
                       <select [(ngModel)]="getResponsiblity(responsibilityContainer,'S').newResponsibleUser" *ngIf="responsibilityContainer && getResponsiblity(responsibilityContainer,'S')"
                         style="height:30px !important" class="form-control shc-table-select" name="'responsibleUserSelectionS_{{getResponsiblity(responsibilityContainer,'S').id}}'"
                         (change)="checkIfPersonSelected()">
                 <option></option>
-                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}">{{user.itemName}}</option>
+                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}">{{user.name}}</option>
               </select>
                     </div>
                   </td>
-                  <td class="shc-table-col">
+                  <td class="shc-table-col shc-table-data">
                     <div class="form-group">
-                      <select [(ngModel)]="getResponsiblity(responsibilityContainer,'G').newResponsibleUser" *ngIf="responsibilityContainer && getResponsiblity(responsibilityContainer,'G')"
+                        <span class="curr-resp-label" *ngIf="isFetchingResp">
+                            Aktuell: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'G').responsibleUser)}} <br>
+                        </span>
+                        <span class="curr-new-resp-label" *ngIf="isFetchingResp && isNewUserPresent(getResponsibilityAll(responsibilityContainer,'G'))">
+                            Geplant: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'G').newResponsibleUser)}}
+                        </span>                           
+                        <select [(ngModel)]="getResponsiblity(responsibilityContainer,'G').newResponsibleUser" *ngIf="responsibilityContainer && getResponsiblity(responsibilityContainer,'G')"
                         style="height:30px !important" class="form-control shc-table-select" name="'responsibleUserSelectionG_{{getResponsiblity(responsibilityContainer,'G').id}}'"
                         (change)="checkIfPersonSelected()">
                 <option></option>
-                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}">{{user.itemName}}</option>
+                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}">{{user.name}}</option>
               </select>
                     </div>
                   </td>
-                  <td class="shc-table-col">
+                  <td class="shc-table-col shc-table-data">
                     <div class="form-group">
+                        <span class="curr-resp-label" *ngIf="isFetchingResp">
+                            Aktuell: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'F').responsibleUser)}} <br>
+                        </span>  
+                        <span class="curr-new-resp-label" *ngIf="isFetchingResp && isNewUserPresent(getResponsibilityAll(responsibilityContainer,'F'))">
+                            Geplant: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'F').newResponsibleUser)}}
+                        </span>                                                      
                       <select [(ngModel)]="getResponsiblity(responsibilityContainer,'F').newResponsibleUser" *ngIf="responsibilityContainer && getResponsiblity(responsibilityContainer,'F')"
                         style="height:30px !important" class="form-control shc-table-select" name="'responsibleUserSelectionF_{{getResponsiblity(responsibilityContainer,'F').id}}'"
                         (change)="checkIfPersonSelected()">
                 <option></option>
-                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}"  >{{user.itemName}}</option>
+                <option  *ngFor="let user of preSelectedUsers" value="{{user.username}}"  >{{user.name}}</option>
               </select>
                     </div>
                   </td>
-                  <td class="shc-table-col">
+                  <td class="shc-table-col shc-table-data">
                     <div class="form-group">
+                        <span class="curr-resp-label" *ngIf="isFetchingResp">
+                            Aktuell: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'W').responsibleUser)}} <br>
+                        </span>                 
+                        <span class="curr-new-resp-label" *ngIf="isFetchingResp && isNewUserPresent(getResponsibilityAll(responsibilityContainer,'W'))">
+                            Geplant: {{sessionContext.getUserMap().findAndRenderUser(getResponsibilityAll(responsibilityContainer,'W').newResponsibleUser)}}
+                        </span>                                  
                       <select [(ngModel)]="getResponsiblity(responsibilityContainer,'W').newResponsibleUser" *ngIf="responsibilityContainer && getResponsiblity(responsibilityContainer,'W')"
                         style="height:30px !important" class="form-control shc-table-select" name="'responsibleUserSelectionW_{{getResponsiblity(responsibilityContainer,'W').id}}'"
                         (change)="checkIfPersonSelected()">
                 <option></option>
-                <option *ngFor="let user of preSelectedUsers" value="{{user.username}}" >{{user.itemName}}</option>
+                <option *ngFor="let user of preSelectedUsers" value="{{user.username}}" >{{user.name}}</option>
               </select>
                     </div>
                   </td>
@@ -84,8 +107,11 @@
     </div>
   </div>
   <div class="margin-top">
-    <button class="btn btn-primary btn-sm" [disabled]="shiftChangeFormInValid" (click)="shiftChange(true)" autofocus>Übergeben</button>
-    <button class="btn btn-primary btn-sm" (click)="cancelChange()" autofocus>Stornieren</button>
+    <button *ngIf="!isFetchingResp" class="btn btn-primary btn-sm" [disabled]="shiftChangeFormInValid" (click)="shiftChange(true)" autofocus>Übergeben</button>
+    <button *ngIf="isFetchingResp" class="btn btn-primary btn-sm" [disabled]="shiftChangeFormInValid" (click)="shiftChange(true)" autofocus>Übernehmen</button>
+
+    <button *ngIf="!isFetchingResp" class="btn btn-primary btn-sm" (click)="cancelChange()" autofocus>Stornieren</button>
     <button class="btn btn-primary btn-sm " (click)="dialogRef.close()">Abbrechen</button>
   </div>
+  <div class="important-text" *ngIf="!shiftChangeFormInValid && isFetchingResp"><span>Mit "Übernehmen" gelangen Sie auf die Logout-Seite und müssen die Anwendung neu starten!</span></div>
 </div>
\ No newline at end of file
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 b0b2337..f6a4aa0 100644
--- a/src/app/dialogs/shift-change/shift-change.component.spec.ts
+++ b/src/app/dialogs/shift-change/shift-change.component.spec.ts
@@ -134,7 +134,7 @@
         elLocal = de.nativeElement;
 
         const option = elLocal.options[elLocal.options.selectedIndex];
-        expect(option.textContent).toBe(testUser.username);
+        expect(option.textContent).toBe(testUser.name);
       });
     });
   }));
@@ -244,7 +244,7 @@
       });
     });
 
-    component.shiftChange(false);
+    component.shiftChange();
     fixture.detectChanges();
 
   }));
diff --git a/src/app/dialogs/shift-change/shift-change.component.ts b/src/app/dialogs/shift-change/shift-change.component.ts
index ca259e9..1ba6034 100644
--- a/src/app/dialogs/shift-change/shift-change.component.ts
+++ b/src/app/dialogs/shift-change/shift-change.component.ts
@@ -19,7 +19,7 @@
 export class ShiftChangeComponent implements OnInit {
   bannerMessageStatus = BannerMessageStatusEn;
   bannerMessage: BannerMessage = new BannerMessage();
-  allUsersButLoggedIn: User[]= new Array<User>();
+  allRelevantUsers: User[]= new Array<User>();
   allUsers: User[]= new Array<User>();
   preSelectedUsers: User[] = new Array<User>();
   responsibilityContainers: TerritoryResponsibility[]= new Array<TerritoryResponsibility>();
@@ -27,6 +27,7 @@
   isChangingShift = false;
   noUserSelected = true;
   shiftChangeFormInValid = true;
+  isFetchingResp = false;
   dropdownSettings = {};
 
 
@@ -57,6 +58,14 @@
   }
 
   getResponsibilities(): void {
+    if ( !this.isFetchingResp ) {
+      this.getMyResponsibilities();
+    } else {
+      this.getOtherResponsibilities();
+    }
+  }
+
+    getMyResponsibilities(): void {
     const self = this;
     this.responsibilityService.getResponsibilities().subscribe(resps => setUIRespValues(resps),
       error => {
@@ -79,12 +88,46 @@
     }
   }
 
-  getResponsiblity(responsibilityContainer: TerritoryResponsibility, branchName: string) {
+  getOtherResponsibilities(): void {
+    const self = this;
+    this.responsibilityService.getAllResponsibilities().subscribe(resps => setUIRespValues(resps),
+      error => {
+        console.log(error);
+        this.messageService.emitError('Schichtübergabe getResponsibilities', ErrorType.retrieve);
+      }
+    );
+    function setUIRespValues(resps: TerritoryResponsibility[]) {
+      self.responsibilityContainers = resps;      
+    }
+  }
+
+  
+  getResponsibilityAll(responsibilityContainer: TerritoryResponsibility, branchName: string) {
     return responsibilityContainer.responsibilityList.
       find(responsibility => responsibility.branchName === branchName);
   }
 
+  getResponsiblity(responsibilityContainer: TerritoryResponsibility, branchName: string) {
+    const resp: Responsibility = this.getResponsibilityAll( responsibilityContainer, branchName );
+    if ( this.isFetchingResp && 
+         resp && 
+         resp.responsibleUser === this.allRelevantUsers[0].username) {
+      return null;
+    } else {
+      return resp;
+    }
+  }
+
+
   getUsers() {
+    if ( !this.isFetchingResp ) {
+      this.getUsersExceptMe();
+    } else {
+      this.getUsersCurrentUser();
+    }
+  }
+
+  private getUsersExceptMe() {
     const self = this;
     this.userService.getUsers().subscribe(resps => setUsers(resps),
       error => {
@@ -94,12 +137,12 @@
     );
     function setUsers(_allUsers: User[]) {
       self.allUsers = _allUsers;
-      self.allUsersButLoggedIn = [];
+      self.allRelevantUsers = [];
       const currLoggedInUser = self.sessionContext.getCurrUser();
 
       for (const user of _allUsers) {
         if (currLoggedInUser.id !== user.id) {
-          self.allUsersButLoggedIn.push(user);
+          self.allRelevantUsers.push(user);
           user.itemName = user.name;
         }        
       }     
@@ -108,34 +151,51 @@
 
   }
 
+  private getUsersCurrentUser() {
+    this.allRelevantUsers = [];
+    this.allRelevantUsers.push(this.sessionContext.getCurrUser());
+    this.preSelectedUsers = [];
+    this.preSelectedUsers.push(this.sessionContext.getCurrUser());
+    this.afterUsersLoaded(); 
+  }
+
   cancelChange(): void {
     for (const responsibilityContainer of this.responsibilityContainers) {
       for (const responsibility of responsibilityContainer.responsibilityList) {
         responsibility.newResponsibleUser = '';
       }
     }
-    this.shiftChange(false);
+    this.shiftChange( false );
+    
   }
 
-  shiftChange(filter: boolean): void {
-    const self = this;
+  shiftChange( saveOrStornoYN: boolean ): void {
     const filteredResponsibilityContainers = this.responsibilityContainers;
+    let foo: any;
 
-    this.responsibilityService.planResponsibilities(filteredResponsibilityContainers).subscribe(resps => setResp(resps),
+    if ( this.isFetchingResp && saveOrStornoYN) {
+      foo = this.responsibilityService.fetchResponsibilities(filteredResponsibilityContainers);
+    } else {
+      foo = this.responsibilityService.planResponsibilities(filteredResponsibilityContainers);      
+    }
+
+    foo.subscribe(resps => this.callbackSetResp(this, resps, saveOrStornoYN),
       error => {
         this.messageService.emitError('Schichtübergabe', ErrorType.update);
         this.dialogRef.close();
       }
     );
-    function setResp(respCs: TerritoryResponsibility[]) {
-      if (respCs['ret'] && respCs['ret'] === 'OK') {
-        self.dialogRef.close();
-      } else {
-        const text = 'Ihre Verantwortlichkeiten haben sich geändert. ' +
-                'Bitte prüfen Sie Ihre Eingaben und versuchen Sie es erneut.';
-                self.messageService.emitInfo(text);
-        self.responsibilityContainers = respCs;
-      }
+  }
+
+  private callbackSetResp(self: ShiftChangeComponent , respCs: TerritoryResponsibility[], saveOrStornoYN: boolean) {
+    if (respCs['ret'] && respCs['ret'] === 'OK') {
+      self.dialogRef.componentInstance.isChangingShift = saveOrStornoYN;
+      self.dialogRef.close();
+    } else {
+      const text = 'Ihre Verantwortlichkeiten haben sich geändert. ' +
+              'Bitte prüfen Sie Ihre Eingaben und versuchen Sie es erneut.';
+              self.messageService.emitInfo(text);
+      this.responsibilityContainers = respCs;
     }
   }
 
@@ -150,4 +210,9 @@
       }
     }        
   }
+
+  isNewUserPresent( resp: Responsibility ): boolean {
+    return resp != null && resp.newResponsibleUser != null && resp.newResponsibleUser !== '';
+
+  } 
 }
diff --git a/src/app/filter/filter.component.ts b/src/app/filter/filter.component.ts
index 1086642..3dbc443 100644
--- a/src/app/filter/filter.component.ts
+++ b/src/app/filter/filter.component.ts
@@ -55,14 +55,21 @@
 
   ngOnInit() {
     this.user = this.sessionContext.getCurrUser();
+    this.messageService.respConfirmed$.subscribe( dummy => this.onRespForCurrentUserChanged());
   }
 
+
   getResponsiblity(responsibilityContainer: TerritoryResponsibility, branchName: string): Responsibility {    
     return responsibilityContainer.
       responsibilityList ? responsibilityContainer.responsibilityList.
         find(responsibility => responsibility.branchName === branchName) : null;
   }
 
+  onRespForCurrentUserChanged() {
+    this.getSessionFilterMatrix();
+    this.filterExpanded = true;
+  }
+
   initFilterMatrixWithDefaults() {
     this.filterMatrix = this.sessionContext.getfilterMatrix();
     if (!this.filterMatrix) {
@@ -101,20 +108,20 @@
     }
   }
 
-  getUpdatedResponsibilities(oldResponsibilityContainerMatrix: TerritoryResponsibility[]) {
-    let updatedResponsibilityContainerMatrix: TerritoryResponsibility[] = [];
+  getUpdatedResponsibilities(oldMatrix: TerritoryResponsibility[]) {
+    let updatedMatrix: TerritoryResponsibility[] = [];
     this.responsibilityService.getAllResponsibilities().subscribe(resps => {
 
-      updatedResponsibilityContainerMatrix = resps;
-      for (const responsibilityContainer of updatedResponsibilityContainerMatrix) {
-        for (const responsibility of responsibilityContainer.responsibilityList) {
-          const oldResp = this.findResponsibilityById(oldResponsibilityContainerMatrix, responsibility.id);
-          responsibility.isActive = oldResp.isActive;
+      updatedMatrix = resps;
+      for (const updatedContainer of updatedMatrix) {
+        for (const updatedResp of updatedContainer.responsibilityList) {
+          const oldResp = this.findResponsibilityById(oldMatrix, updatedResp.id);
+            updatedResp.isActive = oldResp.isActive;
         }
       }
 
-      this.responsibilityContainerMatrix = updatedResponsibilityContainerMatrix;
-      const filterMatrix: FilterMatrix = new FilterMatrix(updatedResponsibilityContainerMatrix);
+      this.responsibilityContainerMatrix = updatedMatrix;
+      const filterMatrix: FilterMatrix = new FilterMatrix(updatedMatrix);
       this.messageService.matrixFilterChanged$.emit(filterMatrix.getNumFilterList());
     },
       error => {
diff --git a/src/app/pages/overview/overview.component.ts b/src/app/pages/overview/overview.component.ts
index 246b2d3..465ce3f 100644
--- a/src/app/pages/overview/overview.component.ts
+++ b/src/app/pages/overview/overview.component.ts
@@ -59,9 +59,8 @@
     this.dialogConfig.disableClose = true;
     this.user = this.sessionContext.getCurrUser();
     this.filterExpanded_ = this.sessionContext.getFilterExpansionState();
-    //TODO muss oder darf dieses, vormals in login component, hier beim Erstaufruf implementiert werden???
-    //this.messageService.loginLogoff$.emit(MessageDefines.MSG_LOG_IN_SUCCEEDED);
     this.getResponsibilities();
+    this.messageService.respChangedForCurrentUser$.subscribe(b => this.getResponsibilities() );
   }
 
   private getResponsibilities(): void {
@@ -131,10 +130,10 @@
     });
   }
 
-  openDialogShiftChangeProtocol(responsibilitiesContainer: TerritoryResponsibility[]) {
+  openDialogShiftChangeProtocol(plannedRespContainer: TerritoryResponsibility[]) {
     const dialogRef = this.dialog.open(ShiftChangeProtocolComponent, this.dialogConfig);
     this.shiftChangeOpened = true;
-    dialogRef.componentInstance.setResponsibilitiesContainer(responsibilitiesContainer);
+    dialogRef.componentInstance.setResponsibilitiesContainer(plannedRespContainer);
     dialogRef.afterClosed().subscribe(result => {
       this.shiftChangeClosed = true;
       this.shiftChangeOpened = false;
diff --git a/src/app/services/message.service.ts b/src/app/services/message.service.ts
index dc47db4..389b362 100644
--- a/src/app/services/message.service.ts
+++ b/src/app/services/message.service.ts
@@ -15,6 +15,9 @@
 
   public matrixFilterChanged$: EventEmitter<number[]> = new EventEmitter<number[]>();
   public errorOccured$: EventEmitter<BannerMessage> = new EventEmitter<BannerMessage>();
+  public respChangedForCurrentUser$: EventEmitter<boolean> = new EventEmitter<boolean>();
+  public respConfirmed$: EventEmitter<boolean> = new EventEmitter<boolean>();
+
   public emitError(location: string, errorType?: ErrorType) {
     let message = '';
     switch (errorType) {
diff --git a/src/app/services/responsibility.service.ts b/src/app/services/responsibility.service.ts
index 741a8cf..810f644 100644
--- a/src/app/services/responsibility.service.ts
+++ b/src/app/services/responsibility.service.ts
@@ -53,13 +53,22 @@
 
     public planResponsibilities(responsibilities: TerritoryResponsibility[]) {
         const headers = new Headers();
-        const url = super.getBaseUrl() + '/planResponsibilities/';
+        const url = super.getBaseUrl() + '/postResponsibilities/';
         this.createCommonHeaders(headers, this._sessionContext);
         return this._http.post(url, JSON.stringify(responsibilities), { headers: headers })
             .map(res => super.extractData(res, this._sessionContext))
             .catch(error => { return super.handleErrorPromise(error); });
     }
 
+    public fetchResponsibilities(responsibilities: TerritoryResponsibility[]) {
+        const headers = new Headers();
+        const url = super.getBaseUrl() + '/fetchResponsibilities/';
+        this.createCommonHeaders(headers, this._sessionContext);
+        return this._http.post(url, JSON.stringify(responsibilities), { headers: headers })
+            .map(res => super.extractData(res, this._sessionContext))
+            .catch(error => { return super.handleErrorPromise(error); });
+    }
+    
     public confirmResponsibilities(responsibilities: TerritoryResponsibility[]) {
         const headers = new Headers();
         const url = super.getBaseUrl() + '/confirmResponsibilities/';