Class Groups tab working
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
package com.mattrixwv.raidbuilder.controller;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
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.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.mattrixwv.raidbuilder.annotation.AccountAuthorization;
|
||||
import com.mattrixwv.raidbuilder.annotation.RaidGroupAuthorization;
|
||||
import com.mattrixwv.raidbuilder.entity.ClassGroup;
|
||||
import com.mattrixwv.raidbuilder.entity.ClassGroupGameClassXref;
|
||||
import com.mattrixwv.raidbuilder.service.ClassGroupService;
|
||||
import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.AccountPermissionType;
|
||||
import com.mattrixwv.raidbuilder.util.DatabaseTypeUtil.RaidGroupPermissionType;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/raidGroup/{raidGroupId}/classGroup")
|
||||
@RequiredArgsConstructor
|
||||
public class ClassGroupController{
|
||||
private final ObjectMapper mapper = new ObjectMapper();
|
||||
private final ClassGroupService classGroupService;
|
||||
|
||||
|
||||
@GetMapping
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public List<ClassGroup> getClassGroupByRaidGroupId(@PathVariable("raidGroupId") UUID raidGroupId, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting class groups for raid group {} page {} of size {} with search {}", raidGroupId, page, pageSize, searchTerm);
|
||||
|
||||
|
||||
List<ClassGroup> classGroups;
|
||||
if(searchTerm == null){
|
||||
classGroups = classGroupService.getClassGroupsByRaidGroupId(raidGroupId, page, pageSize);
|
||||
}
|
||||
else{
|
||||
classGroups = classGroupService.getClassGroupsByRaidGroupIdAndSearchTerm(raidGroupId, page, pageSize, searchTerm);
|
||||
}
|
||||
|
||||
return classGroups;
|
||||
}
|
||||
|
||||
@GetMapping("/count")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public ObjectNode getClassGroupCountByRaidGroupId(@PathVariable("raidGroupId") UUID raidGroupId, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting class group count for raid group {} with search {}", raidGroupId, searchTerm);
|
||||
|
||||
|
||||
Long count;
|
||||
if(searchTerm == null){
|
||||
count = classGroupService.getClassGroupCountByRaidGroupId(raidGroupId);
|
||||
}
|
||||
else{
|
||||
count = classGroupService.getClassGroupCountByRaidGroupId(raidGroupId, searchTerm);
|
||||
}
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("count", count);
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@GetMapping("/{classGroupId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public ClassGroup getClassGroup(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("classGroupId") UUID classGroupId){
|
||||
log.info("Getting class group {} for raid group {}", classGroupId, raidGroupId);
|
||||
|
||||
|
||||
return classGroupService.getClassGroup(classGroupId, raidGroupId);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode createClassGroup(@PathVariable("raidGroupId") UUID raidGroupId, @RequestBody ObjectNode bodyNode) throws JsonProcessingException{
|
||||
log.info("Creating class group for raid group {}", raidGroupId);
|
||||
|
||||
|
||||
ClassGroup classGroup = mapper.treeToValue(bodyNode.get("classGroup"), ClassGroup.class);
|
||||
UUID[] gameClassIds = mapper.treeToValue(bodyNode.get("gameClassIds"), UUID[].class);
|
||||
|
||||
List<ClassGroupGameClassXref> xrefs = new ArrayList<>(gameClassIds.length);
|
||||
for(UUID gameClassId : gameClassIds){
|
||||
ClassGroupGameClassXref xref = new ClassGroupGameClassXref();
|
||||
xref.setGameClassId(gameClassId);
|
||||
xrefs.add(xref);
|
||||
}
|
||||
classGroup = classGroupService.createClassGroup(classGroup, xrefs);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("classGroupId", classGroup.getClassGroupId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@PutMapping("/{classGroupId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode updateClassGroup(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("classGroupId") UUID classGroupId, @RequestBody ObjectNode bodyNode) throws JsonProcessingException{
|
||||
log.info("Updating class group {} for raid group {}", classGroupId, raidGroupId);
|
||||
|
||||
|
||||
ClassGroup classGroup = mapper.treeToValue(bodyNode.get("classGroup"), ClassGroup.class);
|
||||
UUID[] gameClassIds = mapper.treeToValue(bodyNode.get("gameClassIds"), UUID[].class);
|
||||
|
||||
List<ClassGroupGameClassXref> xrefs = new ArrayList<>(gameClassIds.length);
|
||||
for(UUID gameClassId : gameClassIds){
|
||||
ClassGroupGameClassXref xref = new ClassGroupGameClassXref();
|
||||
xref.setClassGroupId(classGroup.getClassGroupId());
|
||||
xref.setGameClassId(gameClassId);
|
||||
xrefs.add(xref);
|
||||
}
|
||||
classGroupService.updateClassGroup(classGroup, xrefs);
|
||||
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("classGroupId", classGroup.getClassGroupId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@DeleteMapping("/{classGroupId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode deleteClassGroup(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("classGroupId") UUID classGroupId){
|
||||
log.info("Deleting class group {} for raid group {}", classGroupId, raidGroupId);
|
||||
|
||||
|
||||
classGroupService.deleteClassGroup(classGroupId, raidGroupId);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
}
|
||||
@@ -77,6 +77,15 @@ public class GameClassController{
|
||||
return countNode;
|
||||
}
|
||||
|
||||
@GetMapping("/classGroup/{classGroupId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
public List<GameClass> getByClassGroupId(@PathVariable("classGroupId") UUID classGroupId){
|
||||
log.info("Getting game classes for class group {}", classGroupId);
|
||||
|
||||
|
||||
return gameClassService.getByClassGroupId(classGroupId);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/game/{gameId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
|
||||
Reference in New Issue
Block a user