private void AddToVoidFissurePostQueue(WarframeVoidFissure fissure, bool notifyClient, bool fissureHasExpired) { if (!_voidFissureMessagePostQueue.Any(x => x.WarframeEvent.GUID == fissure.GUID)) { _voidFissureMessagePostQueue.Add(new MessageQueueElement <WarframeVoidFissure>(fissure, notifyClient, fissureHasExpired)); } }
public static string DiscordMessage(this WarframeVoidFissure fissure, bool isNotification) { MissionInfo info = fissure.MissionDetails; var rewardMessage = (!string.IsNullOrEmpty(info.Reward) ? info.Reward : string.Empty); var statusString = (!fissure.IsExpired()) ? (DateTime.Now < fissure.StartTime ? $"Starts {fissure.StartTime:HH:mm} ({fissure.GetMinutesRemaining(true)}m)" : $"Expires {fissure.ExpireTime:HH:mm} ({fissure.GetMinutesRemaining(false)}m)") : $"Expired ({fissure.ExpireTime:HH:mm})"; StringBuilder returnMessage = new StringBuilder(); if (!isNotification) { returnMessage.AppendLine(fissure.DestinationName); returnMessage.AppendLine($"{info.Faction} {info.MissionType}{(info.RequiresArchwing ? $" (Archwing)" : string.Empty)}"); returnMessage.AppendLine(rewardMessage); returnMessage.Append(statusString); } else { returnMessage.AppendLine("New Void Fissure"); returnMessage.AppendLine($"{info.Faction} {info.MissionType}"); returnMessage.AppendLine(rewardMessage); returnMessage.Append(statusString); } return(returnMessage.ToString()); }
public IEnumerable <WarframeVoidFissure> GetVoidFissures() { JObject worldState = _scraper.WorldState; var resultVoidFissures = new List <WarframeVoidFissure>(); //Find Alerts foreach (var jsonFissure in worldState["ActiveMissions"]) { WarframeVoidFissure currentVoidFissure = _voidFissures.Find(x => x.GUID == jsonFissure["_id"]["$oid"].ToString()); if (currentVoidFissure == null) { var id = jsonFissure["_id"]["$oid"].ToString(); var loc = jsonFissure["Node"].ToString(); var millisecondsUntilStart = long.Parse(jsonFissure["Activation"]["$date"]["$numberLong"].ToString()) - (long.Parse(worldState["Time"].ToString()) * TIME_TO_LONG_MULTIPLIER); var millisecondsUntilExpire = long.Parse(jsonFissure["Expiry"]["$date"]["$numberLong"].ToString()) - (long.Parse(worldState["Time"].ToString()) * TIME_TO_LONG_MULTIPLIER); var startTime = DateTime.Now.AddMilliseconds(millisecondsUntilStart); var expireTime = DateTime.Now.AddMilliseconds(millisecondsUntilExpire); var nodeName = loc; var faction = string.Empty; var missionType = string.Empty; var fissure = string.Empty; var minLevel = 0; var maxLevel = 0; var archwingRequired = false; using (var unit = new UnitOfWork(new WarframeDataContext())) { nodeName = unit.WFSolarNodes.GetNodeName(loc); faction = unit.WFSolarNodes.GetFaction(loc); missionType = unit.WFSolarNodes.GetMissionType(loc); minLevel = unit.WFSolarNodes.GetMinLevel(loc); maxLevel = unit.WFSolarNodes.GetMaxLevel(loc); fissure = unit.WFVoidFissures.GetFissureName(jsonFissure["Modifier"].ToString()); archwingRequired = unit.WFSolarNodes.ArchwingRequired(loc); } if (DateTime.Now < expireTime) { var fissureInfo = new MissionInfo(faction, missionType, 0, fissure, 0, minLevel, maxLevel, archwingRequired); currentVoidFissure = new WarframeVoidFissure(fissureInfo, id, nodeName, startTime, expireTime); _voidFissures.Add(currentVoidFissure); #if DEBUG Console.WriteLine("New Fissure Event"); #endif } } _voidFissures.RemoveAll(x => x.ExpireTime < DateTime.Now); if ((currentVoidFissure != null) && (currentVoidFissure.ExpireTime > DateTime.Now)) { resultVoidFissures.Add(currentVoidFissure); } } return(_voidFissures); }