Пример #1
0
        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);
        }
Пример #2
0
        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);
                }
            }
        }