import { Injectable } from '@angular/core'; import { HttpClient, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs'; import { environment } from '../../environments/environment'; @Injectable() export class BackendService { constructor(private httpClient: HttpClient) {} // Tasks public getTasks(): Observable> { const url = `${environment.apiUrl}/tasks`; return this.httpClient.get(url, { observe: 'response' }); } public getTask(id: number): Observable> { const url = `${environment.apiUrl}/tasks/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postTask(task: ScrumTask): Observable> { const url = `${environment.apiUrl}/tasks`; return this.httpClient.post(url, task, { observe: 'response' }); } public putTask(task: ScrumTask): Observable> { const url = `${environment.apiUrl}/tasks/${task.id}`; return this.httpClient.put(url, task, { observe: 'response' }); } public deleteTask(task: ScrumTask): Observable> { const url = `${environment.apiUrl}/tasks/${task.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Userstories public getUserstories(): Observable> { const url = `${environment.apiUrl}/userstories`; return this.httpClient.get(url, { observe: 'response' }); } public getUserstory(id: number): Observable> { const url = `${environment.apiUrl}/userstories/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postUserstory( userstory: ScrumUserstory ): Observable> { const url = `${environment.apiUrl}/userstories`; return this.httpClient.post(url, userstory, { observe: 'response', }); } public putUserstory( userstory: ScrumUserstory ): Observable> { const url = `${environment.apiUrl}/userstories/${userstory.id}`; return this.httpClient.put(url, userstory, { observe: 'response' }); } public deleteUserstory( userstory: ScrumUserstory ): Observable> { const url = `${environment.apiUrl}/userstories/${userstory.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Sprints public getSprints(): Observable> { const url = `${environment.apiUrl}/sprints`; return this.httpClient.get(url, { observe: 'response' }); } public getSprint(id: number): Observable> { const url = `${environment.apiUrl}/sprints/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postSprint( sprint: ScrumSprint ): Observable> { const url = `${environment.apiUrl}/sprints`; return this.httpClient.post(url, sprint, { observe: 'response', }); } public putSprint(sprint: ScrumSprint): Observable> { const url = `${environment.apiUrl}/sprints/${sprint.id}`; return this.httpClient.put(url, sprint, { observe: 'response' }); } public deleteSprint(sprint: ScrumSprint): Observable> { const url = `${environment.apiUrl}/sprints/${sprint.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Categories public getCategories(): Observable> { const url = `${environment.apiUrl}/categories`; return this.httpClient.get(url, { observe: 'response' }); } public getCategory(id: number): Observable> { const url = `${environment.apiUrl}/categories/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postCategory( category: ScrumCategory ): Observable> { const url = `${environment.apiUrl}/categories`; return this.httpClient.post(url, category, { observe: 'response', }); } public putCategory(category: ScrumCategory): Observable> { const url = `${environment.apiUrl}/categories/${category.id}`; return this.httpClient.put(url, category, { observe: 'response' }); } public deleteCategory( category: ScrumCategory ): Observable> { const url = `${environment.apiUrl}/categories/${category.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Status public getAllStatus(): Observable> { const url = `${environment.apiUrl}/status`; return this.httpClient.get(url, { observe: 'response' }); } public getStatus(id: number): Observable> { const url = `${environment.apiUrl}/status/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postStatus( status: ScrumStatus ): Observable> { const url = `${environment.apiUrl}/status`; return this.httpClient.post(url, status, { observe: 'response', }); } public putStatus(status: ScrumStatus): Observable> { const url = `${environment.apiUrl}/status/${status.id}`; return this.httpClient.put(url, status, { observe: 'response' }); } public deleteStatus(status: ScrumStatus): Observable> { const url = `${environment.apiUrl}/status/${status.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Users public getUsers(): Observable> { const url = `${environment.apiUrl}/users`; return this.httpClient.get(url, { observe: 'response' }); } public getUser(id: number): Observable> { const url = `${environment.apiUrl}/users/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postUser(user: ScrumUser): Observable> { const url = `${environment.apiUrl}/users`; return this.httpClient.post(url, user, { observe: 'response' }); } public putUser(user: ScrumUser): Observable> { const url = `${environment.apiUrl}/users/${user.id}`; return this.httpClient.put(url, user, { observe: 'response' }); } public deleteUser(user: ScrumUser): Observable> { const url = `${environment.apiUrl}/users/${user.id}`; return this.httpClient.delete(url, { observe: 'response' }); } // Projects public getProjects(): Observable> { const url = `${environment.apiUrl}/projects`; return this.httpClient.get(url, { observe: 'response' }); } public getProject(id: number): Observable> { const url = `${environment.apiUrl}/projects/${id}`; return this.httpClient.get(url, { observe: 'response' }); } public postProject( project: ScrumProject ): Observable> { const url = `${environment.apiUrl}/projects`; return this.httpClient.post(url, project, { observe: 'response', }); } public putProject(project: ScrumProject): Observable> { const url = `${environment.apiUrl}/projects/${project.id}`; return this.httpClient.put(url, project, { observe: 'response' }); } public deleteProject(project: ScrumProject): Observable> { const url = `${environment.apiUrl}/projects/${project.id}`; return this.httpClient.delete(url, { observe: 'response' }); } } export enum Priority { High = 'high', Medium = 'medium', Low = 'low', } export interface ScrumTask { id?: number; title: string; content?: string; statusid?: number; categoryid?: number; assignedtoid?: number; sprintid?: number; projectid?: number; userstoryid?: number; priority?: Priority; } export interface ScrumUserstory { id?: number; title: string; content?: string; priority?: Priority; statusid?: number; categoryid?: number; sprintid?: number; createdbyid?: number; projectid?: number; } export interface ScrumSprint{ id?: number; title: string; description?: string; startDate: string; endDate: string; projectid?: number; } export interface ScrumCategory { id?: number; title: string; description?: string; color?: string; project?: number; } export interface ScrumStatus { id?: number; title: string; description: string; } export interface ScrumUser { id?: number; name: string; } export interface ScrumProject { id?: number; title: string; isprivate: boolean; }