Example #1
0
        private static async Task ProcessFile(string file, bool firstFile)
        {
            int      year    = int.Parse(file.Substring(8, 4));
            int      month   = int.Parse(file.Substring(12, 2));
            int      day     = int.Parse(file.Substring(14, 2));
            DateTime logDate = new DateTime(year, month, day);

            Console.WriteLine("\nProcessing File: " + file + $" - { logDate }\n");
            using (StreamReader sr = new StreamReader(file)) {
                while (!sr.EndOfStream)
                {
                    string line = await sr.ReadLineAsync();

                    if (line.StartsWith("{"))
                    {
                        _config = JsonConvert.DeserializeObject <Config>(line);
                        Console.WriteLine("Changing config to: " + line + "\n");
                        continue;
                    }

                    try {
                        Entry entry = new Entry(line, logDate);
                        if (_entries.ContainsKey(entry.Name))
                        {
                            Entry existing = _entries[entry.Name];

                            existing.Analyze(entry);
                        }
                        else if (!firstFile)
                        {
                            //If the member didn't exist in the base snapshot lets create a fake 0 EP entry for them so we can still compare
                            Entry newMember = new Entry(entry);
                            newMember.EP      = 0;
                            newMember.PR      = 0;
                            newMember.GP      = _config.BaseGP;
                            newMember.LogDate = newMember.LogDate - TimeSpan.FromDays(7);

                            newMember.Analyze(entry);
                        }

                        _entries[entry.Name] = entry;
                    }
                    catch (Exception e) {
                        Console.WriteLine("Failed to parse line: " + line + " - " + e);
                    }
                }
            }
        }