private void DoRead() { dcf.TryWrite(settings); using (mItems.DeferBinding()) { mItems.Clear(); var dir = new DirectoryInfo(settings.RepositoryPath); var separator = Path.DirectorySeparatorChar.ToString(); foreach (var cro in dir.EnumerateFiles("cro.xml", SearchOption.AllDirectories)) { var info = new CroInfo(cro.FullName); info.Read(); var name = cro.Directory.FullName.Replace(dir.FullName, string.Empty); if (name.StartsWith(separator)) { name = name.Substring(1); } mItems.Add(new CroInfoViewModel(name, info)); } } RefreshCommands(); }
private void LoadPatterns() { using (mPatterns.DeferBinding()) { mPatterns.Clear(); mPatterns.AddRange(mInfo.Patterns.Select(p => new CroPatternViewModel(mPatterns, p))); } }
private void CalculateResults() { using (items.DeferBinding()) { items.Clear(); var start = calStartDate.Value.Date; var end = GetEndDate(start); var date = start; var deposit = (decimal)numDepositAmount.Value; var balance = (decimal)numStartingBalance.Value; var percentage = (decimal)numInterest.Value / 1200m; var interest = 0m; items.Add(new TransactionItem { Amount = balance, Balance = balance, Date = start, Type = TransactionItemType.SetBalance, }); var nullFrequency = cboFrequency.SelectedValue as Frequency?; var frequency = nullFrequency.GetValueOrDefault(Frequency.Biweekly); Func <DateTime, DateTime> morph = null; switch (frequency) { case Frequency.Biweekly: morph = (x) => x.AddDays(14); break; case Frequency.Daily: morph = (x) => x.AddDays(1); break; case Frequency.Monthly: morph = (x) => x.AddMonths(1); break; case Frequency.Weekly: morph = (x) => x.AddDays(7); break; default: morph = (x) => x.AddYears(1); break; } var qualifyingDates = new List <DateTime>(); for (date = start; date <= end; date = morph(date)) { qualifyingDates.Add(date); } for (date = start; date <= end; date = date.AddDays(1)) { if (qualifyingDates.Count > 0 && qualifyingDates[0] == date) { balance += deposit; items.Add(new TransactionItem { Amount = deposit, Balance = balance, Date = date, Type = TransactionItemType.Deposit, }); qualifyingDates.RemoveAt(0); } if (IsLastDayOfMonth(date)) { interest = balance * percentage; interest = Math.Truncate(interest * 100m) / 100m; balance += interest; items.Add(new TransactionItem { Amount = interest, Balance = balance, Date = date, Type = TransactionItemType.Interest, }); } } } }