diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index bcef187..b014688 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -15,6 +15,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -1117,6 +1118,60 @@ public class Controller { return ResponseEntity.status(200).body(new Gson().toJson(poi)); } + @ApiOperation(value = "Resets the rankinglist") + @ApiResponses(value = { + @ApiResponse(code = 404, message = "Database error"), + @ApiResponse(code = 401, message = "JWT Token expired"), + @ApiResponse(code = 400, message = "Something went wrong at verification") + }) + @CrossOrigin(origins = "*", allowedHeaders = "*") // only for dev purpose + @RequestMapping(value = "/api/resetRankingList", method = RequestMethod.PUT, produces = "application/json") + public ResponseEntity resetRankingList(@RequestParam String token) { + logger.warn("API CALL: /api/resetRankingList"); + + // 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(); + + logger.debug("/api/resetRankingList: " + "User verificated: " + user.getEmail()); + //---------------------- + boolean isAdmin = false; + for (Role role : user.getRoles()) { + if (role.getId() == 7) { + isAdmin = true; + } + } + + if (isAdmin) { + for (User_Info user_info : user_infoRepository.findAll()) { + user_info.setRankingPointsSum(0); + user_infoRepository.save(user_info); + } + for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) { + if (bearbeitet.getCacheAccesDefinition().getId() == 1) { + bearbeitetRepository.delete(bearbeitet); + } + } + return ResponseEntity.status(200).body(HttpStatus.OK); + } else { + return ResponseEntity.status(400).body("Der Benutzer ist kein Admin und kann deshalb die Rangliste nicht zurücksetzen."); + } + } + @ApiOperation(value = "Deletes the bearbeitet entry from a User from a Cache") @ApiResponses(value = { @ApiResponse(code = 404, message = "Database error"), @@ -1125,7 +1180,7 @@ public class Controller { }) @CrossOrigin(origins = "*", allowedHeaders = "*") // only for dev purpose @RequestMapping(value = "/api/deleteCacheForUser", method = RequestMethod.DELETE, produces = "application/json") - public ResponseEntity deleteCacheForUser(@RequestParam String token, @RequestParam String cacheID){ + public ResponseEntity deleteCacheForUser(@RequestParam String token, @RequestParam String cacheID) { logger.warn("API CALL: /api/deleteCacheForUser"); // verify user @@ -1159,14 +1214,14 @@ public class Controller { //Get Bearbeitet entry ResponseEntity getBearbeitet = FinderUtil.findBearbeitetByUserAndCache(user, cache); - if(getBearbeitet.getStatusCodeValue() != 200){ + if (getBearbeitet.getStatusCodeValue() != 200) { return getBearbeitet; } Bearbeitet bearbeitet = (Bearbeitet) getBearbeitet.getBody(); //Cache already finished - if(bearbeitet.getCacheAccesDefinition().getId() == 1){ + if (bearbeitet.getCacheAccesDefinition().getId() == 1) { int rankingPoints = cache.getRankingPoints(); @@ -1181,7 +1236,7 @@ public class Controller { bearbeitetRepository.delete(bearbeitet); - return ResponseEntity.status(200).body("Cache for User " + user.getEmail() + " for cache " + cache.getName() + " reseted"); + return ResponseEntity.status(200).body("Cache for User " + user.getEmail() + " for cache " + cache.getName() + " reseted"); } @@ -1198,7 +1253,6 @@ public class Controller { } - }