Raid Layout page working
This commit is contained in:
@@ -89,6 +89,15 @@ public class ClassGroupController{
|
||||
return classGroupService.getClassGroup(classGroupId, raidGroupId);
|
||||
}
|
||||
|
||||
@GetMapping("/raidLayout/{raidLayoutId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public List<ClassGroup> getClassGroupsByRaidLayoutId(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("raidLayoutId") UUID raidLayoutId){
|
||||
log.info("Getting class groups for raid layout {} for raid group {}", raidLayoutId, raidGroupId);
|
||||
|
||||
|
||||
return classGroupService.getClassGroupsByRaidLayoutId(raidLayoutId);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
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.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.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.RaidLayout;
|
||||
import com.mattrixwv.raidbuilder.entity.RaidLayoutClassGroupXref;
|
||||
import com.mattrixwv.raidbuilder.service.RaidLayoutService;
|
||||
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}/raidLayout")
|
||||
@RequiredArgsConstructor
|
||||
public class RaidLayoutController{
|
||||
private final ObjectMapper mapper;
|
||||
private final RaidLayoutService raidLayoutService;
|
||||
|
||||
|
||||
@GetMapping
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public List<RaidLayout> getRaidLayouts(@PathVariable("raidGroupId") UUID raidGroupId, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting Raid Layouts for Raid Group {} on page {} of size {} with search {}", raidGroupId, page, pageSize, searchTerm);
|
||||
|
||||
|
||||
List<RaidLayout> raidLayouts = searchTerm == null ?
|
||||
raidLayoutService.getRaidLayoutsByRaidGroupId(raidGroupId, page, pageSize) :
|
||||
raidLayoutService.getRaidLayoutsByRaidGroupId(raidGroupId, page, pageSize, searchTerm);
|
||||
|
||||
|
||||
return raidLayouts;
|
||||
}
|
||||
|
||||
@GetMapping("/count")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
|
||||
public ObjectNode getRaidLayoutCount(@PathVariable("raidGroupId") UUID raidGroupId, @RequestParam(name = "searchTerm", required = false) String searchTerm){
|
||||
log.info("Getting Raid Layout Count for Raid Group {} with search {}", raidGroupId, searchTerm);
|
||||
|
||||
|
||||
long count = searchTerm == null ?
|
||||
raidLayoutService.getRaidLayoutCountByRaidGroupId(raidGroupId) :
|
||||
raidLayoutService.getRaidLayoutCountByRaidGroupId(raidGroupId, searchTerm);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("count", count);
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
|
||||
@PostMapping
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode createRaidLayout(@PathVariable("raidGroupId") UUID raidGroupId, @RequestBody ObjectNode bodyNode){
|
||||
log.info("Creating Raid Layout for Raid Group {}", raidGroupId);
|
||||
|
||||
|
||||
RaidLayout raidLayout = mapper.convertValue(bodyNode.get("raidLayout"), RaidLayout.class);
|
||||
raidLayout.setRaidGroupId(raidGroupId);
|
||||
RaidLayoutClassGroupXref[] xrefsArray = mapper.convertValue(bodyNode.get("raidLayoutClassGroupXrefs"), RaidLayoutClassGroupXref[].class);
|
||||
List<RaidLayoutClassGroupXref> xrefs = List.of(xrefsArray);
|
||||
|
||||
raidLayout = raidLayoutService.createRaidLayout(raidLayout, xrefs);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("raidLayoutId", raidLayout.getRaidLayoutId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@PutMapping("/{raidLayoutId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode updateRaidLayout(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("raidLayoutId") UUID raidLayoutId, @RequestBody ObjectNode bodyNode){
|
||||
log.info("Updating Raid Layout {} for Raid Group {}", raidLayoutId, raidGroupId);
|
||||
|
||||
|
||||
RaidLayout raidLayout = mapper.convertValue(bodyNode.get("raidLayout"), RaidLayout.class);
|
||||
raidLayout.setRaidGroupId(raidGroupId);
|
||||
raidLayout.setRaidLayoutId(raidLayoutId);
|
||||
RaidLayoutClassGroupXref[] xrefsArray = mapper.convertValue(bodyNode.get("raidLayoutClassGroupXrefs"), RaidLayoutClassGroupXref[].class);
|
||||
List<RaidLayoutClassGroupXref> xrefs = List.of(xrefsArray);
|
||||
|
||||
raidLayoutService.updateRaidLayout(raidLayout, xrefs);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("raidLayoutId", raidLayout.getRaidLayoutId().toString());
|
||||
returnNode.put("status", "success");
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
|
||||
@DeleteMapping("/{raidLayoutId}")
|
||||
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
|
||||
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
|
||||
public ObjectNode deleteRaidLayout(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("raidLayoutId") UUID raidLayoutId){
|
||||
log.info("Deleting Raid Layout {} for Raid Group {}", raidLayoutId, raidGroupId);
|
||||
|
||||
|
||||
raidLayoutService.deleteRaidLayout(raidLayoutId, raidGroupId);
|
||||
|
||||
ObjectNode returnNode = mapper.createObjectNode();
|
||||
returnNode.put("status", "success");
|
||||
|
||||
|
||||
return returnNode;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user