Game Classes tab working
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
package com.mattrixwv.raidbuilder.controller;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.mattrixwv.raidbuilder.annotation.AccountAuthorization;
|
||||
import com.mattrixwv.raidbuilder.annotation.GameAuthorization;
|
||||
import com.mattrixwv.raidbuilder.entity.GameClass;
|
||||
import com.mattrixwv.raidbuilder.service.GameClassService;
|
||||
import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.AccountPermissionType;
|
||||
import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.GamePermissionType;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/gameClass")
|
||||
@RequiredArgsConstructor
|
||||
public class GameClassController{
|
||||
private final ObjectMapper mapper;
|
||||
private final GameClassService gameClassService;
|
||||
|
||||
|
||||
@GetMapping("/game/{gameId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
public List<GameClass> getByGameId(@PathVariable("gameId") UUID gameId, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting game classes for game {} with page {} of size {} with search term {}", gameId, page, pageSize, searchTerm);
|
||||
|
||||
|
||||
List<GameClass> gameClasses;
|
||||
if((searchTerm == null) || (searchTerm.isBlank())){
|
||||
gameClasses = gameClassService.getByGameId(gameId, page, pageSize);
|
||||
}
|
||||
else{
|
||||
gameClasses = gameClassService.getByGameId(gameId, page, pageSize, searchTerm);
|
||||
}
|
||||
|
||||
|
||||
return gameClasses;
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/game/{gameId}/count")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
public ObjectNode getByGameCount(@PathVariable("gameId") UUID gameId, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting game classes count for game {} with search term {}", gameId, searchTerm);
|
||||
|
||||
|
||||
Long gameClassesCount;
|
||||
if((searchTerm == null) || (searchTerm.isBlank())){
|
||||
gameClassesCount = gameClassService.countByGameId(gameId);
|
||||
}
|
||||
else{
|
||||
gameClassesCount = gameClassService.countByGameId(gameId, searchTerm);
|
||||
}
|
||||
|
||||
ObjectNode countNode = mapper.createObjectNode();
|
||||
countNode.put("count", gameClassesCount);
|
||||
countNode.put("status", "success");
|
||||
|
||||
|
||||
return countNode;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/game/{gameId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@GameAuthorization(permissions = {GamePermissionType.ADMIN})
|
||||
public ObjectNode createGameClass(@PathVariable("gameId") UUID gameId, @RequestParam(value = "iconFile", required = false) MultipartFile file, @RequestParam("gameClassName") String gameClassName){
|
||||
log.info("Creating game class {}", gameClassName);
|
||||
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
GameClass gameClass = new GameClass();
|
||||
gameClass.setGameId(gameId);
|
||||
gameClass.setGameClassName(gameClassName);
|
||||
gameClassService.createGameClass(gameClass, file);
|
||||
|
||||
returnNode.put("gameClassId", gameClass.getGameClassId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
log.info("Successfully created game class: {}", gameClass.getGameClassId());
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@PutMapping("/{gameClassId}/game/{gameId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@GameAuthorization(permissions = {GamePermissionType.ADMIN})
|
||||
public ObjectNode updateGameClass(@PathVariable("gameClassId") UUID gameClassId, @PathVariable("gameId") UUID gameId, @RequestParam(value = "iconFile", required = false) MultipartFile file, @RequestParam("gameClassName") String gameClassName, @RequestParam(value = "gameClassIcon", required = false) String gameClassIcon){
|
||||
log.info("Updating game class {}", gameClassName);
|
||||
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
GameClass gameClass = new GameClass();
|
||||
gameClass.setGameClassId(gameClassId);
|
||||
gameClass.setGameId(gameId);
|
||||
gameClass.setGameClassName(gameClassName);
|
||||
gameClass.setGameClassIcon(gameClassIcon);
|
||||
gameClassService.updateGameClass(gameClass, file);
|
||||
|
||||
returnNode.put("gameClassId", gameClass.getGameClassId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
log.info("Successfully updated game class: {}", gameClass.getGameClassId());
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@DeleteMapping("/{gameClassId}/game/{gameId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@GameAuthorization(permissions = {GamePermissionType.ADMIN})
|
||||
public ObjectNode deleteGameClass(@PathVariable("gameClassId") UUID gameClassId, @PathVariable("gameId") UUID gameId){
|
||||
log.info("Deleting game class {}", gameClassId);
|
||||
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
gameClassService.deleteById(gameClassId);
|
||||
returnNode.put("status", "success");
|
||||
|
||||
log.info("Successfully deleted game class: {}", gameClassId);
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import com.mattrixwv.raidbuilder.annotation.AccountAuthorization;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/icons")
|
||||
@@ -46,6 +47,18 @@ public class IconController{
|
||||
byte[] resource = Files.readAllBytes(Path.of(uploadFileDirectory + "/raidGroupIcons/" + raidGroupIconName));
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(resource);
|
||||
}
|
||||
|
||||
@GetMapping("/gameClassIcons/{gameClassIconName}")
|
||||
@AccountAuthorization(permissions = {})
|
||||
public ResponseEntity<byte[]> getGameClassIcons(@PathVariable("gameClassIconName") String gameClassIconName) throws IOException{
|
||||
log.info("Getting game class icon {}", gameClassIconName);
|
||||
|
||||
|
||||
byte[] resource = Files.readAllBytes(Path.of(uploadFileDirectory + "/gameClassIcons/" + gameClassIconName));
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(resource);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user