/// <summary>
        /// Handles navigating to the <see cref="Views.ExpenseEdit"/>
        /// </summary>
        /// <param name="sender">The sender object</param>
        /// <param name="e">Event arguments</param>
        public static void EditButtonClicked(object sender, EventArgs e)
        {
            if (ExpenseEdit == null)
            {
                ExpenseEdit             = new ExpenseEdit();
                ExpenseEdit.FormClosed += ExpenseEditViewOnFormClosed;
            }

            var selectedListItems = ExpenseView.ExpenseListView.SelectedItems;

            if (selectedListItems.Count > 0)
            {
                var selectedItem = selectedListItems[0];
                var expenseId    = Guid.Parse(selectedItem.SubItems[0].Text);
                var expense      = ListAccessHelper.FindExpense(expenseId);

                EditExpense = expense;
            }
            else
            {
                EditExpense = null;
            }

            ExpenseEdit.Show(ExpenseView);
            ExpenseView.Hide();
        }
        /// <summary>
        ///  Handles the <see cref="Views.IncomeEdit"/> form being opened from the <see cref="Views.IncomeView"/> form
        /// </summary>
        /// <param name="sender">The sender object</param>
        /// <param name="e">Event arguments</param>
        public static void EditButtonClicked(object sender, EventArgs e)
        {
            if (IncomeEdit == null)
            {
                IncomeEdit             = new IncomeEdit();
                IncomeEdit.FormClosed += IncomeEditViewOnFormClosed;
            }

            var selectedListItems = IncomeView.IncomeListView.SelectedItems;

            if (selectedListItems.Count > 0)
            {
                var selectedItem = selectedListItems[0];
                var incomeId     = Guid.Parse(selectedItem.SubItems[0].Text);
                var income       = ListAccessHelper.FindIncome(incomeId);

                EditIncome = income;
            }
            else
            {
                EditIncome = null;
            }

            IncomeEdit.Show(IncomeView);
            IncomeView.Hide();
        }
Пример #3
0
        /// <summary>
        ///  Handles opening a <see cref="Views.PayeeEdit"/> form being opened from a <see cref="PayeeViewForm"/> forms
        /// </summary>
        /// <param name="sender">The sender object</param>
        /// <param name="e">Event arguments</param>
        public static void EditPayeeClick(object sender, EventArgs e)
        {
            if (PayeeEdit == null)
            {
                PayeeEdit             = new PayeeEdit();
                PayeeEdit.FormClosed += PayeeEditViewOnFormClosed;
            }

            var selectedItems = PayeeView.payeeListView.SelectedItems;

            if (selectedItems.Count > 0)
            {
                var selecteditem = selectedItems[0];
                var payeeId      = Guid.Parse(selecteditem.SubItems[0].Text);
                var payee        = ListAccessHelper.FindPayee(payeeId);

                EditPayee = payee;
            }
            else
            {
                EditPayee = null;
            }

            PayeeEdit.Show(PayeeView);
            PayeeView.Hide();
        }
Пример #4
0
        /// <summary>
        /// Calculates the current balance based on <see cref="Expense"/> and <see cref="Income"/> records
        /// </summary>
        private static void CalculateBalance()
        {
            var nonRecurringIncome  = 0.00m;
            var recurringIncome     = 0.00m;
            var nonRecurringExpense = 0.00m;
            var recurringExpense    = 0.00m;

            for (var index = 0; index < ListAccessHelper.IncomeList.Count; index++)
            {
                var income = ListAccessHelper.IncomeList[index];
                if (income.InitialPaidDate > DateTime.UtcNow)
                {
                    continue;
                }

                if (income.IsRecurring)
                {
                    recurringIncome += CalculateRecurringIncome(income);
                    ListAccessHelper.IncomeList[ListAccessHelper.IncomeList.IndexOf(income)] = income;
                    DA.EditIncome(income, income.Id);
                }
                else
                {
                    nonRecurringIncome += CalculateIncome(income);
                }
            }

            for (var index = 0; index < ListAccessHelper.ExpenseList.Count; index++)
            {
                var expense = ListAccessHelper.ExpenseList[index];
                if (expense.InitialPaidDate > DateTime.UtcNow)
                {
                    continue;
                }

                if (expense.IsRecurring)
                {
                    recurringExpense += CalculateRecurringExpense(expense);
                    ListAccessHelper.ExpenseList[ListAccessHelper.ExpenseList.IndexOf(expense)] = expense;
                    DA.EditExpense(expense, expense.Id);
                }
                else
                {
                    nonRecurringExpense += CalculateExpense(expense);
                }
            }

            ListAccessHelper.IncrementBalance(recurringIncome);
            ListAccessHelper.IncrementBalance(nonRecurringIncome);
            ListAccessHelper.DecrementBalance(recurringExpense);
            ListAccessHelper.DecrementBalance(nonRecurringExpense);

            XmlDA.SaveXml();
        }
        /// <summary>
        /// Handles retrieving all <see cref="Income"/> records from the database
        /// </summary>
        /// <returns>A list of <see cref="Income"/> objects</returns>
        public async Task <List <Income> > GetIncomes()
        {
            try
            {
                using (Conn)
                    using (var comm = Conn.CreateCommand())
                    {
                        await Conn.OpenAsync();

                        comm.CommandText = "SELECT * FROM income";

                        var incomes = new List <Income>();
                        var reader  = comm.ExecuteReader();

                        while (reader.ReadAsync().Result)
                        {
                            var income = new Income
                            {
                                Id              = reader.GetGuid(0),
                                Payer           = ListAccessHelper.FindPayer(reader.GetGuid(1)),
                                Ref             = reader.GetString(2),
                                Amount          = reader.GetDecimal(3),
                                IsRecurring     = reader.GetBoolean(4),
                                Interval        = reader.GetInt32(5),
                                InitialPaidDate = reader.GetDateTime(6),
                                LastPaidDate    = reader.GetDateTime(7)
                            };

                            incomes.Add(income);
                        }

                        await Conn.CloseAsync();

                        return(incomes);
                    }
            }
            catch (Exception ex)
            {
                throw new Exception("An error occurred retrieving incomes from the database", ex);
            }
        }
        /// <summary>
        /// Handles deleting an <see cref="Income"/> record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void DeleteIncome(object sender, EventArgs e)
        {
            try
            {
                var selectedListItems = IncomeView.IncomeListView.SelectedItems;

                if (selectedListItems.Count > 0)
                {
                    var selectedItem = selectedListItems[0];
                    var incomeId     = Guid.Parse(selectedItem.SubItems[0].Text);
                    var income       = ListAccessHelper.FindIncome(incomeId);

                    ListAccessHelper.IncomeList.Remove(income);
                    XmlDA.SaveXml();
                    DA.DeleteIncome(incomeId);
                    PopulateListView();
                }
            }
            catch (Exception ex)
            {
                ErrorHelper.SendError(ex);
            }
        }
Пример #7
0
        /// <summary>
        /// Handles deleting a <see cref="Payer"/> record
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void DeletePayer(object sender, EventArgs e)
        {
            try
            {
                var selectedListItems = PayerView.PayerListView.SelectedItems;

                if (selectedListItems.Count > 0)
                {
                    var selectedItem = selectedListItems[0];
                    var payerId      = Guid.Parse(selectedItem.SubItems[0].Text);
                    var payer        = ListAccessHelper.FindPayer(payerId);

                    ListAccessHelper.PayerList.Remove(payer);
                    XmlDA.SaveXml();
                    DA.DeletePayer(payerId);
                    PopulateListView();
                }
            }
            catch (Exception ex)
            {
                ErrorHelper.SendError(ex);
            }
        }