public static void Update() { if (!DownloadFormsIndex()) { return; } var filings = ParseFormsIndex(); var amendments = Get10KAmendments(); if (filings.Count == 0) //If there's no filings relevant to updating the database { Console.WriteLine("No forms have been filed at this time"); return; } var tickersToUpdate = EndingFiscalYearCompanies(); //Queue of companies to DL from Morningstar //var queue = tickersToUpdate.Where(x => filings.Contains(x)).ToList(); var queue = filings.Where(filing => tickersToUpdate.Contains(filing)).ToList(); Console.Write("There "); var count = queue.Count + amendments.Count; Console.Write(count == 1 ? "is " : "are "); Console.Write(count + " ticker"); if (count > 1) { Console.Write("s"); } Console.WriteLine(" in the update queue."); Console.WriteLine("Updating database, please wait..."); //Run add entry command AddEntry.Init(); using (var db = new LiteDatabase(Database)) { var dbKeyRatio = db.GetCollection <KeyRatio>("keyRatios"); foreach (var q in queue) { var r = dbKeyRatio.FindOne(Query.Contains("Cik", q)); if (r == null) { Utility.WriteToLog(q + ": Could not find in database", ErrorLog); } else { AddEntry.Add(r.Ticker, false); } } foreach (var amendment in amendments) { var r = dbKeyRatio.FindOne(Query.Contains("Cik", amendment)); if (r != null) { AddEntry.Add(r.Ticker, true); } } } Utility.PurgeTempDirectory(); Console.WriteLine("Database updated!"); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); /* * Console.WriteLine("Verifying integrity..."); * var list = VerifyFiscalIntegrity(); * if (list.Count != 0) * { * var message = "The following ticker(s) lack financial info:\n"; * using (var db = new LiteDatabase(Database)) * { * var dbKeyRatio = db.GetCollection<KeyRatio>("keyRatios"); * message = list * .Select(l => dbKeyRatio.FindOne(Query.EQ("Cik", l))) * .Aggregate(message, (current, r) => current + r.Ticker + "\n"); * } * Utility.WriteToLog(message, "FiscalIntegrityAnalysisError.txt"); * Console.WriteLine("Some companies are missing information."); * Console.WriteLine("More information written to desktop"); * } * else * { * Console.WriteLine("Database integrity analysis successful!"); * } */ }