From e38dc6dfe8dc60848538411e75615c8c7d2a1686 Mon Sep 17 00:00:00 2001
From: Thomas Lenz <Thomas.Lenz@mni.thm.de>
Date: Fri, 9 Mar 2018 19:14:58 +0100
Subject: [PATCH] Implement function to delete rooms

---
 src/app/creator-room/creator-room.component.html |  2 +-
 src/app/creator-room/creator-room.component.ts   |  4 ++--
 src/app/room.service.ts                          | 10 ++++++++++
 src/app/room/room.component.ts                   | 10 +++++++++-
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/app/creator-room/creator-room.component.html b/src/app/creator-room/creator-room.component.html
index 0641b4c87..6bceb686c 100644
--- a/src/app/creator-room/creator-room.component.html
+++ b/src/app/creator-room/creator-room.component.html
@@ -23,7 +23,7 @@
         <button mat-button color="primary" matTooltip="See room comments" routerLink="/creator/room/{{room.id}}/comments">
           Comments
         </button>
-        <button mat-button color="warn" matTooltip="Delete selected room">
+        <button mat-button color="warn" matTooltip="Delete selected room" (click)="delete(room)">
           Delete room
         </button>
         <button mat-button color="primary" matTooltip="Go back to last page" (click)="goBack()">
diff --git a/src/app/creator-room/creator-room.component.ts b/src/app/creator-room/creator-room.component.ts
index ed782a4a2..b0bd7a177 100644
--- a/src/app/creator-room/creator-room.component.ts
+++ b/src/app/creator-room/creator-room.component.ts
@@ -15,8 +15,8 @@ export class CreatorRoomComponent extends RoomComponent implements OnInit {
 
   constructor(protected roomService: RoomService,
               protected route: ActivatedRoute,
-              private location: Location) {
-    super(roomService, route);
+              protected location: Location) {
+    super(roomService, route, location);
   }
 
   ngOnInit() {
diff --git a/src/app/room.service.ts b/src/app/room.service.ts
index 5f4fc2796..503dbd986 100644
--- a/src/app/room.service.ts
+++ b/src/app/room.service.ts
@@ -37,4 +37,14 @@ export class RoomService extends ErrorHandlingService {
     catchError(this.handleError<Room>(`getRoom id=${id}`))
   );
   }
+
+  deleteRoom (room: Room | number): Observable<Room> {
+    const id = typeof room === 'number' ? room : room.id;
+    const url = `${this.roomsUrl}/${id}`;
+
+    return this.http.delete<Room>(url, httpOptions).pipe(
+      tap(_ => ''),
+      catchError(this.handleError<Room>('deleteRoom'))
+    );
+  }
 }
diff --git a/src/app/room/room.component.ts b/src/app/room/room.component.ts
index 3aa4d45a0..22379c707 100644
--- a/src/app/room/room.component.ts
+++ b/src/app/room/room.component.ts
@@ -2,6 +2,8 @@ import { Component, OnInit } from '@angular/core';
 import { Room } from '../room';
 import { RoomService } from '../room.service';
 import { ActivatedRoute } from '@angular/router';
+import { Observable } from 'rxjs/Observable';
+import { Location } from '@angular/common';
 
 @Component({
   selector: 'app-room',
@@ -13,7 +15,8 @@ export class RoomComponent implements OnInit {
   isLoading = true;
 
   constructor(protected roomService: RoomService,
-              protected route: ActivatedRoute) {
+              protected route: ActivatedRoute,
+              protected location: Location) {
   }
 
   ngOnInit() {
@@ -28,4 +31,9 @@ export class RoomComponent implements OnInit {
       this.isLoading = false;
     });
   }
+
+  delete(room: Room): void {
+    this.roomService.deleteRoom(room).subscribe();
+    this.location.back();
+  }
 }
-- 
GitLab