示例#1
0
        private void updateOPRDataButton_Click(object sender, EventArgs e)
        {
            int year = Properties.Settings.Default.selectedYear;
            List <TBAApi.TBAEvent> tbaEvents = tbaApi.getEventsByYear(year);
            List <HelperDataStructures.TeamEventStats> allStats = new List <HelperDataStructures.TeamEventStats>();

            allStats.Clear();

            foreach (TBAApi.TBAEvent evt in tbaEvents)
            {
                if (Convert.ToBoolean(evt.official))
                {
                    TBAApi.EventStats stats = tbaApi.getEventStats(year, evt.event_code);

                    if (stats != null)
                    {
                        foreach (KeyValuePair <string, string> entry in stats.oprs)
                        {
                            HelperDataStructures.TeamEventStats teamStat = new HelperDataStructures.TeamEventStats(Convert.ToInt16(entry.Key), Convert.ToDateTime(evt.end_date),
                                                                                                                   Convert.ToDouble(entry.Value), Convert.ToDouble(stats.dprs[entry.Key]), Convert.ToDouble(stats.ccwms[entry.Key]));

                            allStats.Add(teamStat);
                            // do something with entry.Value or entry.Key
                        }
                    }
                }
            }

            //when you're done, write it to a file so we don't have to do this every time
            HelperDataStructures.WriteObjectToFile <List <HelperDataStructures.TeamEventStats> >("allStats.bin", allStats);
        }
        private void refreshEventsListButton_Click(object sender, EventArgs e)
        {
            //get all events for the year
            int year = Properties.Settings.Default.selectedYear;

            events = frcApi.getEvents(year);
            HelperDataStructures.WriteObjectToFile <List <FRCApi.Event> >("frcEvents.bin", events);
        }
示例#3
0
 public bool saveRequestTimes()
 {
     try
     {
         HelperDataStructures.WriteObjectToFile <Dictionary <string, DateTime> >("requestTimes.bin", requestTimesDict);
         return(true);
     }
     catch (Exception e) {
         Console.WriteLine(e.Message);
         return(false);
     }
 }
示例#4
0
        /// <summary>
        /// Generic API request for generic objects
        /// </summary>
        /// <typeparam name="T">Object type to return</typeparam>
        /// <param name="uri">FRC API endpoint</param>
        /// <param name="useIfModifiedSince">boolean for whether or not to use the If-Modified-Since header</param>
        /// <returns></returns>
        private T handleAPIRequest <T>(string uri, bool useIfModifiedSince = true)
        {
            T apiObj;

            try
            {
                if (!System.IO.File.Exists(HelperDataStructures.convertUriToFileName(uri, ".bin")))
                {
                    //if there isn't a cached file, we need to force an API update to create one.
                    useIfModifiedSince = false;
                }
                string api_response = sendAndGetRawResponse(uri, useIfModifiedSince);

                if (api_response != null)
                {
                    apiObj = JsonConvert.DeserializeObject <T>(api_response);
                    HelperDataStructures.WriteObjectToFile <T>(HelperDataStructures.convertUriToFileName(uri, ".bin"), apiObj);
                    return(apiObj);
                }
                else
                {
                    return(default(T));
                }
            }
            catch (WebException ex)
            {
                if (((HttpWebResponse)((WebException)ex.InnerException).Response).StatusCode == HttpStatusCode.NotModified)
                {
                    //no changes were made, so load from cache
                    try
                    {
                        apiObj = HelperDataStructures.ReadObjectFromFile <T>(HelperDataStructures.convertUriToFileName(uri, ".bin"));
                        return(apiObj);
                    }
                    catch (System.IO.FileNotFoundException fnfe)
                    {
                        throw new Exception("No cached object found.", fnfe);
                    }
                }
                else
                {
                    throw ex;
                }
            }
        }
        private void refreshSeasonDataButton_Click(object sender, EventArgs e)
        {
            //get all events for the year
            int year = Properties.Settings.Default.selectedYear;

            events = frcApi.getEvents(year, !forceFullUpdateCheckBox.Checked);
            HelperDataStructures.WriteObjectToFile <List <FRCApi.Event> >("frcEvents.bin", events);

            List <HelperDataStructures.MatchData2016> seasonMatches = new List <HelperDataStructures.MatchData2016>();

            foreach (FRCApi.Event evt in events)
            {
                if (evt.code.ToLower() == "scmb")
                {
                    Console.WriteLine("Bleh");
                }
                List <FRCApi.MatchResult> matchResults = frcApi.getMatchResults <FRCApi.MatchResult>(year, evt.code, !forceFullUpdateCheckBox.Checked);
                if (matchResults != null && matchResults.Count > 0)
                {
                    List <FRCApi.ScoreDetails2016> matchScoreDetails   = frcApi.getScoreDetails <FRCApi.ScoreDetails2016>(year, evt.code, FRCApi.QualificationMatchesString, !forceFullUpdateCheckBox.Checked);
                    List <FRCApi.ScoreDetails2016> playoffScoreDetails = frcApi.getScoreDetails <FRCApi.ScoreDetails2016>(year, evt.code, FRCApi.PlayoffMatchesString, !forceFullUpdateCheckBox.Checked);

                    if (playoffScoreDetails != null)
                    {
                        matchScoreDetails.AddRange(playoffScoreDetails);
                    }

                    if (matchResults != null && matchScoreDetails != null)
                    {
                        for (int i = 0; i < matchResults.Count; i++)
                        {
                            HelperDataStructures.MatchData2016 matchData = new HelperDataStructures.MatchData2016(matchResults[i], matchScoreDetails[i]);
                            seasonMatches.Add(matchData);
                        }
                    }
                }
            }

            HelperDataStructures.WriteObjectToFile <List <HelperDataStructures.MatchData2016> >("seasonMatchData.bin", seasonMatches);
            HelperDataStructures.WriteObjectToFile <List <FRCApi.Event> >("events.bin", events);
        }
示例#6
0
        private void goButton_Click(object sender, EventArgs e)
        {
            events = HelperDataStructures.ReadObjectFromFile <List <FRCApi.Event> >("events.bin");//frcApi.getEvents(Properties.Settings.Default.selectedYear);//HelperDataStructures.ReadObjectFromFile<List<FRCApi.Event>>("frcEvents.bin");

            //find the desired events
            string eventCodesString = Properties.Settings.Default.eventCodesString;

            string[] selectedEventCodes = eventCodesString.Replace(" ", "").Split(',');

            selectedEvents.Clear();
            foreach (string s in selectedEventCodes)
            {
                selectedEvents.Add(events.Find(i => i.code == s));
            }
            HelperDataStructures.WriteObjectToFile <List <FRCApi.Event> >("selectedEvents.bin", selectedEvents);

            //clear out the matches from the last tiem you clicked go
            matchesList.Clear();

            //Add all the matches for now.
            foreach (FRCApi.Event s in selectedEvents)
            {
                string shortName = s.name.Split('-').Last().Replace("Subdivision", "").Replace("Event", ""); //s.Event.name.Replace("FIRST Championship - ", "").Replace(" Subdivision", "");
                List <FRCApi.HybridScheduleMatch> schedule = frcApi.getHybridSchedule(Properties.Settings.Default.selectedYear, s.code, "qual");
                int redZoneQueueVal = 1;
                foreach (FRCApi.HybridScheduleMatch m in schedule)
                {
                    //DateTime compareDate = m.actualStartTime.Date + Properties.Settings.Default.currentTime.TimeOfDay;
                    if (m.actualStartTime == null)//m.actualStartTime > Properties.Settings.Default.currentTime)
                    {
                        matchesList.Add(new FIRSTRowMatch(shortName, m, redZoneQueueVal));
                        redZoneQueueVal++;
                    }
                }
            }

            matchesList = matchesList.OrderBy(i => i.M).ToList();

            int closestMatch = matchesList.First().M;

            List <double> redZoneScores = new List <double>();

            foreach (FIRSTRowMatch frm in matchesList)
            {
                // we don't care about matches that are really far out, so don't bother calculating stuff for them.
                if (frm.QNum < (closestMatch + 10))
                {
                    frm.Blue1AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Blue1").teamNumber);
                    frm.Blue2AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Blue2").teamNumber);
                    frm.Blue3AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Blue3").teamNumber);

                    frm.Red1AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Red1").teamNumber);
                    frm.Red2AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Red2").teamNumber);
                    frm.Red3AvgDefensesDamaged = getAverageDefensesDamaged((int)frm.Teams.Find(i => i.station == "Red3").teamNumber);

                    frm.Blue1AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Blue1").teamNumber);
                    frm.Blue2AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Blue2").teamNumber);
                    frm.Blue3AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Blue3").teamNumber);

                    frm.Red1AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Red1").teamNumber);
                    frm.Red2AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Red2").teamNumber);
                    frm.Red3AvgBoulders = getAverageBouldersScored((int)frm.Teams.Find(i => i.station == "Red3").teamNumber);

                    //frm.RedMaxOPR = getMaxOPR("red", frm);
                    //frm.BlueMaxOPR = getMaxOPR("blue", frm);
                    //frm.RedTotalOPR = getTotalOPR("red", frm);
                    //frm.BlueTotalOPR = getTotalOPR("blue", frm);
                    frm.calculateRedZoneScore();
                    redZoneScores.Add(frm.RedZoneScore);
                }
            }
            matchesList = matchesList.OrderBy(i => i.QNum).ThenByDescending(i => i.RedZoneScore).ToList();
            currentMatchesDGV.DataSource = matchesList;

            //resize and sort all DGVs by default.
            updateMainDGVs(redZoneScores);
        }