public static PLayersOnField EndOfPlay(BaseballPlayRM play, List <LineupRM> lineup) { if (play == null || lineup == null || lineup.Count == 0 || play.RetrosheetGameId != lineup[0].RetrosheetGameId) { throw new System.Exception("Invalid play or lineup"); } PLayersOnField players = new PLayersOnField(); players.RetrosheetGameId = play.RetrosheetGameId; players.EventNumber = play.EventNumber; players.IsStartOfPlay = false; players.inning = play.Inning; players.outs = play.EndOfPlay_Outs; players.TeamAtBat = play.TeamAtBat; players.HomeTeamScore = play.EndOfPlay_HomeScore; players.AwayTeamScore = play.EndOfPlay_VisitorScore; players.Pitcher = FindDefender(1, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.Catcher = FindDefender(2, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.FirstBaseman = FindDefender(3, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.SecondBaseman = FindDefender(4, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.ThirdBaseman = FindDefender(5, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.ShortStop = FindDefender(6, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.LeftFielder = FindDefender(7, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.CenterFielder = FindDefender(8, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.RightFielder = FindDefender(9, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.Batter = play.BatterEvent ? "" : FindPlayerByBattingOrder(play.BattingOrder, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.RunnerOnFirst = FindPlayerByBattingOrder(play.EndOfPlay_Runner1BO, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.RunnerOnSecond = FindPlayerByBattingOrder(play.EndOfPlay_Runner2BO, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); players.RunnerOnThird = FindPlayerByBattingOrder(play.EndOfPlay_Runner3BO, play.TeamAtBat, lineup[play.LineupChangeSequence - 1]); return(players); }
public IActionResult GetBaseballPlayPlayersStartOfPlay(string gameid, int eventnumber) { var play = baseballPlayRepo.GetPlay(gameid, eventnumber); var lineup = lineupRepo.GetGameLineup(gameid); if (play == null || string.IsNullOrWhiteSpace(play.RetrosheetGameId) || lineup == null || lineup.Count == 0) { gameid = gameid.Replace("'", ""); string id = gameid + "_" + eventnumber.ToString("000"); return(BadRequest("No Baseball Play with ID " + id + " was found.")); } var players = PLayersOnField.StartOfPlay(play, lineup); return(Ok(players)); }