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