Person page working

This commit is contained in:
2025-03-10 22:55:26 -04:00
parent 09986bb81d
commit 15036d7e0f
4 changed files with 79 additions and 0 deletions

View File

@@ -36,6 +36,15 @@ public class GameClassController{
private final GameClassService gameClassService; private final GameClassService gameClassService;
@GetMapping("/{gameClassId}")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
public GameClass getGameClass(@PathVariable("gameClassId") UUID gameClassId){
log.info("Getting game class {}", gameClassId);
return gameClassService.getById(gameClassId);
}
@GetMapping("/game/{gameId}") @GetMapping("/game/{gameId}")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER}) @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){ public List<GameClass> getByGameId(@PathVariable("gameId") UUID gameId, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam(name = "searchTerm", required = false) String searchTerm){

View File

@@ -11,8 +11,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; 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.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.AccountAuthorization;
import com.mattrixwv.raidbuilder.annotation.RaidGroupAuthorization; import com.mattrixwv.raidbuilder.annotation.RaidGroupAuthorization;
import com.mattrixwv.raidbuilder.entity.PersonCharacter; import com.mattrixwv.raidbuilder.entity.PersonCharacter;
@@ -29,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
@RequestMapping("/raidGroup/{raidGroupId}/person/{personId}/character") @RequestMapping("/raidGroup/{raidGroupId}/person/{personId}/character")
@RequiredArgsConstructor @RequiredArgsConstructor
public class PersonCharacterController{ public class PersonCharacterController{
private final ObjectMapper mapper;
private final PersonCharacterService personCharacterService; private final PersonCharacterService personCharacterService;
@@ -42,6 +46,48 @@ public class PersonCharacterController{
return personCharacterService.getByPersonId(personId); return personCharacterService.getByPersonId(personId);
} }
@GetMapping("/page")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
public List<PersonCharacter> getCharactersForPersonPaged(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam(name = "searchTerm", required = false) String searchTerm){
log.info("Getting person characters for person {} with page {} of size {} with search term {}", personId, page, pageSize, searchTerm);
List<PersonCharacter> personCharacters;
if(searchTerm == null){
personCharacters = personCharacterService.getByPersonId(personId, page, pageSize);
}
else{
personCharacters = personCharacterService.getByPersonId(personId, page, pageSize, searchTerm);
}
return personCharacters;
}
@GetMapping("/count")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
public ObjectNode getCharactersCountForPerson(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId, @RequestParam(name = "searchTerm", required = false) String searchTerm){
log.info("Getting person characters count for person {} with search term {}", personId, searchTerm);
Long count;
if(searchTerm == null){
count = personCharacterService.getCountByPersonId(personId);
}
else{
count = personCharacterService.getCountByPersonId(personId, searchTerm);
}
ObjectNode returnNode = mapper.createObjectNode();
returnNode.put("status", "success");
returnNode.put("count", count);
return returnNode;
}
@PostMapping @PostMapping
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER}) @AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER}) @RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})

View File

@@ -4,6 +4,7 @@ package com.mattrixwv.raidbuilder.repository.person_character;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import com.mattrixwv.raidbuilder.entity.PersonCharacter; import com.mattrixwv.raidbuilder.entity.PersonCharacter;
@@ -16,4 +17,9 @@ public interface PersonCharacterRepository extends PersonCharacterCustomReposito
public PersonCharacter findByPersonCharacterId(UUID personCharacterId); public PersonCharacter findByPersonCharacterId(UUID personCharacterId);
public List<PersonCharacter> findAllByPersonId(UUID personId); public List<PersonCharacter> findAllByPersonId(UUID personId);
public List<PersonCharacter> findAllByPersonId(UUID personId, PageRequest pageRequest);
public List<PersonCharacter> findAllByPersonIdAndCharacterNameContainingIgnoreCase(UUID personId, String searchTerm, PageRequest pageRequest);
public long countByPersonId(UUID personId);
public long countByPersonIdAndCharacterNameContainingIgnoreCase(UUID personId, String searchTerm);
} }

View File

@@ -4,6 +4,8 @@ package com.mattrixwv.raidbuilder.service;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -47,4 +49,20 @@ public class PersonCharacterService{
public List<PersonCharacter> getByPersonId(UUID personId){ public List<PersonCharacter> getByPersonId(UUID personId){
return personCharacterRepository.findAllByPersonId(personId); return personCharacterRepository.findAllByPersonId(personId);
} }
public List<PersonCharacter> getByPersonId(UUID personId, int page, int pageSize){
return personCharacterRepository.findAllByPersonId(personId, PageRequest.of(page, pageSize, Sort.by("characterName").ascending()));
}
public List<PersonCharacter> getByPersonId(UUID personId, int page, int pageSize, String searchTerm){
return personCharacterRepository.findAllByPersonIdAndCharacterNameContainingIgnoreCase(personId, searchTerm, PageRequest.of(page, pageSize, Sort.by("characterName").ascending()));
}
public long getCountByPersonId(UUID personId){
return personCharacterRepository.countByPersonId(personId);
}
public long getCountByPersonId(UUID personId, String searchTerm){
return personCharacterRepository.countByPersonIdAndCharacterNameContainingIgnoreCase(personId, searchTerm);
}
} }