private void ParseSecuritiesHolding(string[] lineFields, ref Portfolio portfolio) { string symbol = lineFields[0]; decimal lastPrice = Convert.ToDecimal(lineFields[1]); decimal quantity = Convert.ToDecimal(lineFields[5]); portfolio.AddHolding(m_SymbolMapper.GetAllocationType(symbol), symbol, lastPrice, quantity); }
private void ParseCashHolding(string[] lineFields, ref Portfolio portfolio) { string symbol = lineFields[0]; decimal price = new decimal(1.0); decimal cashValue = Convert.ToDecimal(lineFields[1]); portfolio.AddHolding(AllocationType.Cash, symbol, price, cashValue); }
private void ParseHolding(string[] lineFields, ref Portfolio portfolio) { switch(lineFields.Length) { case 2: ParseCashHolding(lineFields, ref portfolio); break; case 10: ParseSecuritiesHolding(lineFields, ref portfolio); break; }; }
public Portfolio LoadPortfolioFromCsv(string filePath, DesiredPortfolio desiredPortfolio) { string[] fileLines = ReadFileLines(filePath); Portfolio portfolio = new Portfolio(desiredPortfolio); // Allocations begin at line #11 const int allocationStartLine = 11; string[] splitStrings = new[] { "\",\"", "\",", ",\"", "\"", ";"}; for (int index = allocationStartLine; index < fileLines.Length; ++index) { // Clean up the lines string line = fileLines[index]; string[] lineFields = line.Split(splitStrings, StringSplitOptions.RemoveEmptyEntries); // Try to parse them into the portfolio ParseHolding(lineFields, ref portfolio); } return portfolio; }