Пример #1
0
        private void RefreshPage()
        {
            if (_skipRefreshing)
            {
                return;
            }

            //i wonder if i'll ever notice how slow this is..
            YearTop localYt;

            if (_dateSelected > DateTime.Today)
            {
                localYt = _year.Copy();
                localYt.FastForward(_dateSelected);
                _fastForwardNoEditing = true;
            }
            else
            {
                localYt = _year;
                _fastForwardNoEditing = false;
            }

            //using accountsLv here so the order matches up
            //accountsLv is for name & selection
            //accountInfoLv is to display any info for each of those accounts
            accountInfoLv.Items.Clear();
            foreach (ListViewItem item in accountsLv.Items)
            {
                if (item == null)
                {
                    continue;
                }
                ListViewItem lvi = new ListViewItem(localYt.GetAccount(item.Text).GetBalance(_dateSelected).ToString());
                lvi.SubItems.Add(localYt.GetAccount(item.Text).StartingDate.ToShortDateString());
                accountInfoLv.Items.Add(lvi);
            }

            var softBillUsage = localYt.GetSoftBillUsed(_monthSelected);

            softBillsLbl.Text = string.Format("Soft Bills Month: {0}", Months[_monthSelected]);
            //update softbilllbl
            softBillsLv.Items.Clear();
            foreach (var softBill in localYt.GetSoftBillGroup(_monthSelected))
            {
                ListViewItem lvi = new ListViewItem(softBill.Key);
                lvi.SubItems.Add(softBill.Value.ToString());
                lvi.SubItems.Add((softBill.Value - softBillUsage[softBill.Key]).ToString());
                lvi.Tag = softBill.Value;
                softBillsLv.Items.Add(lvi);
            }

            transactionsLv.Items.Clear();
            List <Transaction> displayTransactions = new List <Transaction>();
            var accountNames = localYt.GetAccountsNames();

            if (accountNames.Contains(_selectedAccountName))
            {
                IAccountBase selectedAccount = localYt.GetAccount(_selectedAccountName);

                if (_allDatesTransactions)
                {
                    displayTransactions = selectedAccount.GetTransactions().ToList();
                }
                else
                {
                    displayTransactions = selectedAccount.GetTransactions().Where(p => (p.Date.Month == _dateSelected.Month)).ToList();
                }

                foreach (var t in displayTransactions.OrderBy(t => t.Date).ToList())
                {
                    ListViewItem lvi = new ListViewItem(t.Description);
                    lvi.SubItems.Add(t.Amount.ToString());
                    lvi.SubItems.Add(selectedAccount.Name); //subitems 2?
                    lvi.SubItems.Add(t.Date.ToShortDateString());
                    lvi.Tag = t;
                    if (t.Date < selectedAccount.StartingDate)
                    {
                        lvi.BackColor = Color.LightGray;
                    }
                    transactionsLv.Items.Add(lvi);
                }
            }

            hardBillsLv.Items.Clear();
            var hbList = localYt.GetHardBills();

            hbList.Sort((pair1, pair2) => pair1.NextBillDue.CompareTo(pair2.NextBillDue));
            int count = 0;

            foreach (var hb in hbList)
            {
                ListViewItem lvi = new ListViewItem(hb.Name);
                lvi.SubItems.Add(hb.Amount.ToString());
                lvi.SubItems.Add(hb.NextBillDue.ToShortDateString());
                if ((hb.AutoPay == false) && (hb.NextBillDue <= _dateSelected))
                {
                    lvi.BackColor = Color.Red;
                }
                else if (hb.AutoPay)
                {
                    lvi.BackColor = Color.LightGreen;
                }
                hardBillsLv.Items.Add(lvi);

                count++;
                if (count > 5)
                {
                    break;
                }
            }

            incomeLv.Items.Clear();
            var incomeList = localYt.GetIncomeSources();

            incomeList.Sort((pair1, pair2) => pair1.NextDeposit.CompareTo(pair2.NextDeposit));
            count = 0;
            foreach (var income in incomeList)
            {
                ListViewItem lvi = new ListViewItem(income.Name);
                lvi.SubItems.Add(income.PaydayAmount.ToString());
                lvi.SubItems.Add(income.NextDeposit.ToShortDateString());
                incomeLv.Items.Add(lvi);

                count++;
                if (count > 5)
                {
                    break;
                }
            }
        }