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 BaseballGameStateResult AddStat([FromBody] StatRequest statRequest) { var dataCache = new DataCache(); var gameStat = ConvertObjects.ConvertType(statRequest); AtBatStates gameStates = null; if (statRequest.IsBaseball) { gameStates = BaseballService.GetInstance().GetGameStates(gameStat, statRequest.IsLatestGroup, dataCache); } NextBatterResult nextBatter = null; bool dataSaved = false; if (gameStates == null || (!gameStates.NewState.PotentialAdjustment && !gameStates.NewState.InningChanged)) { dataSaved = true; GamesService.GetInstance().AddStat(gameStat, gameStates?.OriginalState); if (statRequest.IsBaseball && gameStates.NewState.ChangeState) { nextBatter = ConvertObjects.ConvertType(BaseballService.GetInstance().SaveNewGameState(gameStates.NewState, false, dataCache: dataCache)); //Create new at bat group for player StatsService.GetInstance().CreateNewStatGroup((int)SportsList.Baseball, gameStat.GameID, gameStat.PlayerID, gameStat.TeamID); } } if (statRequest.IsBaseball) { var gameStateResult = ConvertObjects.ConvertType(gameStates.NewState); gameStateResult.GameStat = statRequest; gameStateResult.NextBatter = nextBatter; gameStateResult.DataSaved = dataSaved; gameStateResult.IsStatsPage = true; return(gameStateResult); } else { return(new BaseballGameStateResult() { DataSaved = true }); } }
private GameResult GetGameResult(int leagueID, int gameID) { try { var dataCache = new DataCache(); var game = GamesService.GetInstance().GetGame(gameID, dataCache: dataCache); var teams = new List <int>() { game.Team1ID, game.Team2ID }; var allTeams = TeamsService.GetInstance().GetTeams(leagueID: leagueID, validTeams: teams, dataCache: dataCache); var players = PlayersService.GetInstance().GetPlayers(gameID: gameID, leagueID: leagueID, dataCache: dataCache); var statTypes = GamesService.GetInstance().GetStatTypes(game.SportID, dataCache: dataCache).OrderBy(s => s.GridDisplayOrder); var gameState = BaseballService.GetInstance().GetExistingGameState(gameID, leagueID, dataCache: dataCache); int?playerAtBat = gameState.TopOfInning ? gameState.Team1Player?.ID : gameState.Team2Player?.ID; var gameResult = new GameResult() { ID = game.ID, GameDate = game.GameDate, StatTypes = statTypes.Select(s => ConvertObjects.ConvertType(s)).ToList(), QuickStatTypes = statTypes .Where(st => st.QuickButtonOrder > 0) .Select(s => ConvertObjects.ConvertType(s)) .OrderBy(s => s.QuickButtonOrder) .ToList(), Team1ID = game.Team1ID, Team1Score = game.Team1Score, Team1Name = game.Team1Name, Team2ID = game.Team2ID, Team2Score = game.Team2Score, Team2Name = game.Team2Name, Team1PlayerStats = game.PlayerStats .Where(p => p.TeamID == game.Team1ID) .Select(g => { var order = Convert.ToInt16(g.Stats.Where(s => s.StatType.ID == (int)CalculatedStatTypes.BattingOrder).Sum(s => s.Value)); return(new PlayerStatsResult() { PlayerID = g.PlayerID, PlayerName = players.FirstOrDefault(p => p.ID == g.PlayerID)?.Name, PlayerNumber = players.FirstOrDefault(p => p.ID == g.PlayerID)?.Number ?? 0, Order = order == 0 ? (int?)null : order, AtBat = game.SportID == (int)SportsList.Baseball && g.PlayerID == playerAtBat, PlayerStats = g.Stats.OrderBy(s => s.StatType.GridDisplayOrder) .Select(s => new StatResult() { StatTypeID = s.StatType.ID, Name = s.StatType.Name, DefaultShow = s.StatType.DefaultShow, Value = s.Value }).ToList() }); }) .ToList(), Team2PlayerStats = game.PlayerStats .Where(p => p.TeamID == game.Team2ID) .Select(g => { var order = Convert.ToInt16(g.Stats.Where(s => s.StatType.ID == (int)CalculatedStatTypes.BattingOrder).Sum(s => s.Value)); return(new PlayerStatsResult() { PlayerID = g.PlayerID, PlayerName = players.FirstOrDefault(p => p.ID == g.PlayerID)?.Name, PlayerNumber = players.FirstOrDefault(p => p.ID == g.PlayerID)?.Number ?? 0, Order = order == 0 ? (int?)null : order, AtBat = game.SportID == (int)SportsList.Baseball && g.PlayerID == playerAtBat, PlayerStats = g.Stats.OrderBy(s => s.StatType.GridDisplayOrder) .Select(s => new StatResult() { StatTypeID = s.StatType.ID, Name = s.StatType.Name, DefaultShow = s.StatType.DefaultShow, Value = s.Value }).ToList() }); }) .ToList(), Teams = allTeams.Select(t => new TeamsResult() { ID = t.ID, Name = t.Name }) .ToList() }; if (game.SportID == (int)SportsList.Baseball) { gameResult.Team1PlayerStats = gameResult.Team1PlayerStats.OrderBy(p => p.Order == 0 || p.Order == null ? 99 : p.Order).ToList(); gameResult.Team2PlayerStats = gameResult.Team2PlayerStats.OrderBy(p => p.Order == 0 || p.Order == null ? 99 : p.Order).ToList(); gameResult.BaseballGameStateResult = ConvertObjects.ConvertType(BaseballService.GetInstance().GetExistingGameState(gameID, leagueID)); } return(gameResult); } catch (Exception ex) { throw ex; } }
public StatsResult GetStats(int sportID, int?playerID, int gameID, int teamID, int?groupID, int leagueID) { var statsResult = GetStatTypes(sportID, playerID, gameID, teamID, groupID, leagueID); if (sportID == (int)SportsList.Baseball) { statsResult.BaseballGameStateResult = ConvertObjects.ConvertType(BaseballService.GetInstance().GetExistingGameState(gameID, statsResult.LeagueID)); statsResult.BaseballGameStateResult.IsStatsPage = true; } return(statsResult); }