Merge branch 'develop' into frontend/kathy

This commit is contained in:
Katharina Will 2019-05-23 12:53:33 +02:00
commit c234ddeb5d
2 changed files with 156 additions and 4 deletions

View File

@ -15,6 +15,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -381,7 +382,7 @@ public class Controller {
@CrossOrigin(origins = "*", allowedHeaders = "*") // only for dev purpose @CrossOrigin(origins = "*", allowedHeaders = "*") // only for dev purpose
@RequestMapping(value = "/api/getRankingList", method = RequestMethod.GET, produces = "application/json") @RequestMapping(value = "/api/getRankingList", method = RequestMethod.GET, produces = "application/json")
@ResponseBody @ResponseBody
public ResponseEntity getRankingList() { public ResponseEntity getRankingList(@RequestParam(value = "token", defaultValue = "null") String token) {
logger.warn("API CALL: /api/getRankingList"); logger.warn("API CALL: /api/getRankingList");
logger.debug("/api/getRankingList: PARAMETERS: -"); logger.debug("/api/getRankingList: PARAMETERS: -");
@ -397,6 +398,34 @@ public class Controller {
} }
logger.debug("/api/getRankingList Converted Objects to RankingListHelper"); logger.debug("/api/getRankingList Converted Objects to RankingListHelper");
logger.debug("/api/getRankingList RankingList: " + new GsonBuilder().setPrettyPrinting().create().toJson(sendBackUsers)); logger.debug("/api/getRankingList RankingList: " + new GsonBuilder().setPrettyPrinting().create().toJson(sendBackUsers));
if(!token.equals("null")) {
// 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();
ResponseEntity singlePlace = getRankingPlace(user.getEmail());
if(singlePlace.getStatusCodeValue() == 200){
RankingListHelper rankingListHelper = new RankingListHelper(user.getEmail(), (Integer) singlePlace.getBody());
sendBackUsers.add(rankingListHelper);
}
}
return ResponseEntity.status(200).body(new Gson().toJson(sendBackUsers)); return ResponseEntity.status(200).body(new Gson().toJson(sendBackUsers));
} }
@ -1117,6 +1146,128 @@ public class Controller {
return ResponseEntity.status(200).body(new Gson().toJson(poi)); 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"),
@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)") @ApiOperation(value = "Test method (Changes its purpose often)")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse(code = 404, message = "Database error"), @ApiResponse(code = 404, message = "Database error"),
@ -1129,6 +1280,7 @@ public class Controller {
return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name)); return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name));
} }
} }

View File

@ -27,8 +27,8 @@ public interface UserRepository extends CrudRepository<User, Integer> {
" SELECT DISTINCT u.Email AS Name,\n" + " SELECT DISTINCT u.Email AS Name,\n" +
" ui.ranking_points_sum AS Ranglistenpunkte\n" + " ui.ranking_points_sum AS Ranglistenpunkte\n" +
" FROM user u,\n" + " FROM user u,\n" +
" buga19geocaching.user_info ui,\n" + " user_info ui,\n" +
" buga19geocaching.user_roles ur\n" + " user_roles ur\n" +
" WHERE u.id = ui.user_id\n" + " WHERE u.id = ui.user_id\n" +
" AND u.id = ur.user_id\n" + " AND u.id = ur.user_id\n" +
" order by ranking_points_sum DESC) as INR) as RN\n" + " order by ranking_points_sum DESC) as INR) as RN\n" +
@ -45,7 +45,7 @@ public interface UserRepository extends CrudRepository<User, Integer> {
" AND t.id = ui.team_id\n" + " AND t.id = ui.team_id\n" +
" AND ui.team_id IS NOT NULL\n" + " AND ui.team_id IS NOT NULL\n" +
"GROUP BY teamname\n" + "GROUP BY teamname\n" +
"ORDER by ranking_points_sum DESC\n" + "ORDER by Ranglistenpunkte DESC\n" +
"LIMIT 10;", nativeQuery = true) "LIMIT 10;", nativeQuery = true)
List<Object[]> getTeamRankingList(); List<Object[]> getTeamRankingList();