From cfe56d175c7fe029a2f94bc1d7fd8896d8be431e Mon Sep 17 00:00:00 2001 From: Maximilian Leopold Date: Thu, 23 May 2019 12:06:03 +0200 Subject: [PATCH] Added Method to reset Cache for certain user --- .../bugageocaching/controller/Controller.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 6797a90..bcef187 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -1117,6 +1117,74 @@ public class Controller { return ResponseEntity.status(200).body(new Gson().toJson(poi)); } + @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"), @@ -1129,6 +1197,8 @@ public class Controller { return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name)); } + + }