public FutureCode(string futureCode, int yearBeforeWhich2DigitDatesAreUsed, IFutureSettingsProvider futureSettings) { OriginalCode = futureCode; YearBeforeWhich2DigitDatesAreUsed = yearBeforeWhich2DigitDatesAreUsed; _futureSettingsProvider = futureSettings; //Find the last number var i = 0; int tempNumber; for (i = futureCode.Length; i >= 0; i--) { if (int.TryParse(futureCode[i - 1].ToString(), out tempNumber)) { break; } } //Now we have the index we can hack the end off Postfix = futureCode.Substring(i); futureCode = futureCode.Substring(0, i); //Find when the numbers end for (i = futureCode.Length; i >= 0; i--) { if (!int.TryParse(futureCode[i - 1].ToString(), out tempNumber)) { break; } } YearCode = futureCode.Substring(i); YearNumber = int.Parse(YearCode); YearNumberShort = YearNumber; futureCode = futureCode.Substring(0, i); MonthCode = futureCode[futureCode.Length - 1].ToString(); Prefix = futureCode.Substring(0, futureCode.Length - 1); if (!futureSettings.TryGet(Prefix, out _settings)) { ContractCode = Prefix.ToUpper().Trim(); _settings = futureSettings[ContractCode]; } MonthNumber12 = s_futureMonths.ToList().IndexOf(MonthCode) + 1; MonthNumber = _settings.Months.IndexOf(MonthCode) + 1; ConvertYearCode(); }
public FutureCode(string futureCodeRoot, IFutureSettingsProvider futureSettings) { _settings = futureSettings[futureCodeRoot]; _futureSettingsProvider = futureSettings; Prefix = futureCodeRoot; }