/// <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(); }
/// <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(); }
/// <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); } }
/// <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); } }