RatingService.java
package com.codecool.bytebattlers.service;
import com.codecool.bytebattlers.controller.dto.RatingDto;
import com.codecool.bytebattlers.mapper.RatingMapper;
import com.codecool.bytebattlers.model.AppUser;
import com.codecool.bytebattlers.model.BoardGame;
import com.codecool.bytebattlers.model.Rating;
import com.codecool.bytebattlers.repository.AppUserRepository;
import com.codecool.bytebattlers.repository.BoardGameRepository;
import com.codecool.bytebattlers.repository.RatingRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public class RatingService {
private final RatingMapper ratingMapper;
private final RatingRepository ratingRepository;
private final BoardGameRepository boardGameRepository;
private final AppUserRepository appUserRepository;
@Autowired
public RatingService(RatingMapper ratingMapper, RatingRepository ratingRepository, BoardGameRepository boardGameRepository, AppUserRepository appUserRepository) {
this.ratingMapper = ratingMapper;
this.ratingRepository = ratingRepository;
this.boardGameRepository = boardGameRepository;
this.appUserRepository = appUserRepository;
}
public List<RatingDto> findAll() {
return ratingRepository.findAll().stream().map(ratingMapper::toDto).toList();
}
public RatingDto save(RatingDto dto) {
BoardGame boardGame = boardGameRepository.findBoardGameByPublicID(dto.boardGamePublicID());
AppUser appUser = appUserRepository.findAppUsersByPublicID(dto.appUserPublicID());
Rating rating = ratingMapper.toEntity(dto);
rating.setAppUser(appUser);
rating.setBoardGame(boardGame);
ratingRepository.save(rating);
return ratingMapper.toDto(rating);
}
public void delete(Rating entity) {
ratingRepository.delete(entity);
}
public List<Rating> findAllRatingsByBoardGame_Id(UUID boardGameId) {
return ratingRepository.findAllByBoardGame_PublicID(boardGameId);
}
public Rating checkIfRatingExist(UUID appUserPublicID, UUID boardGamePublicID) {
BoardGame boardGame = boardGameRepository.findBoardGameByPublicID(boardGamePublicID);
AppUser appUser = appUserRepository.findAppUsersByPublicID(appUserPublicID);
return ratingRepository.findByAppUserAndAndBoardGame(appUser, boardGame);
}
}