jpe-controle/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/services/PlayerService.kt
2025-06-02 14:36:54 +02:00

96 lines
3.4 KiB
Kotlin

package fr.teamflash.fencerjudgeback.services
import fr.teamflash.fencerjudgeback.entities.PlayerBean
import fr.teamflash.fencerjudgeback.repositories.PlayerRepository
import fr.teamflash.fencerjudgeback.websocket.controllers.PlayerWebSocketController
import fr.teamflash.fencerjudgeback.websocket.models.PlayerUpdateMessage
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Lazy
import org.springframework.stereotype.Service
@Service
class PlayerService(
@Autowired private val playerRepository: PlayerRepository,
@Lazy private val playerWebSocketController: PlayerWebSocketController? = null
) {
// Obtenir tous les joueurs (public)
fun getAll(): List<PlayerBean> {
println("PlayerService.getAll")
return playerRepository.findAll()
}
// Obtenir un joueur par id (public)
fun getById(id:Long?) : PlayerBean? {
println("PlayerService.getById : $id")
if (id == null) {
return null
}
return playerRepository.findById(id).get()
}
// Obtenir un ou plusieurs joueur(s) par nom (public)
fun getByName(name:String): List<PlayerBean?>? {
println("PlayerService.getByName : $name")
return playerRepository.findAll().filter{ it.name == name }
}
// Obtenir un ou plusieurs joueur(s) par prénom
fun getByFirstName(firstName:String): List<PlayerBean?>? {
println("PlayerService.getByFirstName : $firstName")
return playerRepository.findAll().filter{ it.firstName == firstName }
}
// Obtenir un ou plusieurs joueur(s) par club
fun getByClub(club:String): List<PlayerBean?>? {
println("PlayerService.getByClub : $club")
return playerRepository.findAll().filter{ it.club == club }
}
// Ajouter un joueur (admin)
fun createPlayer(player: PlayerBean) : PlayerBean {
println("PlayerService.createPlayer : $player")
val savedPlayer = playerRepository.save(player)
// Broadcast the new player via WebSocket
playerWebSocketController?.broadcastPlayerUpdate(savedPlayer, PlayerUpdateMessage.UpdateType.PLAYER_CREATE)
return savedPlayer
}
// Modifier un joueur (admin)
fun updatePlayer(id:Long, newPlayer: PlayerBean) : Int {
// Vérifier si le joueur existe à l'id renseigné
if (getById(id) == null) {
println("PlayerService.updatePlayer : Player not found")
return -1
}
val updatedPlayer = newPlayer.copy(id = id)
val savedPlayer = playerRepository.save(updatedPlayer)
// Broadcast the updated player via WebSocket
playerWebSocketController?.broadcastPlayerUpdate(savedPlayer, PlayerUpdateMessage.UpdateType.PLAYER_UPDATE)
return 1
}
// Supprimer un joueur (admin)
fun deletePlayerById(id:Long?): Int {
println("PlayerService.deletePlayer : $id")
val player = getById(id)
if (player == null) {
println("PlayerService.deletePlayer : Player not found")
return -1
}
// Broadcast the player deletion via WebSocket before deleting
playerWebSocketController?.broadcastPlayerUpdate(player, PlayerUpdateMessage.UpdateType.PLAYER_DELETE)
playerRepository.deleteById(id!!)
return 1
}
fun addPlayer(player:PlayerBean) {
playerRepository.save(player)
}
}