private void ProcessGymDetails(GymDetailsData gymDetails) { if (!_alarms.EnableGyms) //GymDetails { return; } if (gymDetails == null) { return; } if (_alarms.Alarms?.Count == 0) { return; } for (var i = 0; i < _alarms.Alarms.Count; i++) { var alarm = _alarms.Alarms[i]; var geofence = InGeofence(alarm.Geofences, new Location(gymDetails.Latitude, gymDetails.Longitude)); if (geofence == null) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName={gymDetails.GymName} because not in geofence."); continue; } if (!_gyms.ContainsKey(gymDetails.GymId)) { _gyms.Add(gymDetails.GymId, gymDetails); } var oldGym = _gyms[gymDetails.GymId]; var changed = oldGym.Team != gymDetails.Team;// || /*oldGym.InBattle != gymDetails.InBattle ||*/ gymDetails.InBattle; if (!changed) { return; } if ((alarm.Filters?.Gyms?.UnderAttack ?? false) && !gymDetails.InBattle) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName{gymDetails.GymName}, not under attack."); continue; } if (alarm.Filters?.Gyms?.Team != gymDetails.Team && alarm.Filters?.Gyms?.Team != PokemonTeam.All) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName{gymDetails.GymName}, not specified team {alarm.Filters.Gyms.Team}."); continue; } OnGymDetailsAlarmTriggered(gymDetails, alarm); } }
private void ParseGymDetails(dynamic message) { try { GymDetailsData gymDetails = JsonConvert.DeserializeObject <GymDetailsData>(Convert.ToString(message)); if (gymDetails == null) { _logger.Error($"Failed to parse gym details webhook object: {message}"); return; } OnGymDetailsReceived(gymDetails); } catch (Exception ex) { _logger.Error(ex); _logger.Debug(Convert.ToString(message)); } }
private void ParseGymDetails(dynamic message) { try { GymDetailsData gymDetails = JsonConvert.DeserializeObject <GymDetailsData>(Convert.ToString(message)); if (gymDetails == null) { _logger.Error($"Failed to parse gym details webhook object: {message}"); return; } if (_checkForDuplicates) { lock (_processedGyms) { if (_processedGyms.ContainsKey(gymDetails.GymId)) { if (gymDetails.Team == gymDetails.Team && gymDetails.SlotsAvailable == gymDetails.SlotsAvailable && gymDetails.InBattle == gymDetails.InBattle) { // Gym already processed return; } _processedGyms[gymDetails.GymId] = new ScannedGym(gymDetails); } else { _processedGyms.Add(gymDetails.GymId, new ScannedGym(gymDetails)); } } } OnGymDetailsReceived(gymDetails); } catch (Exception ex) { _logger.Error(ex); _logger.Debug(Convert.ToString(message)); } }
private void ProcessGymDetails(GymDetailsData gymDetails) { if (gymDetails == null) { return; } Statistics.Instance.TotalReceivedGyms++; foreach (var(guildId, alarms) in _alarms) { if (!alarms.EnableGyms) //GymDetails { continue; } if (alarms.Alarms?.Count == 0) { continue; } var gymDetailsAlarms = alarms.Alarms?.FindAll(x => x.Filters?.Gyms != null); for (var j = 0; j < gymDetailsAlarms.Count; j++) { var alarm = gymDetailsAlarms[j]; if (alarm.Filters.Gyms == null) { continue; } if (!alarm.Filters.Gyms.Enabled) { //_logger.Info($"[{alarm.Name}] Skipping gym GymId={gym.GymId}, Name={gym.Name}: gym filter not enabled."); continue; } var geofence = GeofenceService.GetGeofence(alarm.GeofenceItems, new Location(gymDetails.Latitude, gymDetails.Longitude)); if (geofence == null) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName={gymDetails.GymName}: not in geofence."); continue; } if ((alarm.Filters?.Gyms?.UnderAttack ?? false) && !gymDetails.InBattle) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName{gymDetails.GymName}, not under attack."); continue; } if (alarm.Filters?.Gyms?.Team != gymDetails.Team && alarm.Filters?.Gyms?.Team != PokemonTeam.All) { //_logger.Info($"[{alarm.Name}] Skipping gym details GymId={gymDetails.GymId}, GymName{gymDetails.GymName}, not specified team {alarm.Filters.Gyms.Team}."); continue; } if (!_gyms.ContainsKey(gymDetails.GymId)) { _gyms.Add(gymDetails.GymId, gymDetails); //OnGymDetailsAlarmTriggered(gymDetails, alarm, guildId); //continue; } /* * var oldGym = _gyms[gymDetails.GymId]; * var changed = oldGym.Team != gymDetails.Team || gymDetails.InBattle; * if (!changed) * return; */ OnGymDetailsAlarmTriggered(gymDetails, alarm, guildId); } } }
public void SetGym(string id, GymDetailsData gymDetails) { _gyms[id] = gymDetails; }
private void OnGymDetailsAlarmTriggered(GymDetailsData gymDetails, AlarmObject alarm, ulong guildId) { GymDetailsAlarmTriggered?.Invoke(this, new AlarmEventTriggeredEventArgs <GymDetailsData>(gymDetails, alarm, guildId)); }
public ScannedGym(GymDetailsData gym) { Team = gym.Team; SlotsAvailable = gym.SlotsAvailable; InBattle = gym.InBattle; }
private void OnGymDetailsReceived(GymDetailsData gymDetails) => GymDetailsReceived?.Invoke(this, new DataReceivedEventArgs <GymDetailsData>(gymDetails));
public GymDetailsDataEventArgs(GymDetailsData gymDetails) { GymDetails = gymDetails; }