From 90387fb77825d6ee4443c437fbce51e13b706ffd Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Mon, 27 Sep 2021 14:43:40 +0200 Subject: [PATCH 1/7] refactor event manager portal method, send Rest Error back --- .../informatik/ct/controller/RoomController.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java b/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java index 1ca340e6..c5e7d8e5 100644 --- a/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java +++ b/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java @@ -258,10 +258,8 @@ public String eventManagerPortal( val room = roomService.getRoomOrThrow(roomId); val currentRoomVisitorCount = roomVisitService.getVisitorCount(room); val isRoomOvercrowded = room.getMaxCapacity() <= currentRoomVisitorCount; - val redirectURI = URLEncoder.encode("/r/" + roomId + "/event-manager-portal?visitorEmail=" + encodedVisitorEmail, "UTF-8"); - val roomData = new Room.Data(room); - model.addAttribute("roomData", roomData); + model.addAttribute("roomData", new Room.Data(room)); model.addAttribute("currentRoomVisitorCount", currentRoomVisitorCount); model.addAttribute("isRoomOvercrowded", isRoomOvercrowded); model.addAttribute("visitorEmail", visitorEmail); @@ -300,7 +298,7 @@ public String executeRoomReset( return new RestResponse(true); } catch (Exception e) { - throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getMessage()); + return new RestResponse(false, e.getMessage()); } } From 59ede7123a212c8beed5419262b4d8670b1cbf1e Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Mon, 27 Sep 2021 14:44:39 +0200 Subject: [PATCH 2/7] if room reset fails, alert error message --- .../resources/static/veranstaltungsleitenden-portal.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/resources/static/veranstaltungsleitenden-portal.js b/src/main/resources/static/veranstaltungsleitenden-portal.js index cbafcfdb..708d361d 100644 --- a/src/main/resources/static/veranstaltungsleitenden-portal.js +++ b/src/main/resources/static/veranstaltungsleitenden-portal.js @@ -22,11 +22,10 @@ document.getElementById("reset-room").onclick = async () => { if(!csrfToken) throw new Error('csrf token not found') if(!roomPin) throw new Error('roomPin not found') if(confirm("Wollen Sie wirklich den Raum zurücksetzen?")){ - if(await requestRoomReset()) { - location.reload(); - } + if(!await requestRoomReset()) throw new Error('internal server error') + location.reload(); } }catch(err){ - console.err(err) + alert("Beim Zurücksetzen des Raumes ist ein Fehler aufgetreten."); } } From 972682c66b8f0cf9563c879157b4e9dab922841c Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Mon, 27 Sep 2021 15:05:03 +0200 Subject: [PATCH 3/7] changed Rest Response --- .../informatik/ct/controller/RoomController.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java b/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java index c5e7d8e5..d925d917 100644 --- a/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java +++ b/src/main/java/de/hs_mannheim/informatik/ct/controller/RoomController.java @@ -298,22 +298,17 @@ public String executeRoomReset( return new RestResponse(true); } catch (Exception e) { - return new RestResponse(false, e.getMessage()); + return new RestResponse(false); } } public static class RestResponse { - public String message; public boolean success; public RestResponse(boolean success) { this.success = success; } - public RestResponse(boolean success, String message) { - this(success); - this.message = message; - } } @RequestMapping("/roomFull/{roomId}") From 1249fce0e35d181ea5e07b7d4658948783f98b5a Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Mon, 27 Sep 2021 15:05:16 +0200 Subject: [PATCH 4/7] fix broken tests --- .../informatik/ct/end_to_end/RoomControllerTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/de/hs_mannheim/informatik/ct/end_to_end/RoomControllerTest.java b/src/test/java/de/hs_mannheim/informatik/ct/end_to_end/RoomControllerTest.java index 884dedf2..6106f6b1 100644 --- a/src/test/java/de/hs_mannheim/informatik/ct/end_to_end/RoomControllerTest.java +++ b/src/test/java/de/hs_mannheim/informatik/ct/end_to_end/RoomControllerTest.java @@ -293,7 +293,8 @@ public void asyncRoomReset() throws Exception { .contentType(MediaType.APPLICATION_FORM_URLENCODED) .param("roomPin", TEST_ROOM_PIN) ) - .andExpect(status().is(200)); + .andExpect(status().is(200)) + .andExpect(content().json("{\"success\": true}")); } @Test @@ -303,7 +304,8 @@ public void asyncRoomResetWithInvalidPin() throws Exception { .contentType(MediaType.APPLICATION_FORM_URLENCODED) .param("roomPin", TEST_ROOM_PIN_INVALID) ) - .andExpect(status().is(400)); + .andExpect(status().isOk()) + .andExpect(content().json("{\"success\": false}")); } @Test From a1d82af0b7d07e6528fe733ad8af482d3a15b69b Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Thu, 9 Dec 2021 15:57:02 +0100 Subject: [PATCH 5/7] add Wildcard Inheritance to List --- .../ct/persistence/services/ContactTracingService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/hs_mannheim/informatik/ct/persistence/services/ContactTracingService.java b/src/main/java/de/hs_mannheim/informatik/ct/persistence/services/ContactTracingService.java index 7c5de3d6..e2bb5d96 100644 --- a/src/main/java/de/hs_mannheim/informatik/ct/persistence/services/ContactTracingService.java +++ b/src/main/java/de/hs_mannheim/informatik/ct/persistence/services/ContactTracingService.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; +import de.hs_mannheim.informatik.ct.model.Visit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,7 +36,7 @@ public class ContactTracingService { private List> visitServices; @NonNull - public List> getVisitorContacts(@NonNull Visitor visitor) { + public List> getVisitorContacts(@NonNull Visitor visitor) { val contacts = new ArrayList>(); for (val service : visitServices) { contacts.addAll(service.getVisitorContacts(visitor)); From 1817e7221f9295b73709c47f1a0538af2aad67aa Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Thu, 9 Dec 2021 15:57:17 +0100 Subject: [PATCH 6/7] Add style for #alert-message --- src/main/resources/static/main.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/resources/static/main.css b/src/main/resources/static/main.css index bb180d01..cc1a20ed 100644 --- a/src/main/resources/static/main.css +++ b/src/main/resources/static/main.css @@ -369,3 +369,12 @@ footer { color: #22376F; cursor: pointer; } + +#alert-message { + flex-direction: column; + align-items: stretch; + border: 1px solid #000; + padding: 10px 20px; + background: #D4EDDA; + border-radius: 2px; +} \ No newline at end of file From 28b8e0d4e5c7cbc8d1579544d92e0f07d3e0abbf Mon Sep 17 00:00:00 2001 From: "m.stock" <36995969+maxones25@users.noreply.github.com> Date: Thu, 9 Dec 2021 15:57:42 +0100 Subject: [PATCH 7/7] Show alert message after successful room reset --- .../static/veranstaltungsleitenden-portal.js | 20 +++++++++++++++++-- .../rooms/veranstaltungsleitenden-portal.html | 4 +++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/resources/static/veranstaltungsleitenden-portal.js b/src/main/resources/static/veranstaltungsleitenden-portal.js index 708d361d..b42b1f1c 100644 --- a/src/main/resources/static/veranstaltungsleitenden-portal.js +++ b/src/main/resources/static/veranstaltungsleitenden-portal.js @@ -1,6 +1,8 @@ const csrfHeader = document.querySelector("head meta[name='_csrf_header']")?.content const csrfToken = document.querySelector("head meta[name='_csrf']")?.content const roomPin = document.querySelector("head meta[name='room-pin']")?.content +const alertMessage = document.querySelector("#alert-message") +const checkedInAmount = document.querySelector("#checked-in-amount strong") const requestRoomReset = async () => { const formData = new FormData(); @@ -16,14 +18,28 @@ const requestRoomReset = async () => { return success } +const resetCheckedInAmount = () => { + checkedInAmount.innerText = 0 +} + +const showMessage = (message) => { + alertMessage.style.display = "flex" + alertMessage.innerText = message + setTimeout(() => { + alertMessage.style.display = "none" + alertMessage.innerText = "" + }, 3000) +} + document.getElementById("reset-room").onclick = async () => { try{ if(!csrfHeader) throw new Error('csrf header not found') if(!csrfToken) throw new Error('csrf token not found') if(!roomPin) throw new Error('roomPin not found') - if(confirm("Wollen Sie wirklich den Raum zurücksetzen?")){ + if(confirm("Wollen Sie den Raum wirklich zurücksetzen?")){ if(!await requestRoomReset()) throw new Error('internal server error') - location.reload(); + resetCheckedInAmount(); + showMessage("Der Raum wurde erfolgreich zurückgesetzt"); } }catch(err){ alert("Beim Zurücksetzen des Raumes ist ein Fehler aufgetreten."); diff --git a/src/main/resources/templates/rooms/veranstaltungsleitenden-portal.html b/src/main/resources/templates/rooms/veranstaltungsleitenden-portal.html index 4791d76f..94ff3b67 100644 --- a/src/main/resources/templates/rooms/veranstaltungsleitenden-portal.html +++ b/src/main/resources/templates/rooms/veranstaltungsleitenden-portal.html @@ -14,6 +14,8 @@
+ +

Portal für Veranstaltungsleitende

@@ -32,7 +34,7 @@

Raumgröße
eingecheckte Personen
-

Personen

+

Personen