Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 private void LoadPatterns()
 {
     using (mPatterns.DeferBinding())
     {
         mPatterns.Clear();
         mPatterns.AddRange(mInfo.Patterns.Select(p => new CroPatternViewModel(mPatterns, p)));
     }
 }
Ejemplo n.º 3
0
        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,
                        });
                    }
                }
            }
        }