From 12e60097bd1965bde62ea646631c0e601b0fe6f4 Mon Sep 17 00:00:00 2001 From: Niggl Date: Mon, 20 Jul 2020 11:35:04 +0200 Subject: [PATCH] Users can now be added and deleted --- .../forms/task/task-form.component.html | 493 ++++++++------- .../forms/task/task-form.component.ts | 505 ++++++++------- .../userstory/userstory-form.component.html | 589 +++++++++--------- .../userstory/userstory-form.component.ts | 513 ++++++++------- 4 files changed, 1116 insertions(+), 984 deletions(-) diff --git a/src/app/components/forms/task/task-form.component.html b/src/app/components/forms/task/task-form.component.html index 66ecb2d..dce239e 100644 --- a/src/app/components/forms/task/task-form.component.html +++ b/src/app/components/forms/task/task-form.component.html @@ -1,232 +1,261 @@ - - -
-
-
-
- -
-
-
-

Task bearbeiten

-

Neuen Task anlegen

- -
-
-
-
-
-
-
- - -
-
- - -
-
-
- -
- - -
-
- - -
-
-
-
-
- - - -
-
-
-
-
-
+ + +
+
+
+
+ +
+
+
+

Task bearbeiten

+

Neuen Task anlegen

+ +
+
+
+
+
+
+
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
+
+ + + +
+
+
+
+
+
diff --git a/src/app/components/forms/task/task-form.component.ts b/src/app/components/forms/task/task-form.component.ts index 07c04df..636b816 100644 --- a/src/app/components/forms/task/task-form.component.ts +++ b/src/app/components/forms/task/task-form.component.ts @@ -1,234 +1,271 @@ -// Importing necessary components and interfaces. -import { Component, OnInit, Input } from '@angular/core'; -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; -import { - BackendService, - ScrumTask, - Priority, - ScrumStatus, - ScrumCategory, - ScrumUser, - ScrumProject, - ScrumUserstory -} from '../../../services/backend.service'; -import { Observable } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; - -@Component({ - selector: 'app-task-form', - templateUrl: './task-form.component.html', - styleUrls: [ './task-form.component.css' ] -}) -export // Class implements the logic for a popup window form to create and modify tasks. -class TaskFormComponent implements OnInit { - @Input() public task: ScrumTask; - public editing: boolean; - public creating: boolean; - public userstoryId: string; - public userstories: any[] = []; - public allStatus: any[] = []; - public status: ScrumStatus = { title: '', description: '' }; - public allUser: any[] = []; - public user: ScrumUser = { name: '' }; - - constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { - this.getUserStories(); - this.getTaskStatus(); - this.getAllUsers(); - } - - /** - * If no task exists a new on will be created. - * In other cases the task exists and gets modifiable. - */ - ngOnInit(): void { - if (this.task === null || this.task === undefined) { - this.task = { title: '' }; - this.editing = false; - this.creating = false; - } else if (this.task.userstoryId) { - this.editing = true; - } else { - this.creating = true; - } - document.getElementById('titleField').focus(); - this.getRelatedStory(); - } - - /** - * A new created task will be saved in the backend (POST). - * If a task already exists, modifying results an update (PUT) to the backend. - */ - onSubmit() { - if (this.editing) { - this.backendService.putTask(this.task).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } - }); - } else { - this.backendService.postTask(this.task).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - // Copy properties returned by the API - Object.assign(this.task, response.body); - } - }); - } - // Closes the popup window after submitting/canceling. - this.activeModalService.close(this.task); - } - - /** - * Closes the popup form window (by clicking "close button"). - */ - onClose() { - this.activeModalService.dismiss(this.task); - } - - /** - * Getting the userstory which is related to a task. - * The related story will be shown in popup window of a task. - */ - getRelatedStory() { - if (!this.task.userstoryId) { - return null; - } - this.backendService.getUserstory(this.task.userstoryId).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.userstoryId = response.body.title; - } - }); - } - - /** - * Getting all userstories from backend to show in a dropdown in popup window. - */ - getUserStories() { - this.backendService.getUserstories().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.userstories.push(...response.body); - } - }); - } - - /** - * Getting all available status from backend to list it in status-dropdown in popup window. - */ - getTaskStatus() { - this.backendService.getAllStatus().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allStatus.push(...response.body); - } - }); - } - - /** - * If desired a new arbitrary status (such as "Waiting") can be created, which will be stored in an array. - * The new status is available to all tasks. - * @param status Scrumstatus to store in the database - */ - createTaskStatus(status: ScrumStatus) { - this.backendService.postStatus(status).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allStatus.push(response.body); - } - }); - } - - // A custom status can even be deleted if not used anymore. - // This will remove the status from status-array. - /** - * A custom status can even be deleted if not used anymore. - * This will remove the status from status-array - * @param id the id of the chosen status - */ - deleteStatus(id: number) { - var status = this.allStatus.find((x) => x.id === id); - this.backendService.deleteStatus(status).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - const index = this.allStatus.indexOf(status); - if (index !== -1) { - this.allStatus.splice(index, 1); - } - } - this.task.statusId = null; - }); - } - - /** - * Getting the value of the priority enum to be shown in a dropdown in popup window. - */ - getAllPriorities(): Priority[] { - return Object.values(Priority); - } - - /** - * Shows the before choosen userstory in the userstory-field in the popup window - * @param id reference to the userstory object - */ - getUserstoryTitleById(id: number): string { - if (!id) { - return null; - } - var story = this.userstories.find((x) => x.id === id); - if (!story) { - return null; - } - return story.title; - } - - /** - * Shows the before choosen status in the status-field in the popup window. - * @param id reference to the status object - */ - getStatusTitleById(id: number): string { - if (!id) { - return null; - } - var status = this.allStatus.find((x) => x.id === id); - if (!status) { - return null; - } - return status.title; - } - - /** - * Getting all taskboard users from the backend to show in a dropdown in popup window. - */ - getAllUsers() { - this.backendService.getUsers().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allUser.push(...response.body); - } - }); - } - - /** - * Shows the before assigned user in the author-field in the popup window. - * @param id reference to the author object - */ - getAuthorById(id: number): string { - if (!id) { - return null; - } - var user = this.allUser.find((x) => x.id === id); - if (!user) { - return null; - } - return user.name; - } -} +// Importing necessary components and interfaces. +import { Component, OnInit, Input } from '@angular/core'; +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import { + BackendService, + ScrumTask, + Priority, + ScrumStatus, + ScrumCategory, + ScrumUser, + ScrumProject, + ScrumUserstory +} from '../../../services/backend.service'; +import { Observable } from 'rxjs'; +import { HttpResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-task-form', + templateUrl: './task-form.component.html', + styleUrls: [ './task-form.component.css' ] +}) +export // Class implements the logic for a popup window form to create and modify tasks. +class TaskFormComponent implements OnInit { + @Input() public task: ScrumTask; + public editing: boolean; + public creating: boolean; + public userstoryId: string; + public userstories: any[] = []; + public allStatus: any[] = []; + public status: ScrumStatus = { title: '', description: '' }; + public allUser: any[] = []; + public user: ScrumUser = { name: '' }; + + constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { + this.getUserStories(); + this.getTaskStatus(); + this.getAllUsers(); + } + + /** + * If no task exists a new on will be created. + * In other cases the task exists and gets modifiable. + */ + ngOnInit(): void { + if (this.task === null || this.task === undefined) { + this.task = { title: '' }; + this.editing = false; + this.creating = false; + } else if (this.task.userstoryId) { + this.editing = true; + } else { + this.creating = true; + } + document.getElementById('titleField').focus(); + this.getRelatedStory(); + } + + /** + * A new created task will be saved in the backend (POST). + * If a task already exists, modifying results an update (PUT) to the backend. + */ + onSubmit() { + if (this.editing) { + this.backendService.putTask(this.task).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } else { + this.backendService.postTask(this.task).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + // Copy properties returned by the API + Object.assign(this.task, response.body); + } + }); + } + // Closes the popup window after submitting/canceling. + this.activeModalService.close(this.task); + } + + /** + * Closes the popup form window (by clicking "close button"). + */ + onClose() { + this.activeModalService.dismiss(this.task); + } + + /** + * Getting the userstory which is related to a task. + * The related story will be shown in popup window of a task. + */ + getRelatedStory() { + if (!this.task.userstoryId) { + return null; + } + this.backendService.getUserstory(this.task.userstoryId).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.userstoryId = response.body.title; + } + }); + } + + /** + * Getting all userstories from backend to show in a dropdown in popup window. + */ + getUserStories() { + this.backendService.getUserstories().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.userstories.push(...response.body); + } + }); + } + + /** + * Getting all available status from backend to list it in status-dropdown in popup window. + */ + getTaskStatus() { + this.backendService.getAllStatus().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allStatus.push(...response.body); + } + }); + } + + /** + * If desired a new arbitrary status (such as "Waiting") can be created, which will be stored in an array. + * The new status is available to all tasks. + * @param status Scrumstatus to store in the database + */ + createTaskStatus(status: ScrumStatus) { + this.backendService.postStatus(status).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allStatus.push(response.body); + } + }); + } + + /** + * If desired a new arbitrary user (such as "Testuser") can be created, which will be stored in an array. + * The new user is available to all tasks. + * @param user ScrumUser to store in the database + */ + createUser(user: ScrumUser) { + this.backendService.postUser(user).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allUser.push(response.body); + } + }); +} + + // A custom status can even be deleted if not used anymore. + // This will remove the status from status-array. + /** + * A custom status can even be deleted if not used anymore. + * This will remove the status from status-array + * @param id the id of the chosen status + */ + deleteStatus(id: number) { + var status = this.allStatus.find((x) => x.id === id); + this.backendService.deleteStatus(status).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + const index = this.allStatus.indexOf(status); + if (index !== -1) { + this.allStatus.splice(index, 1); + } + } + this.task.statusId = null; + }); + } + + // A custom user can even be deleted if not used anymore. + // This will remove the user from user-array. + /** + * A custom user can even be deleted if not used anymore. + * This will remove the user from user-array + * @param id the id of the chosen user + */ + deleteUser(id: number) { + var user = this.allUser.find((x) => x.id === id); + this.backendService.deleteUser(user).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + const index = this.allUser.indexOf(user); + if (index !== -1) { + this.allUser.splice(index, 1); + } + } + this.task.assignedtoId = null; + }); +} + + /** + * Getting the value of the priority enum to be shown in a dropdown in popup window. + */ + getAllPriorities(): Priority[] { + return Object.values(Priority); + } + + /** + * Shows the before choosen userstory in the userstory-field in the popup window + * @param id reference to the userstory object + */ + getUserstoryTitleById(id: number): string { + if (!id) { + return null; + } + var story = this.userstories.find((x) => x.id === id); + if (!story) { + return null; + } + return story.title; + } + + /** + * Shows the before choosen status in the status-field in the popup window. + * @param id reference to the status object + */ + getStatusTitleById(id: number): string { + if (!id) { + return null; + } + var status = this.allStatus.find((x) => x.id === id); + if (!status) { + return null; + } + return status.title; + } + + /** + * Getting all taskboard users from the backend to show in a dropdown in popup window. + */ + getAllUsers() { + this.backendService.getUsers().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allUser.push(...response.body); + } + }); + } + + /** + * Shows the before assigned user in the author-field in the popup window. + * @param id reference to the author object + */ + getAuthorById(id: number): string { + if (!id) { + return null; + } + var user = this.allUser.find((x) => x.id === id); + if (!user) { + return null; + } + return user.name; + } +} diff --git a/src/app/components/forms/userstory/userstory-form.component.html b/src/app/components/forms/userstory/userstory-form.component.html index 3c13764..9aa6e7a 100644 --- a/src/app/components/forms/userstory/userstory-form.component.html +++ b/src/app/components/forms/userstory/userstory-form.component.html @@ -1,280 +1,309 @@ - - -
-
-
-
- -
-
-
-

Userstory #{{ userstory.id }} bearbeiten

-

Neue Userstory anlegen

-
-
-
-
-
-
-
- - -
-
- - -
-
-
- -
- - -
-
- - -
-
- - -
-
-
-
-
- - - -
-
-
-
-
-
+ + +
+
+
+
+ +
+
+
+

Userstory #{{ userstory.id }} bearbeiten

+

Neue Userstory anlegen

+
+
+
+
+
+
+
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + + +
+
+
+
+
+
diff --git a/src/app/components/forms/userstory/userstory-form.component.ts b/src/app/components/forms/userstory/userstory-form.component.ts index c7cf153..753895f 100644 --- a/src/app/components/forms/userstory/userstory-form.component.ts +++ b/src/app/components/forms/userstory/userstory-form.component.ts @@ -1,238 +1,275 @@ -// Importing necessary components and interfaces. -import { Component, OnInit, Input } from '@angular/core'; -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; -import { BackendService, ScrumUserstory, Priority, ScrumStatus, ScrumCategory, ScrumUser } from '../../../services/backend.service'; - -@Component({ - selector: 'app-userstory-form', - templateUrl: './userstory-form.component.html', - styleUrls: [ './userstory-form.component.css' ] -}) -export // Class implements the logic for a popup window form to create and modify userstories. -class UserstoryFormComponent implements OnInit { - @Input() public userstory: ScrumUserstory; - public allStatus: any[] = []; - public status: ScrumStatus = { title: '', description: '' }; - public allUser: any[] = []; - public user: ScrumUser = { name: '' }; - public allCategories: any[] = []; - public category: ScrumCategory = { title: '' }; - public editing: boolean; - - constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { - this.getUserstoryStatus(); - this.getAllUsers(); - this.getUserstoryCategory(); - } - - /** - * If no userstory exists a new one will be created. - * In other cases the userstory exists and gets modifiable. - */ - ngOnInit(): void { - if (this.userstory === null || this.userstory === undefined) { - this.userstory = { title: '' }; - this.editing = false; - } else { - this.editing = true; - } - document.getElementById('titleField').focus(); - } - - /** - * A new created userstory will be saved in the backend (POST). - * If a userstory already exists, modifying results an update (PUT) to the backend. - */ - onSubmit() { - if (this.editing) { - this.backendService.putUserstory(this.userstory).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } - }); - } else { - this.backendService.postUserstory(this.userstory).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - // Copy properties returned by the API - Object.assign(this.userstory, response.body); - } - }); - } - // Closes the popup window after submitting/canceling. - this.activeModalService.close(this.userstory); - } - - /** - * Closes the popup form window (by clicking "close button"). - */ - onClose() { - this.activeModalService.dismiss(this.userstory); - } - - /** - * Getting all available status from backend to list it in status-dropdown in popup window. - */ - getUserstoryStatus() { - this.backendService.getAllStatus().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allStatus.push(...response.body); - } - }); - } - - /** - * If desired a new arbitrary status (such as "Waiting") can be created, which will be stored in an array. - * The new status is available to all userstories. - * @param status the status object which will be created - */ - createUserstoryStatus(status: ScrumStatus) { - this.backendService.postStatus(status).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allStatus.push(response.body); - } - }); - } - - /** - * A custom status can even be deleted if not used anymore. - * This will remove the status from status-array - * @param id reference to the deletable status object - */ - deleteStatus(id: number) { - var status = this.allStatus.find((x) => x.id === id); - this.backendService.deleteStatus(status).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - const index = this.allStatus.indexOf(status); - if (index !== -1) { - this.allStatus.splice(index, 1); - } - } - this.userstory.statusId = null; - }); - } - - /** - * Getting the values of the Priority enum to be shown in a dropdown in popup window. - */ - getAllPriorities(): Priority[] { - return Object.values(Priority); - } - - /** - * Shows the before choosen status in the status-field in the popup window. - * @param id reference to the status object - */ - getStatusTitleById(id: number): string { - if (!id) { - return null; - } - var status = this.allStatus.find((x) => x.id === id); - if (!status) { - return null; - } - return status.title; - } - - /** - * Getting all taskboard users from backend to show in a dropdown in popup window. - */ - getAllUsers() { - this.backendService.getUsers().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allUser.push(...response.body); - } - }); - } - - /** - * Shows the before assigned user in the author-field in the popup window. - * @param id reference to the author object - */ - getAuthorById(id: number): string { - if (!id) { - return null; - } - var user = this.allUser.find((x) => x.id === id); - if (!user) { - return null; - } - return user.name; - } - - /** - * Getting all available categories from backend to list it in status-dropdown in popup window. - */ - getUserstoryCategory() { - this.backendService.getCategories().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allCategories.push(...response.body); - } - }); - } - - // If desired a new arbitrary category can be created, which will be stored in an array. - // The new category is available to all userstories. - /** - * If desired a new arbitrary category can be created, which will be stored in an array. - * The new category is available to all userstories. - * @param category the category object which will be created - */ - createUserstoryCategory(category: ScrumCategory) { - this.backendService.postCategory(category).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.allCategories.push(response.body); - } - }); - } - - // A custom category can even be deleted if not used anymore. - // This will remove the category from category-array. - /** - * A custom category can even be deleted if not used anymore. - * This will remove the category from category-array. - * @param id reference to the deletable category - */ - deleteCategory(id: number) { - var category = this.allCategories.find((x) => x.id === id); - this.backendService.deleteCategory(category).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - const index = this.allCategories.indexOf(category); - if (index !== -1) { - this.allCategories.splice(index, 1); - } - } - this.userstory.categoryId = null; - }); - } - - /** - * Shows the before choosen category in the category-field in the popup window. - * @param id reference to the category - */ - getCategoryById(id: number): string { - if (!id) { - return null; - } - var category = this.allCategories.find((x) => x.id === id); - if (!category) { - return null; - } - return category.title; - } -} +// Importing necessary components and interfaces. +import { Component, OnInit, Input } from '@angular/core'; +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; +import { BackendService, ScrumUserstory, Priority, ScrumStatus, ScrumCategory, ScrumUser } from '../../../services/backend.service'; + +@Component({ + selector: 'app-userstory-form', + templateUrl: './userstory-form.component.html', + styleUrls: [ './userstory-form.component.css' ] +}) +export // Class implements the logic for a popup window form to create and modify userstories. +class UserstoryFormComponent implements OnInit { + @Input() public userstory: ScrumUserstory; + public allStatus: any[] = []; + public status: ScrumStatus = { title: '', description: '' }; + public allUser: any[] = []; + public user: ScrumUser = { name: '' }; + public allCategories: any[] = []; + public category: ScrumCategory = { title: '' }; + public editing: boolean; + + constructor(private backendService: BackendService, private activeModalService: NgbActiveModal) { + this.getUserstoryStatus(); + this.getAllUsers(); + this.getUserstoryCategory(); + } + + /** + * If no userstory exists a new one will be created. + * In other cases the userstory exists and gets modifiable. + */ + ngOnInit(): void { + if (this.userstory === null || this.userstory === undefined) { + this.userstory = { title: '' }; + this.editing = false; + } else { + this.editing = true; + } + document.getElementById('titleField').focus(); + } + + /** + * A new created userstory will be saved in the backend (POST). + * If a userstory already exists, modifying results an update (PUT) to the backend. + */ + onSubmit() { + if (this.editing) { + this.backendService.putUserstory(this.userstory).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } + }); + } else { + this.backendService.postUserstory(this.userstory).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + // Copy properties returned by the API + Object.assign(this.userstory, response.body); + } + }); + } + // Closes the popup window after submitting/canceling. + this.activeModalService.close(this.userstory); + } + + /** + * Closes the popup form window (by clicking "close button"). + */ + onClose() { + this.activeModalService.dismiss(this.userstory); + } + + /** + * Getting all available status from backend to list it in status-dropdown in popup window. + */ + getUserstoryStatus() { + this.backendService.getAllStatus().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allStatus.push(...response.body); + } + }); + } + + /** + * If desired a new arbitrary status (such as "Waiting") can be created, which will be stored in an array. + * The new status is available to all userstories. + * @param status the status object which will be created + */ + createUserstoryStatus(status: ScrumStatus) { + this.backendService.postStatus(status).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allStatus.push(response.body); + } + }); + } + + /** + * A custom status can even be deleted if not used anymore. + * This will remove the status from status-array + * @param id reference to the deletable status object + */ + deleteStatus(id: number) { + var status = this.allStatus.find((x) => x.id === id); + this.backendService.deleteStatus(status).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + const index = this.allStatus.indexOf(status); + if (index !== -1) { + this.allStatus.splice(index, 1); + } + } + this.userstory.statusId = null; + }); + } + + /** + * Getting the values of the Priority enum to be shown in a dropdown in popup window. + */ + getAllPriorities(): Priority[] { + return Object.values(Priority); + } + + /** + * Shows the before choosen status in the status-field in the popup window. + * @param id reference to the status object + */ + getStatusTitleById(id: number): string { + if (!id) { + return null; + } + var status = this.allStatus.find((x) => x.id === id); + if (!status) { + return null; + } + return status.title; + } + + /** + * Getting all taskboard users from backend to show in a dropdown in popup window. + */ + getAllUsers() { + this.backendService.getUsers().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allUser.push(...response.body); + } + }); + } + + /** + * Shows the before assigned user in the author-field in the popup window. + * @param id reference to the author object + */ + getAuthorById(id: number): string { + if (!id) { + return null; + } + var user = this.allUser.find((x) => x.id === id); + if (!user) { + return null; + } + return user.name; + } + + /** + * Getting all available categories from backend to list it in status-dropdown in popup window. + */ + getUserstoryCategory() { + this.backendService.getCategories().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allCategories.push(...response.body); + } + }); + } + + // If desired a new arbitrary category can be created, which will be stored in an array. + // The new category is available to all userstories. + /** + * If desired a new arbitrary category can be created, which will be stored in an array. + * The new category is available to all userstories. + * @param category the category object which will be created + */ + createUserstoryCategory(category: ScrumCategory) { + this.backendService.postCategory(category).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allCategories.push(response.body); + } + }); + } + + /** + * If desired a new arbitrary user (such as "Testuser") can be created, which will be stored in an array. + * The new user is available to all userstories. + * @param user ScrumUser to store in the database + */ + createUser(user: ScrumUser) { + this.backendService.postUser(user).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.allUser.push(response.body); + } + }); +} + + // A custom category can even be deleted if not used anymore. + // This will remove the category from category-array. + /** + * A custom category can even be deleted if not used anymore. + * This will remove the category from category-array. + * @param id reference to the deletable category + */ + deleteCategory(id: number) { + var category = this.allCategories.find((x) => x.id === id); + this.backendService.deleteCategory(category).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + const index = this.allCategories.indexOf(category); + if (index !== -1) { + this.allCategories.splice(index, 1); + } + } + this.userstory.categoryId = null; + }); + } + + // A custom user can even be deleted if not used anymore. + // This will remove the user from user-array. + /** + * A custom user can even be deleted if not used anymore. + * This will remove the user from user-array + * @param id the id of the chosen user + */ + deleteUser(id: number) { + var user = this.allUser.find((x) => x.id === id); + this.backendService.deleteUser(user).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + const index = this.allUser.indexOf(user); + if (index !== -1) { + this.allUser.splice(index, 1); + } + } + this.userstory.createdbyId = null; + }); +} + + /** + * Shows the before choosen category in the category-field in the popup window. + * @param id reference to the category + */ + getCategoryById(id: number): string { + if (!id) { + return null; + } + var category = this.allCategories.find((x) => x.id === id); + if (!category) { + return null; + } + return category.title; + } +}