private static ErrorCode QuickFundbotValueReportOperation(string portfolioName) { var dataDir = Path.GetFullPath(Environment.ExpandEnvironmentVariables(Configuration.DataDirectoryPath)); if (!Directory.Exists(dataDir)) { Console.Error.WriteLine("Data directory at {0} does not exist.", dataDir); return(ErrorCode.DirectoryMissing); } var fundbotBuysFile = Path.Combine(dataDir, "buys.csv"); if (!File.Exists(fundbotBuysFile)) { Console.Error.WriteLine("Fundbot file at {0} does not exist.", fundbotBuysFile); return(ErrorCode.FileMissing); } var factory = new DataImporterFactory(); var fundBotImporter = factory.GetFundbotTransactions(fundbotBuysFile); var transactions = fundBotImporter.GetTransactions(); var account = new Account { Name = portfolioName }; var portfolio = new Portfolio { Name = portfolioName, Accounts = new List <Account> { account } }; account.Portfolio = portfolio; foreach (var transaction in transactions) { transaction.Account = account; } var portfolioService = new PortfolioService(portfolio); portfolioService.UpdateWith(transactions); var quoter = new YahooStockService(new YahooServiceFactory()); var reporter = new StringValueReporter(quoter); var report = reporter.GetReport(portfolio); Console.Write(report); return(ErrorCode.NoError); }
public TaxReturn(string filePath, TaxUniverse universe) { using var reader = new StreamReader(filePath); var doc = XDocument.Load(reader, LoadOptions.SetLineInfo); this.Year = doc.Root.IntAttributeValue("Year"); this.Status = doc.Root.EnumAttributeValue <FilingStatus>("FilingStatus"); this.Forms = new(); TaxYearDef = universe.TaxYears[Year]; foreach (var node in doc.Root.Elements()) { switch (node.Name.LocalName) { case "Form": var formInst = new FormInstance(node, TaxYearDef); AddForm(formInst); break; case "DataImporters": foreach (var el in node.Elements()) { var dataImporter = DataImporterFactory.Create(el.Name.LocalName, el.AttributeValue("File")); foreach (var f in dataImporter.GetForms(TaxYearDef.Year)) { AddForm(f.ConvertToFormInstance(TaxYearDef)); } } break; default: throw new FileLoadException(node, "Unkown node name: " + node.Name); } } }