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); }
public bool saveRequestTimes() { try { HelperDataStructures.WriteObjectToFile <Dictionary <string, DateTime> >("requestTimes.bin", requestTimesDict); return(true); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } }
/// <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); }
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); }