Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }