diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index ecdc60a..ff0bd00 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -1118,7 +1118,7 @@ public class Controller { return ResponseEntity.status(200).body(new Gson().toJson(poi)); } - @ApiOperation(value = "Returns the Team of a user") + @ApiOperation(value = "Resets the rankinglist") @ApiResponses(value = { @ApiResponse(code = 404, message = "Database error"), @ApiResponse(code = 401, message = "JWT Token expired"), @@ -1172,6 +1172,74 @@ public class Controller { } } + @ApiOperation(value = "Deletes the bearbeitet entry from a User from a Cache") + @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/deleteCacheForUser", method = RequestMethod.DELETE, produces = "application/json") + public ResponseEntity deleteCacheForUser(@RequestParam String token, @RequestParam String cacheID) { + + logger.warn("API CALL: /api/deleteCacheForUser"); + // 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 Cache + ResponseEntity getCache = FinderUtil.findCacheById(cacheID); + + if (getCache.getStatusCodeValue() != 200) { + return getCache; + } + + Cache cache = (Cache) getCache.getBody(); + + //Get Bearbeitet entry + ResponseEntity getBearbeitet = FinderUtil.findBearbeitetByUserAndCache(user, cache); + + if (getBearbeitet.getStatusCodeValue() != 200) { + return getBearbeitet; + } + + Bearbeitet bearbeitet = (Bearbeitet) getBearbeitet.getBody(); + + //Cache already finished + if (bearbeitet.getCacheAccesDefinition().getId() == 1) { + + int rankingPoints = cache.getRankingPoints(); + + //Get User_Info + User_Info user_info = user_infoRepository.findUser_InfoByUser(user); + + //Subtract RankingPoints + user_info.setRankingPointsSum(user_info.getRankingPointsSum() - rankingPoints); + + user_infoRepository.save(user_info); + } + + bearbeitetRepository.delete(bearbeitet); + + return ResponseEntity.status(200).body("Cache for User " + user.getEmail() + " for cache " + cache.getName() + " reseted"); + + } + @ApiOperation(value = "Test method (Changes its purpose often)") @ApiResponses(value = { @ApiResponse(code = 404, message = "Database error"), @@ -1184,6 +1252,7 @@ public class Controller { return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name)); } + }