private bool ProcessSingleExpirable(NotificationState state, ExpirableStat expirableStat, WFStatType statType) { if (expirableStat == null) { return(false); } if (state == null) { NewNotificationStates.Add(new NotificationState { WfStatId = expirableStat.Id, WfStatType = statType.ToString() }); return(false); } if (state.WfStatId != expirableStat.Id && !expirableStat.IsExpired) { NewNotificationStates.Add(new NotificationState { WfStatId = expirableStat.Id, WfStatType = statType.ToString() }); ExpiredNotificationStates.Add(state); return(true); } return(false); }
public void ProcessFissures(List <NotificationState> states, List <Fissure> fissures) { if (fissures == null) { return; } if (states == null || !states.Any()) { var newFissureStates = fissures.Select(f => new NotificationState { WfStatId = f.Id, WfStatType = nameof(WFStatType.Fissure) }); NewNotificationStates.AddRange(newFissureStates); return; } var expiredFissures = states.Where(s => !fissures.Any(f => f.Id == s.WfStatId)); var newFissures = fissures.Where(f => !states.Any(s => s.WfStatId == f.Id)); if (expiredFissures.Any()) { ExpiredNotificationStates.AddRange(expiredFissures); } foreach (var fissure in newFissures) { NewNotificationStates.Add(new NotificationState { WfStatId = fissure.Id, WfStatType = nameof(WFStatType.Fissure) }); var ttl = fissure.TimeLeft; var topic = YawsNotification.Topic.Info; if (fissure.TierNum == 1) { topic = YawsNotification.Topic.FissureLith; } else if (fissure.TierNum == 2) { topic = YawsNotification.Topic.FissureMeso; } else if (fissure.TierNum == 3) { topic = YawsNotification.Topic.FissureNeo; } else if (fissure.TierNum == 4) { topic = YawsNotification.Topic.FissureAxi; } else if (fissure.TierNum == 5) { topic = YawsNotification.Topic.FissureRequiem; } var message = FCM.CreateMessage($"{fissure.Tier} {fissure.MissionType} on {fissure.Node}", $"Expired in {fissure.TimeLeft.ToFormattedString()}", platform, topic, nameof(Fissure), ttl); NotificationMessages.Add(message); } }