static void FillModel(IList <string> values, CurrencyDetails model, ModelIndexes indexes, string code) { DateTime forDate; DateTime.TryParse(values[indexes.ForDate], out forDate); model.Date = forDate; uint coins; if (indexes.Coins != -1) { uint.TryParse(values[indexes.Coins].Split('.')[0], out coins); model.Coins = coins; } decimal marketCap; decimal.TryParse(values[indexes.MarketCap], NumberStyles.Any, CultureInfo.InvariantCulture, out marketCap); model.MarketCap = marketCap; decimal price; decimal.TryParse(values[indexes.Price], NumberStyles.Any, CultureInfo.InvariantCulture, out price); model.Price = price; }
public IEnumerable <CurrencyDetails> GetDetails(string currencyCode) { if (null == currencyCode || !currencyCodes.ContainsKey(currencyCode)) { yield break; } lock (LockObject) { using (var f = File.OpenText(Path.Combine(tempDir, currencyCode + ".csv"))) { var headerLine = f.ReadLine(); var indexes = FillModelIndexer(headerLine); if (null != indexes) { while (!f.EndOfStream) { var line = f.ReadLine(); if (!string.IsNullOrWhiteSpace(line)) { var currentValues = line.Split(','); if (currentValues.Length > indexes.Ceiling) { var model = new CurrencyDetails(); FillModel(currentValues, model, indexes, currencyCode); yield return(model); } else { Debug.Assert(true); } } } } else { Debug.Assert(true); } } } }