function calculateTotalScore($playerID, $gameID, $teamID)
{
    $game = new \bowling\game();
    $conn = connectToDatabase();
    $getAllFrames = "SELECT Frame_Number, Roll_One_ID, Roll_Two_ID, Roll_Three_ID From Frame where Team_ID = {$teamID} and Game_ID = {$gameID} and Frame.Player_ID = {$playerID}";
    $resultOfPlayers = $conn->query($getAllFrames);
    if ($resultOfPlayers) {
        while ($rowOfPlayers = $resultOfPlayers->fetch_assoc()) {
            if ($rowOfPlayers['Frame_Number'] == 10) {
                if (isset($rowOfPlayers['Roll_Three_ID'])) {
                    $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Three_ID']));
                } else {
                    if (isset($rowOfPlayers['Roll_Two_ID'])) {
                        $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']));
                    } else {
                        $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']));
                    }
                }
            } else {
                if (isset($rowOfPlayers['Roll_Two_ID'])) {
                    $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']));
                } else {
                    $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']));
                }
            }
        }
    }
    return $game;
}
function calculateAverageScoreFor($gameID, $teamID)
{
    $sql = "SELECT group_concat(DISTINCT player_id) as 'ids' from Frame where Team_ID = {$teamID} and Game_ID = {$gameID}";
    $conn = connectToDatabase();
    $result = $conn->query($sql);
    $totalScore = 0;
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $allPlayers = explode(',', $row['ids']);
            foreach ($allPlayers as $player) {
                $game = new \bowling\game();
                $getAllFrames = "SELECT Frame_Number, Roll_One_ID, Roll_Two_ID, Roll_Three_ID From Frame where Team_ID = {$teamID} and Game_ID = {$gameID} and Frame.Player_ID = {$player}";
                $resultOfPlayers = $conn->query($getAllFrames);
                if ($resultOfPlayers) {
                    while ($rowOfPlayers = $resultOfPlayers->fetch_assoc()) {
                        if ($rowOfPlayers['Frame_Number'] == 10) {
                            if (isset($rowOfPlayers['Roll_Three_ID'])) {
                                $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Three_ID']));
                            } else {
                                if (isset($rowOfPlayers['Roll_Two_ID'])) {
                                    $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']));
                                } else {
                                    $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']));
                                }
                            }
                        } else {
                            if (isset($rowOfPlayers['Roll_Two_ID'])) {
                                $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']), getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_Two_ID']));
                            } else {
                                $game->frame(getIntegerNumberOfPinsHitForRollID($rowOfPlayers['Roll_One_ID']));
                            }
                        }
                    }
                    $totalScore += $game->score();
                }
            }
        }
    } else {
        return 0;
    }
    return round($totalScore / count($allPlayers), 3);
}
 /** @test */
 public function testCompleteWithThreeRollsOnTenthFrame()
 {
     $game = new \bowling\game();
     $game->frame(9, 0);
     $game->frame(3, 7);
     $game->frame(6, 1);
     $game->frame(3, 7);
     $game->frame(8, 1);
     $game->frame(5, 5);
     $game->frame(0, 10);
     $game->frame(8, 0);
     $game->frame(7, 3);
     $game->frame(8, 2, 8);
     $this->assertTrue($game->score() == 131);
 }