Game Classes tab working
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
package com.mattrixwv.raidbuilder.service;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import com.mattrixwv.raidbuilder.entity.GameClass;
|
||||
import com.mattrixwv.raidbuilder.repository.game_class.GameClassRepository;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@RequiredArgsConstructor
|
||||
public class GameClassService{
|
||||
private final GameClassRepository gameClassRepository;
|
||||
//Values
|
||||
@Value("${uploadFileDirectory}")
|
||||
private String uploadFileDirectory;
|
||||
|
||||
|
||||
//Write
|
||||
public GameClass createGameClass(GameClass gameClass, MultipartFile file){
|
||||
if(file != null){
|
||||
String fileName = UUID.randomUUID().toString() + "--" + file.getOriginalFilename();
|
||||
Path filePath = Paths.get(uploadFileDirectory + "/gameClassIcons").resolve(fileName);
|
||||
|
||||
try{
|
||||
file.transferTo(filePath);
|
||||
gameClass.setGameClassIcon(fileName);
|
||||
}
|
||||
catch(Exception error){
|
||||
log.error("Error uploading file: " + error.getMessage(), error);
|
||||
throw new RuntimeException("Error uploading file: " + error.getMessage(), error);
|
||||
}
|
||||
}
|
||||
return gameClassRepository.save(gameClass);
|
||||
}
|
||||
|
||||
public GameClass updateGameClass(GameClass gameClass, MultipartFile file){
|
||||
GameClass existingGameClass = gameClassRepository.findById(gameClass.getGameClassId()).orElse(null);
|
||||
|
||||
//Delete the old file if one exists
|
||||
if((existingGameClass != null) && (existingGameClass.getGameClassIcon() != null) && (gameClass.getGameClassIcon() == null)){
|
||||
log.debug("Deleting old file: {}", existingGameClass.getGameClassIcon());
|
||||
File existingFile = new File(uploadFileDirectory + "/gameClassIcons/" + existingGameClass.getGameClassIcon());
|
||||
if(existingFile.exists()){
|
||||
existingFile.delete();
|
||||
}
|
||||
}
|
||||
|
||||
if(file != null){
|
||||
//Upload the new file
|
||||
String fileName = UUID.randomUUID().toString() + "--" + file.getOriginalFilename();
|
||||
Path filePath = Paths.get(uploadFileDirectory + "/gameClassIcons").resolve(fileName);
|
||||
try{
|
||||
file.transferTo(filePath);
|
||||
gameClass.setGameClassIcon(fileName);
|
||||
}
|
||||
catch(Exception error){
|
||||
log.error("Error uploading file: " + error.getMessage(), error);
|
||||
throw new RuntimeException("Error uploading file: " + error.getMessage(), error);
|
||||
}
|
||||
}
|
||||
|
||||
return gameClassRepository.save(gameClass);
|
||||
}
|
||||
|
||||
public void deleteById(UUID gameClassId){
|
||||
GameClass gameClass = gameClassRepository.findById(gameClassId).orElse(null);
|
||||
if(gameClass != null){
|
||||
if(gameClass.getGameClassIcon() != null){
|
||||
File existingFile = new File(uploadFileDirectory + "/gameClassIcons/" + gameClass.getGameClassIcon());
|
||||
if(existingFile.exists()){
|
||||
existingFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gameClassRepository.deleteById(gameClassId);
|
||||
}
|
||||
|
||||
public void deleteByGameId(UUID gameId){
|
||||
List<GameClass> gameClasses = gameClassRepository.findAllByGameId(gameId);
|
||||
for(GameClass gameClass : gameClasses){
|
||||
if(gameClass.getGameClassIcon() != null){
|
||||
File existingFile = new File(uploadFileDirectory + "/gameClassIcons/" + gameClass.getGameClassIcon());
|
||||
if(existingFile.exists()){
|
||||
existingFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gameClassRepository.deleteByGameId(gameId);
|
||||
}
|
||||
|
||||
|
||||
//Read
|
||||
public List<GameClass> getByGameId(UUID gameId, int page, int pageSize){
|
||||
return gameClassRepository.findAllByGameId(gameId, PageRequest.of(page, pageSize, Sort.by("gameClassName").ascending()));
|
||||
}
|
||||
|
||||
public List<GameClass> getByGameId(UUID gameId, int page, int pageSize, String searchTerm){
|
||||
return gameClassRepository.findAllByGameIdAndGameClassNameContainingIgnoreCase(gameId, searchTerm, PageRequest.of(page, pageSize, Sort.by("gameClassName").ascending()));
|
||||
}
|
||||
|
||||
public long countByGameId(UUID gameId){
|
||||
return gameClassRepository.countByGameId(gameId);
|
||||
}
|
||||
|
||||
public long countByGameId(UUID gameId, String searchTerm){
|
||||
return gameClassRepository.countByGameIdAndGameClassNameContainingIgnoreCase(gameId, searchTerm);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user