private static string ProcessEventLog() { List<string> emailerInfo = new List<string>(); try { emailerInfo = FileReader.ReadFile(GetSettingPath("EmailerFile", "testdata/emailer.txt"), 0); } catch (Exception ex) { Console.WriteLine("Error reading emailer.txt: " + ex.ToString()); return null; } try { _Emailer = new EmailUtility(int.Parse(GetSetting("WaitTimeBetweenSends", "2000"))); } catch (Exception ex) { Console.WriteLine("Error setting up smtp client: " + ex.ToString()); return null; } string lastEventProcessed = null; if (emailerInfo.Count > 0) lastEventProcessed = emailerInfo[0]; // Read event log List<string> eventInfo = new List<string>(); try { eventInfo = FileReader.ReadFile(GetSettingPath("EventFile", "testdata/event.txt"), 0); } catch (Exception ex) { Console.WriteLine("Error reading event.txt: " + ex.ToString()); return null; } // Truncate at last line processed last time this utility was run List<string> newEvents = new List<string>(); foreach (string line in eventInfo) { if (!string.IsNullOrEmpty(lastEventProcessed) && line == lastEventProcessed) break; newEvents.Add(line); } newEvents.Reverse(); // What was the turn number for the last event processed? int lastTurnProcessed = 0; if (!string.IsNullOrEmpty(lastEventProcessed)) { lastTurnProcessed = new EventLine(lastEventProcessed, null).Turn; } // Process new lines string lastLineProcessed = null; foreach (string eventLine in newEvents) { EventLine evt = new EventLine(eventLine, null); if (evt.Turn > lastTurnProcessed) { if (!SendTurnRollEmail(evt.Turn)) return lastLineProcessed; lastTurnProcessed = evt.Turn; } else if (evt.Turn >= 0 && evt.Turn < lastTurnProcessed) { if (!SendReloadDetectedEmail(evt.Turn)) return lastLineProcessed; lastTurnProcessed = evt.Turn; } lastLineProcessed = eventLine; } return lastLineProcessed; }
private List<EventLine> ShowEvents() { List<string> eventInfo = new List<string>(); try { eventInfo = FileReader.ReadFile(GetSettingPath("EventFile", "testdata/event.txt"), int.Parse(GetSetting("EventCutoff", "100"))); } catch (Exception ex) { litEventLog.Text = "Error reading event.txt: " + ex.Message; } List<EventLine> eventLines = new List<EventLine>(); int utcOffset = int.Parse(GetSetting("SystemTimeUTCOffset", "1")); foreach (string line in eventInfo) { EventLine evt = new EventLine(line, _selectedTimeZone, utcOffset); eventLines.Add(evt); } var PlayerNames = new Dictionary<int, string>(); var newEvents = new List<EventLine>(); eventLines.Reverse(); int currentTurn = -1; foreach (var evt in eventLines) { if (currentTurn != -1) { if (evt.Turn > currentTurn) newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, "", "turnroll", "A new turn has begun. It is now turn " + evt.Turn + ".", -1, evt.Turn)); if (evt.Turn < currentTurn) newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, "", "reload", "A reload has been detected. It is now turn " + evt.Turn + ".", -1, evt.Turn)); } currentTurn = evt.Turn; if (PlayerNames.ContainsKey(evt.PlayerId)) { if (PlayerNames[evt.PlayerId] != evt.PlayerName) { newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, evt.PlayerName, "namechange", PlayerNames[evt.PlayerId] + " changed name to " + evt.PlayerName, evt.PlayerId, evt.Turn)); PlayerNames[evt.PlayerId] = evt.PlayerName; } } else { PlayerNames[evt.PlayerId] = evt.PlayerName; } if (evt.EventType == "scorechange") { var lastScoreEvent = newEvents.LastOrDefault(e => e.EventType == "scorechange" && e.PlayerId == evt.PlayerId); if (lastScoreEvent != null) evt.LastScore = lastScoreEvent.Score; } newEvents.Add(evt); } newEvents.Reverse(); if (newEvents.Count > 0) { var eventHtml = ""; foreach (var evt in newEvents) { eventHtml += evt.ToHtml() + "\n"; } litEventLog.Text = eventHtml; } return newEvents; }