Files
RaidBuilderAPI/src/main/java/com/mattrixwv/raidbuilder/controller/PersonCharacterController.java
2025-03-08 13:26:59 -05:00

82 lines
3.7 KiB
Java

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.RestController;
import com.mattrixwv.raidbuilder.annotation.AccountAuthorization;
import com.mattrixwv.raidbuilder.annotation.RaidGroupAuthorization;
import com.mattrixwv.raidbuilder.entity.PersonCharacter;
import com.mattrixwv.raidbuilder.service.PersonCharacterService;
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}/person/{personId}/character")
@RequiredArgsConstructor
public class PersonCharacterController{
private final PersonCharacterService personCharacterService;
@GetMapping
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER, RaidGroupPermissionType.RAIDER})
public List<PersonCharacter> getPersonCharactersForPerson(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId){
log.info("Getting person characters for person {}", personId);
return personCharacterService.getByPersonId(personId);
}
@PostMapping
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
public PersonCharacter createPersonCharacter(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId, @RequestBody PersonCharacter personCharacter){
log.info("Creating person character {} for person {}", personCharacter.getCharacterName(), personId);
personCharacter.setPersonId(personId);
personCharacter = personCharacterService.createPersonCharacter(personCharacter);
return personCharacter;
}
@PutMapping("/{characterId}")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
public PersonCharacter updatePersonCharacter(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId, @PathVariable("characterId") UUID characterId, @RequestBody PersonCharacter personCharacter){
log.info("Updating person character {} for person {}", personCharacter.getCharacterName(), personId);
personCharacter.setPersonCharacterId(characterId);
personCharacter.setPersonId(personId);
personCharacter = personCharacterService.updatePersonCharacter(personCharacter);
return personCharacter;
}
@DeleteMapping("/{characterId}")
@AccountAuthorization(permissions = {AccountPermissionType.ADMIN, AccountPermissionType.USER})
@RaidGroupAuthorization(permissions = {RaidGroupPermissionType.ADMIN, RaidGroupPermissionType.LEADER})
public void deletePersonCharacter(@PathVariable("raidGroupId") UUID raidGroupId, @PathVariable("personId") UUID personId, @PathVariable("characterId") UUID characterId){
log.info("Deleting person character {} for person {}", characterId, personId);
personCharacterService.deletePersonCharacter(characterId);
}
}