private void RaiseGameEvent(string jsonString) { TimeOfLastRadarGameEventOrHeartbeat = DateTime.Now; bool isHeartbeat = jsonString.Contains("heartbeat"); NflGameEvent nflGameEvent = null; if (isHeartbeat) { // Logger.Info("Radar heartbeat"); } if (!isHeartbeat) { Logger.Info(jsonString); nflGameEvent = NflGameEvent.FromJson(jsonString); } bool isGameEvent = nflGameEvent != null; if (isGameEvent) { NflGameEventEventArgs nflGameEventEventArgs = new NflGameEventEventArgs { GameEvent = nflGameEvent }; OnRadarGameEvent(nflGameEventEventArgs); } }
private void HandleGameEvent(object sender, NflGameEventEventArgs nflGameEventEventArgs) { NflGameEvent nflGameEvent = nflGameEventEventArgs.GameEvent; Guid gameId = nflGameEvent.Payload.Game.Id; if (gameId == GameId) { string eventType = nflGameEvent.Metadata.EventType; string message = $"Handling Radar game event: GameId = {gameId}, EventType = {eventType}"; Logger.Info(message); switch (eventType) { // case "setup": // return; // break; // case "timeout": // return; // case "period_end": // return; default: ProcessRadarGameEvent1(nflGameEvent); ModelUpdateRequired = true; break; } //string message = $"Handling Radar game event: GameId = {gameId}, EventType = {eventType}"; //Logger.Info(message); } }
private void ProcessRadarGameEvent1(NflGameEvent nflGameEvent) { if (nflGameEvent.Metadata == null) { Logger.Error("ProcessRadarGameEvent1(): game event metadata was null"); return; } //try //{ // bool newScore = false; // if (nflGameEvent.Payload.Event.Sequence > 0) // { // if (nflGameEvent.Payload.Event.Sequence <= NflGameState.Sequence) // { // newScore = false; // return; // } // newScore = true; // NflGameState.Sequence = nflGameEvent.Payload.Event.Sequence; // } // string eventType = nflGameEvent.Metadata.EventType; // // maybe better not to set the possession to null at this point. // string possession = "N"; // // todo create an object from NFL event definition // NflGameState.Status = nflGameEvent.Metadata.Status; // Event payloadEvent = nflGameEvent.Payload.Event; // Game playloadGame = nflGameEvent.Payload.Game; // //drive info // if (payloadEvent.Drive != null && payloadEvent.Drive.StartReason == "kickoff") // { // if (payloadEvent.StartSituation?.Possession != null) // { // if (payloadEvent.StartSituation.Possession.Id == AwayTeam.TeamId) // { // AwayTeam.ReceiveSecondHalf = false; // HomeTeam.ReceiveSecondHalf = true; // } // if (payloadEvent.StartSituation.Possession.Id == HomeTeam.TeamId) // { // AwayTeam.ReceiveSecondHalf = true; // HomeTeam.ReceiveSecondHalf = false; // } // } // } // if (eventType == "period_end") // { // NflGameState.YardsToGo = 10; // NflGameState.Down = 1; // NflGameState.Possession = 0; // } // if (payloadEvent.EndSituation != null) // { // Situation endSituation = payloadEvent.EndSituation; // NflGameState.YardsToGo = endSituation.Yfd; // NflGameState.Down = endSituation.Down; // NflGameState.Clock = endSituation.Clock; // NflGameState.RemainingSeconds = Utils.ConvertPeriodToGameString(playloadGame.Quarter, payloadEvent.EndSituation.Clock, 3600); // NflGameState.Possession = 0; // if (nflGameEvent.Payload.Event.EndSituation.Possession.Id == AwayTeam.TeamId) // { // NflGameState.Possession = 1; // possession = "V"; // } // if (nflGameEvent.Payload.Event.EndSituation.Possession.Id == HomeTeam.TeamId) // { // NflGameState.Possession = 2; // possession = "H"; // } // if (nflGameEvent.Payload.Event.EndSituation.Possession.Id != // nflGameEvent.Payload.Event.EndSituation.Location.Id) // { // NflGameState.FieldPosition = 100 - ToInt32(nflGameEvent.Payload.Event.EndSituation.Location.Yardline); // } // else // { // NflGameState.FieldPosition = ToInt32(nflGameEvent.Payload.Event.EndSituation.Location.Yardline); // } // NflGameState.Quarter = nflGameEvent.Payload.Game.Quarter; // ModelData[NflModelDataKeys.Egt] = new Dictionary<string, double> // { // {"S", ToDouble(NflGameState.RemainingSeconds)}, // {"FP", ToDouble(NflGameState.FieldPosition)}, // {"DN", ToDouble(NflGameState.Down)}, // {"YF", ToDouble(NflGameState.YardsToGo)}, // {"P", ToDouble(NflGameState.Possession)} // }; // } // //ModelData[NflModelDataKeys.Egt] = new Dictionary<string, double>(); // int awayScore; //nflGameEvent.Payload.Game.Summary.Away.Points; // int homeScore; // nflGameEvent.Payload.Game.Summary.Home.Points; // if (payloadEvent.AwayPoints != null) // { // awayScore = payloadEvent.AwayPoints; // homeScore = payloadEvent.HomePoints; // } // else // { // return; // } // double scoreCounter = 0; // //check to see if there is any current score // foreach (KeyValuePair<string, double> existingScore in ModelData[NflModelDataKeys.Evs]) // { // scoreCounter += existingScore.Value; // } // Dictionary<string, double> evsDictionary = ModelData[NflModelDataKeys.Evs]; // if (scoreCounter > 0 && awayScore == 0 && homeScore == 0) // { // } // else // { // // todo are the if checks necessary? // if (!evsDictionary.ContainsKey("H,Q1")) // { // evsDictionary["V,Q1"] = 0; // evsDictionary["H,Q1"] = 0; // } // if (!evsDictionary.ContainsKey("H,H1")) // { // evsDictionary["V,H1"] = 0; // evsDictionary["H,H1"] = 0; // } // if (!evsDictionary.ContainsKey("H,Q2")) // { // evsDictionary["V,Q2"] = 0; // evsDictionary["H,Q2"] = 0; // } // if (!evsDictionary.ContainsKey("H,H2")) // { // evsDictionary["V,H2"] = 0; // evsDictionary["H,H2"] = 0; // } // if (!evsDictionary.ContainsKey("H,Q3")) // { // evsDictionary["V,Q3"] = 0; // evsDictionary["H,Q3"] = 0; // } // if (!evsDictionary.ContainsKey("H,Q4")) // { // evsDictionary["V,Q4"] = 0; // evsDictionary["H,Q4"] = 0; // } // evsDictionary["H,CG"] = homeScore; // evsDictionary["V,CG"] = awayScore; // switch (NflGameState.Quarter) // { // case 1: // evsDictionary["V,Q1"] = awayScore; // evsDictionary["H,Q1"] = homeScore; // break; // case 2: // evsDictionary["V,Q2"] = awayScore - evsDictionary["V,Q1"]; // evsDictionary["H,Q2"] = homeScore - evsDictionary["H,Q1"]; // break; // case 3: // evsDictionary["V,Q3"] = awayScore - (evsDictionary["V,Q1"] + evsDictionary["V,Q2"]); // evsDictionary["H,Q3"] = homeScore - (evsDictionary["H,Q1"] + evsDictionary["H,Q2"]); // break; // case 4: // evsDictionary["V,Q4"] = // awayScore - (evsDictionary["V,Q1"] + evsDictionary["V,Q2"] + evsDictionary["V,Q3"]); // evsDictionary["H,Q4"] = // homeScore - (evsDictionary["H,Q1"] + evsDictionary["H,Q2"] + evsDictionary["H,Q3"]); // break; // } // evsDictionary["H,H1"] = evsDictionary["H,Q1"] + evsDictionary["H,Q2"]; // evsDictionary["V,H1"] = evsDictionary["V,Q1"] + evsDictionary["V,Q2"]; // evsDictionary["H,H2"] = evsDictionary["H,Q3"] + evsDictionary["H,Q4"]; // evsDictionary["V,H2"] = evsDictionary["V,Q3"] + evsDictionary["V,Q4"]; // } // ModelUpdateRequired = true; // string quarter = $"Q{NflGameState.Quarter}"; // string clock = NflGameState.Clock; // if (NflGameState.Status == "halftime") // { // quarter = "HT"; // if (AwayTeam.ReceiveSecondHalf) // { // possession = "V"; // NflGameState.Possession = 1; // ModelData[NflModelDataKeys.Egt]["P"] = NflGameState.Possession; // ModelData[NflModelDataKeys.Egt]["FP"] = 25; // ModelData[NflModelDataKeys.Egt]["DN"] = 1; // ModelData[NflModelDataKeys.Egt]["YF"] = 10; // ModelData[NflModelDataKeys.Egt]["S"] = 15 * 60 * 2; // } // if (HomeTeam.ReceiveSecondHalf) // { // possession = "H"; // NflGameState.Possession = 2; // ModelData[NflModelDataKeys.Egt]["P"] = NflGameState.Possession; // ModelData[NflModelDataKeys.Egt]["FP"] = 25; // ModelData[NflModelDataKeys.Egt]["DN"] = 1; // ModelData[NflModelDataKeys.Egt]["YF"] = 10; // ModelData[NflModelDataKeys.Egt]["S"] = 15 * 60 * 2; // } // } // if (NflGameState.Status == "closed") // { // quarter = "FN"; // } // if (eventType == "period_end") // { // int qplus = NflGameState.Quarter + 1; // quarter = $"Q{qplus}"; // clock = "15:00"; // } // string messageJson = $@"{{ // ""game"": ""{GameId}"", // ""Status"": ""{NflGameState.Status}"", // ""away_score"": {awayScore}, // ""home_score"": {homeScore}, // ""away_q1"": {evsDictionary["V,Q1"]}, // ""home_q1"": {evsDictionary["H,Q1"]}, // ""away_q2"": {evsDictionary["V,Q2"]}, // ""home_q2"": {evsDictionary["H,Q2"]}, // ""away_q3"": {evsDictionary["V,Q3"]}, // ""home_q3"": {evsDictionary["H,Q3"]}, // ""away_q4"": {evsDictionary["V,Q4"]}, // ""home_q4"": {evsDictionary["H,Q4"]}, // ""period"": ""{quarter}"", // ""clock"": ""{clock}"", // ""possession"": ""{possession}"", // ""down"": {NflGameState.Down}, // ""Y2F"": {NflGameState.YardsToGo}, // ""FP"": {NflGameState.FieldPosition} // }}"; // if (!Utils.IsValidJson(messageJson)) // { // throw new Exception("JSON is invalid: {jsonString}"); // } // string messageKey = GameId + "score"; // const string eventName = "NFLTEAM"; // Logger.Info(messageJson); // if (newScore) // { // _pusherUtil.SendScoreMessage(messageJson, eventName, messageKey); // } //} //catch (Exception exception) //{ // Logger.Error(exception); //} }