/// <summary> /// Fires when a user wants to delete some transactions /// </summary> private void ctxDeleteTransactionConfirm_Click(object sender, EventArgs e) { gvTransactions.Enabled = false; gvAccounts.Enabled = false; btnRefreshTrans.Enabled = false; btnResetTrans.Enabled = false; Task.Factory.StartNew(() => { int count = gvTransactions.SelectedRows.Count; for (int i = 0; i < gvTransactions.SelectedRows.Count; i++) { DataGridViewRow selectedItem = gvTransactions.SelectedRows[i]; if (selectedItem.DataBoundItem != null) { Journal.XTransaction selectedTrans = selectedItem.DataBoundItem as Journal.XTransaction; if (selectedTrans != null) { //invoke GUI updates on gui thread this.MainThreadInvoke(() => { lblStatus.Text = string.Format("Deleted transaction {0} for {1}", selectedTrans.BankAccountTransactionK, ((Money)selectedTrans.Amount).ToLongString(true)); toolStripProgressBar1.Value = Convert.ToInt32(((double)i / (double)count) * 100); }); ((XElement)selectedTrans).Remove(); } } } }).ContinueWith((task) => { this.MainThreadInvoke(() => { AccountSummary summary = gvAccounts.SelectedRows[0].DataBoundItem as AccountSummary; Journal.XBankAccount selectedUserAccount = Journal.TransactionJournal.GetBankAccount(summary.Value); if (selectedUserAccount != null) { selectedUserAccount.SyncBalanceAsync().ContinueWith((t) => { AccountSummary selectedSummary = accList.FirstOrDefault(i => i.Value == selectedUserAccount.BankAccountK); if (summary != null) { summary.Balance = selectedUserAccount.Balance; } }); } toolStripProgressBar1.Value = 100; gvTransactions.Enabled = true; gvAccounts.Enabled = true; btnRefreshTrans.Enabled = true; btnResetTrans.Enabled = true; btnShowFrom.Enabled = true; LoadTransactionsForUser(summary.Value); }); }); }
void LoadTransactionsForUser(string BankAccountK) { Journal.XBankAccount selectedAccount = Journal.TransactionJournal.GetBankAccount(BankAccountK); var qTransactions = (from i in Journal.TransactionJournal.Transactions where i.BankAccountFK == BankAccountK orderby i.TransactionDateUtc select i).ToArray(); gvTransactions.DataSource = null; gvTransactions.DataSource = qTransactions; tranList = Journal.TransactionJournal.Transactions.ToList(); lblStatus.Text = string.Format("Loaded {0} transactions for {1}.", qTransactions.Count(), BankAccountK); if (selectedAccount.Owner != null) { lblOnline.Text = "Online"; lblOnline.ForeColor = System.Drawing.Color.DarkGreen; } else { lblOnline.Text = "Offline"; lblOnline.ForeColor = System.Drawing.Color.Red; } selectedAccount.SyncBalanceAsync().ContinueWith((task) => { AccountSummary summary = accList.FirstOrDefault(i => i.Value == BankAccountK); if (summary != null) { summary.Balance = selectedAccount.Balance; } lblBalance.Text = selectedAccount.Balance.ToLongString(true); lblName.Text = string.Format("{0}, acccount ID {1}", selectedAccount.UserAccountName, selectedAccount.BankAccountK); }); }
private void btnResetTrans_Click(object sender, EventArgs e) { if (MessageBox.Show("This will delete all transactions for this user. This could take a long time and SEconomy performance could be impacted. The user's balance will be reset to 0 copper.", "Delete all Transactions", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.Yes) { gvTransactions.Enabled = false; gvAccounts.Enabled = false; btnRefreshTrans.Enabled = false; btnResetTrans.Enabled = false; btnShowFrom.Enabled = false; lblStatus.Text = "Resetting all transactions for " + currentlySelectedAccount.Name; toolStripProgressBar1.Value = 0; toolStripProgressBar1.Style = ProgressBarStyle.Marquee; Task.Factory.StartNew(() => { Journal.TransactionJournal.XmlJournal.Element("Journal").Element("Transactions").Elements("Transaction").Where(i => i.Attribute("BankAccountFK").Value == currentlySelectedAccount.Value).Remove(); List <Journal.XTransaction> tranList = Journal.TransactionJournal.Transactions.Where(i => i.BankAccountFK == currentlySelectedAccount.Value).ToList(); int count = tranList.Count(); for (int i = 0; i < count; i++) { Journal.XTransaction selectedTrans = Journal.TransactionJournal.Transactions.FirstOrDefault(x => x.BankAccountTransactionK == tranList.ElementAt(i).BankAccountTransactionK); if (selectedTrans != null) { //invoke GUI updates on gui thread this.MainThreadInvoke(() => { lblStatus.Text = string.Format("Deleted transaction {0} for {1}", selectedTrans.BankAccountTransactionK, ((Money)selectedTrans.Amount).ToLongString(true)); toolStripProgressBar1.Value = Convert.ToInt32(((double)i / (double)count) * 100); }); ((XElement)selectedTrans).Remove(); } } }).ContinueWith((task) => { Journal.XBankAccount selectedUserAccount = Journal.TransactionJournal.GetBankAccount(currentlySelectedAccount.Value); if (selectedUserAccount != null) { selectedUserAccount.SyncBalanceAsync().ContinueWith((t) => { AccountSummary summary = accList.FirstOrDefault(i => i.Value == selectedUserAccount.BankAccountK); if (summary != null) { summary.Balance = selectedUserAccount.Balance; } this.MainThreadInvoke(() => { toolStripProgressBar1.Value = 100; toolStripProgressBar1.Style = ProgressBarStyle.Continuous; gvTransactions.Enabled = true; gvAccounts.Enabled = true; btnRefreshTrans.Enabled = true; btnResetTrans.Enabled = true; //force the bindinglist to raise the reset event updating the right hand side accList.ResetBindings(); LoadTransactionsForUser(currentlySelectedAccount.Value); }); }); } }); } }