public LineupViewModel Submit( DateTime queryDate, string teamSlug) { var result = new LineupViewModel { GameDate = queryDate }; GameDate = queryDate; var strDate = Utility.UniversalDate(queryDate); var lineup = new List <Batter>(); var httpWebRequest = CreateRequest( sport: "baseball", league: "mlb", apiRequest: "lineups", queryParms: $"season_id=mlb-{queryDate.Year}&on={strDate}&team_id={teamSlug}"); var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var dto = JsonConvert.DeserializeObject <LineupsDto>( streamReader.ReadToEnd()); Players = dto.Players; Teams = dto.Teams; Games = dto.Games; foreach (var item in dto.Lineups) { if (Int32.Parse(item.BattingOrder) > 0) { lineup.Add(MapDtoToBatter(item)); } } ; } Batters = lineup.OrderBy(o => o.BattingOrder).ToList(); SetSubs(); result.Lineup = Batters; result.TeamName = teamSlug; return(result); }
public LineupViewModel Submit( DateTime queryDate, string teamSlug) { var result = new LineupViewModel { GameDate = queryDate }; var lineupRequest = new LineupRequest(); //Console.WriteLine($"requesting {teamSlug} lineup for {queryDate}"); result = lineupRequest.Submit( queryDate: queryDate, teamSlug: teamSlug); return(result); }
public MainWindow() { InitializeComponent(); DataContext = new LineupViewModel(); }
private LineupViewModel SmartLineup( Pitcher pitcher, DateTime lineupQueryDate, int lineupPositions) { var opponentTeam = pitcher.OpponentSlug; var pitcherThrows = pitcher.Throws; var daysToGoBack = DaysToGoBack; if (pitcherThrows.Equals("L")) { daysToGoBack = daysToGoBack * 2; } var result = new LineupViewModel { TeamName = opponentTeam, Lineup = new List <Batter>() }; // workout the average lineup versus R or L Dictionary <string, Batter> Roster = new Dictionary <string, Batter>(); Dictionary <int, Dictionary <string, int> > d = new Dictionary <int, Dictionary <string, int> >(); var lineupCount = 0; for (int i = 1; i < daysToGoBack + 1; i++) { var focusDate = lineupQueryDate.AddDays(-i); var lineup = _lineupRepository.Submit( queryDate: focusDate, teamSlug: opponentTeam); if (lineup.Lineup.Count == 0) { continue; } var lineupPitcher = _opposingPitcher.PitcherFacing( opponentTeam, focusDate); if (string.IsNullOrEmpty(lineupPitcher.Name)) { #if DEBUG2 Log($@"pitcher on {focusDate} is unknown"); #endif continue; } #if DEBUG2 Log($@"pitcher on { focusDate } is { lineupPitcher.Name } throws {lineupPitcher.Throws}" ); #endif if (lineupPitcher.Throws.Equals(pitcherThrows)) { lineupCount++; for (int j = 1; j < lineupPositions + 1; j++) { var batterAt = lineup.BattingAt(j.ToString()); AddBatter(d, j, batterAt); AddToRoster(Roster, batterAt); } } } if (lineupCount > 0) { for (int j = 1; j < lineupPositions + 1; j++) { var lastBest = 0; var best = string.Empty; var apps = d[j]; foreach (KeyValuePair <string, int> pair in apps) { if (pair.Value > lastBest) { best = pair.Key; lastBest = pair.Value; } } var bestBatter = Roster[best]; bestBatter.BattingOrder = j.ToString(); bestBatter.IsSub = false; result.Lineup.Add(bestBatter); } } else { Log($"No lineups found going back {DaysToGoBack} days"); } return(result); }