import {Task} from 'app/workplace/models/task'; import {Observable} from 'rxjs/Observable'; import {HttpClient} from '@angular/common/http'; import {Injectable} from '@angular/core'; import {environment} from 'app/../environments/environment'; import {TaskResource} from 'app/workplace/models/task-resource'; import {Subject} from 'rxjs/Subject'; @Injectable() export class TaskService { url = `${environment.taskanaRestUrl}/v1/tasks`; taskChangedSource = new Subject(); taskChangedStream = this.taskChangedSource.asObservable(); taskDeletedSource = new Subject(); taskDeletedStream = this.taskDeletedSource.asObservable(); publishUpdatedTask(task: Task) { this.taskChangedSource.next(task); } publishDeletedTask(task: Task) { this.taskDeletedSource.next(task); } constructor(private httpClient: HttpClient) { } findTasksWithWorkbasket(basketId: string): Observable { return this.httpClient.get(`${this.url}?workbasket-id=${basketId}`); } getTask(id: string): Observable { return this.httpClient.get(`${this.url}/${id}`); } completeTask(id: string): Observable { return this.httpClient.post(`${this.url}/${id}/complete`, ''); } claimTask(id: string): Observable { return this.httpClient.post(`${this.url}/${id}/claim`, 'test'); } transferTask(taskId: string, workbasketId: string): Observable { return this.httpClient.post(`${this.url}/${taskId}/transfer/${workbasketId}`, ''); } updateTask(task: Task): Observable { return this.httpClient.put(`${this.url}/${task.taskId}`, task); } deleteTask(task: Task): Observable { return this.httpClient.delete(`${this.url}/${task.taskId}`); } }