From 35ad020c842ab6fdb8a6b0c8b2801cc57630f55f Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 27 Apr 2019 19:48:14 +0200 Subject: [PATCH] added leaveTeam and added some comments --- .../bugageocaching/controller/Controller.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 493d66a..5c2d6e6 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -429,12 +429,14 @@ public class Controller { @ResponseBody public ResponseEntity createTeam(@RequestParam String token, @RequestParam String name) { + // verify user ResponseEntity verifyToken = VerificationUtil.verifyToken(token); if (verifyToken.getStatusCodeValue() != 200) { return verifyToken; } + // get user Claims claims = (Claims) verifyToken.getBody(); ResponseEntity getUser = FinderUtil.findUserFromClaim(claims); @@ -458,6 +460,7 @@ public class Controller { return ResponseEntity.status(400).body("You already have a team"); } + // checkt, ob der name bereits vorhanden ist for (Team team : teamRepository.findAll()) { if (team.getName().equals(name)) { return ResponseEntity.status(400).body("The teamname is already taken"); @@ -479,12 +482,14 @@ public class Controller { @ResponseBody public ResponseEntity joinTeam(@RequestParam String token, @RequestParam String teamID) { + // verify user ResponseEntity verifyToken = VerificationUtil.verifyToken(token); if (verifyToken.getStatusCodeValue() != 200) { return verifyToken; } + // get user Claims claims = (Claims) verifyToken.getBody(); ResponseEntity getUser = FinderUtil.findUserFromClaim(claims); @@ -519,16 +524,19 @@ public class Controller { int i = 0; + // zählt teammitglieder for (User_Info userInfo1 : user_infoRepository.findAll()) { if (userInfo1.getTeam().equals(team)) { i++; } } + // wenn maximalanzahl der teammitglieder erreicht... if (i >= 10) { return ResponseEntity.status(400).body("The team already has 10 members"); } + // tritt dem team bei user_info.setTeam(team); user_infoRepository.save(user_info); @@ -536,6 +544,72 @@ public class Controller { return ResponseEntity.status(200).body(team); } + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/leaveTeam") + @ResponseBody + public ResponseEntity leaveTeam(@RequestParam String token) { + + // verify user + ResponseEntity verifyToken = VerificationUtil.verifyToken(token); + + if (verifyToken.getStatusCodeValue() != 200) { + return verifyToken; + } + + //get User + Claims claims = (Claims) verifyToken.getBody(); + + ResponseEntity getUser = FinderUtil.findUserFromClaim(claims); + + if (getUser.getStatusCodeValue() != 200) { + return getUser; + } + + User user = (User) getUser.getBody(); + + //Get User_Info + ResponseEntity getUser_Info = FinderUtil.findUser_InfoByID(String.valueOf(user.getId())); + + if (getUser_Info.getStatusCodeValue() != 200) { + return getUser_Info; + } + + User_Info user_info = (User_Info) getUser_Info.getBody(); + //---------------------- + if (user_info.getTeam() == null) { + return ResponseEntity.status(400).body("You aren´t in any team"); + } + + //Get team + ResponseEntity getTeam = FinderUtil.findTeamById(String.valueOf(user_info.getTeam().getId())); + + if (getTeam.getStatusCodeValue() != 200) { + return getTeam; + } + + Team team = (Team) getTeam.getBody(); + + // verlässt team + user_info.setTeam(null); + + int i = 0; + // zählt teammitglieder + for (User_Info userInfo1 : user_infoRepository.findAll()) { + if (userInfo1.getTeam().equals(team)) { + i++; + } + } + + // löscht team, wenn keine teammitglieder mehr vorhanden + if (i == 0) { + teamRepository.delete(team); + } + + user_infoRepository.save(user_info); + + return ResponseEntity.status(200).body("Ok"); + } + @RequestMapping("/api/hello") public ResponseEntity hello(@RequestParam String name) { return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name));