Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public MainWindow()
 {
     InitializeComponent();
     DataContext = new LineupViewModel();
 }
Ejemplo n.º 4
0
        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);
        }