public NextBatterResult SaveNewGameState([FromBody] BaseballGameStateResult gameState) { var dataCache = new DataCache(); if (gameState.GameStat != null) { var originalState = BaseballService.GetInstance().GetExistingGameState(gameID: gameState.GameID, leagueID: gameState.LeagueID, dataCache: dataCache); GamesService.GetInstance().AddStat(ConvertObjects.ConvertType(gameState.GameStat), originalState); int rbis = 0; foreach (var player in gameState.RunnersScored) { rbis++; GamesService.GetInstance().AddStat(ConvertObjects.ConvertType(new StatRequest() { GameID = gameState.GameID, PlayerID = player.ID, StatTypeID = (int)CalculatedStatTypes.Runs, TeamID = gameState.GameStat.TeamID, Value = 1, GroupID = gameState.GameStat.GroupID, })); } if (rbis > 0) { GamesService.GetInstance().AddStat(ConvertObjects.ConvertType(new StatRequest() { GameID = gameState.GameID, PlayerID = gameState.GameStat.PlayerID, StatTypeID = (int)CalculatedStatTypes.RBI, TeamID = gameState.GameStat.TeamID, Value = rbis, GroupID = gameState.GameStat.GroupID, }), originalState); } } bool manualAdjustment = gameState.GameStat == null; var result = BaseballService.GetInstance().SaveNewGameState(ConvertObjects.ConvertType(gameState), manualAdjustment, dataCache: dataCache); if (gameState.GameStat != null) { //Create new at bat group for player StatsService.GetInstance().CreateNewStatGroup((int)SportsList.Baseball, gameState.GameID, gameState.GameStat.PlayerID, gameState.GameStat.TeamID); } return(ConvertObjects.ConvertType(result)); }
public static BaseballGameState ConvertType(BaseballGameStateResult o) { return(new BaseballGameState() { GameID = o.GameID, Inning = o.Inning, NumberOfOuts = o.NumberOfOuts, PlayerOnFirst = o.PlayerOnFirst != null?ConvertType(o.PlayerOnFirst) : null, PlayerOnSecond = o.PlayerOnSecond != null?ConvertType(o.PlayerOnSecond) : null, PlayerOnThird = o.PlayerOnThird != null?ConvertType(o.PlayerOnThird) : null, RunnersOut = o.RunnersOut?.Select(r => new PlayerBase() { Number = r.Number, ID = r.ID, Name = r.Name }).ToList(), RunnersScored = o.RunnersScored?.Select(r => new PlayerBase() { Number = r.Number, ID = r.ID, Name = r.Name }).ToList(), Team1Player = o.Team1Player != null?ConvertType(o.Team1Player) : null, Team2Player = o.Team2Player != null?ConvertType(o.Team2Player) : null, TopOfInning = o.TopOfInning, NextAtBat = o.NextAtBat }); }