From 43f174d59381904f24c75879e6273fd4ac4074e5 Mon Sep 17 00:00:00 2001
From: Erik Moravec <xmoravec@fi.muni.cz>
Date: Tue, 27 Apr 2021 21:05:49 +0200
Subject: [PATCH] feat: update game score functionality implemented along with
 relevant service functionality and with calculation/update of the game winner
 if some of the teams becomes winning with the new score

---
 .../facades/LeagueManagerFacade.java             |  2 +-
 .../facades/LeagueManagerFacadeImpl.java         | 16 +++++++++++++---
 .../icehockeymanager/services/GameService.java   |  2 ++
 .../services/GameServiceImpl.java                | 14 ++++++++++++++
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java
index f175d8d..c74c1e5 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java
@@ -9,7 +9,7 @@ public interface LeagueManagerFacade {
 
     void dropGame(long gameId);
 
-    void updateGameScore(int homeTeamScore, int awayTeamScore);
+    void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore);
 
     void setGameWinner(long gameId, long teamId);
 
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java
index 5f14502..8944023 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java
@@ -3,7 +3,9 @@ package cz.muni.fi.pa165.icehockeymanager.facades;
 import cz.muni.fi.pa165.icehockeymanager.dto.GameCreateDTO;
 import cz.muni.fi.pa165.icehockeymanager.dto.TeamCreateDTO;
 import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownGameException;
+import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException;
 import cz.muni.fi.pa165.icehockeymanager.model.Game;
+import cz.muni.fi.pa165.icehockeymanager.model.Team;
 import cz.muni.fi.pa165.icehockeymanager.services.BeanMappingService;
 import cz.muni.fi.pa165.icehockeymanager.services.GameService;
 import cz.muni.fi.pa165.icehockeymanager.services.PlayerService;
@@ -42,13 +44,21 @@ public class LeagueManagerFacadeImpl implements LeagueManagerFacade {
     }
 
     @Override
-    public void updateGameScore(int homeTeamScore, int awayTeamScore) {
-
+    public void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore) {
+        Game game = gameService.findGame(gameId).orElseThrow(
+                () -> new UnknownGameException("Game not found")
+        );
+        gameService.updateGameScore(game, homeTeamScore, awayTeamScore);
     }
 
     @Override
     public void setGameWinner(long gameId, long teamId) {
-
+        Game game = gameService.findGame(gameId).orElseThrow(
+                () -> new UnknownGameException("Game not found")
+        );
+        Team team = teamService.getTeam(teamId).orElseThrow(
+                () -> new UnknownTeamException("Team not found")
+        );
     }
 
     @Override
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java
index f0084dd..778986f 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameService.java
@@ -22,4 +22,6 @@ public interface GameService {
     Optional<Game> findGame(long gameId);
 
     void deleteGame(Game game);
+
+    void updateGameScore(Game game, int homeTeamScore, int awayTeamScore);
 }
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java
index 76b56da..680bf07 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/GameServiceImpl.java
@@ -39,4 +39,18 @@ public class GameServiceImpl implements GameService {
     public void deleteGame(Game game) {
         gameDao.delete(game);
     }
+
+    @Override
+    public void updateGameScore(Game game, int homeTeamScore, int awayTeamScore) {
+        game.setHomeTeamScore(homeTeamScore);
+        game.setAwayTeamScore(awayTeamScore);
+        if (homeTeamScore > awayTeamScore) {
+            game.setWinner(game.getHomeTeam());
+        } else if (awayTeamScore > homeTeamScore) {
+            game.setWinner(game.getAwayTeam());
+        } else {
+            game.setWinner(null);
+        }
+        gameDao.update(game);
+    }
 }
-- 
GitLab