Ejemplo n.º 1
0
        private async void MiscellaneousPayment()
        {
            try
            {
                PayOutWindow payOut = new PayOutWindow(tcBitcoin, SelectedKey);

                if (payOut.ShowDialog() == true)
                {
                    Cursor = Cursors.Wait;
                    SpendTx spendTx = await tcBitcoin.PayOutTx(SelectedKey, payOut.PaymentAddress,
                                                               payOut.AmountToPay, payOut.MinerRate, payOut.TxMessage);

                    if (!spendTx.IsSatisfied)
                    {
                        MessageBox.Show(Properties.Resources.UnsatisfiedPayment, payOut.Title, MessageBoxButton.OK, MessageBoxImage.Error);
                        tcBitcoin.PayOutCancel(spendTx);
                    }
                    else
                    {
                        Cursor = Cursors.Arrow;
                        SpendConfirmWindow spendDialog = new SpendConfirmWindow(spendTx);

                        if (spendDialog.ShowDialog() == true)
                        {
                            Cursor = Cursors.Wait;

                            bool broadcast = await spendTx.Send();

                            if (broadcast)
                            {
                                if (tcBitcoin.PayOutMiscNode(spendTx, payOut.AccountCode, payOut.CashCode, payOut.TaxCode, payOut.PaymentReference))
                                {
                                    Refresh();
                                    await RefreshBalance();
                                }
                            }
                            else
                            {
                                tcBitcoin.PayOutCancel(spendTx);
                            }
                        }
                        else
                        {
                            tcBitcoin.PayOutCancel(spendTx);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                MessageBox.Show($"{err.Message}", $"{err.Source}.{err.TargetSite.Name}", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }
Ejemplo n.º 2
0
        private async void PayAccount()
        {
            try
            {
                var              invoice    = (vwInvoicedPayments)dgInvoices.SelectedItem;
                AccountKey       accountKey = (AccountKey)tvWallet.SelectedItem;
                PayAccountWindow payAccount = new PayAccountWindow(tcBitcoin, accountKey, invoice);

                if (payAccount.ShowDialog() == true)
                {
                    Cursor = Cursors.Wait;
                    SpendTx spendTx = await tcBitcoin.PayOutTx(accountKey, payAccount.PaymentAddress,
                                                               payAccount.AmountToPay, payAccount.MinerRate, payAccount.TxMessage);

                    if (!spendTx.IsSatisfied)
                    {
                        MessageBox.Show(Properties.Resources.UnsatisfiedPayment, payAccount.Title, MessageBoxButton.OK, MessageBoxImage.Error);
                        tcBitcoin.PayOutCancel(spendTx);
                    }
                    else
                    {
                        Cursor = Cursors.Arrow;
                        SpendConfirmWindow spendDialog = new SpendConfirmWindow(spendTx);

                        if (spendDialog.ShowDialog() == true)
                        {
                            Cursor = Cursors.Wait;

                            bool broadcast = await spendTx.Send();

                            if (broadcast)
                            {
                                if (tcBitcoin.PayAccountBalanceNode(spendTx, invoice.AccountCode, payAccount.CashCodeForChange))
                                {
                                    Refresh();
                                    OnBalance?.Invoke(this, new EventArgs());
                                }
                            }
                        }
                        else
                        {
                            tcBitcoin.PayOutCancel(spendTx);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                MessageBox.Show($"{err.Message}", $"{err.Source}.{err.TargetSite.Name}", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }
Ejemplo n.º 3
0
        private async void KeyTransfer()
        {
            try
            {
                KeyTransferWindow keyTransfer = new KeyTransferWindow(tcBitcoin, SelectedKey);

                if (keyTransfer.ShowDialog() == true)
                {
                    Cursor = Cursors.Wait;
                    SpendTx spendTx = await tcBitcoin.KeyTransferTx(SelectedKey, GetKey(keyTransfer.KeyNameTo),
                                                                    keyTransfer.TransferAmount, keyTransfer.MinerRate, keyTransfer.TxMessage, keyTransfer.CashCodeFrom, keyTransfer.CashCodeTo);

                    if (!spendTx.IsSatisfied)
                    {
                        MessageBox.Show(Properties.Resources.UnsatisfiedPayment, Title, MessageBoxButton.OK, MessageBoxImage.Error);
                        tcBitcoin.KeyTransferCancel(spendTx);
                    }
                    else
                    {
                        Cursor = Cursors.Arrow;
                        SpendConfirmWindow spendDialog = new SpendConfirmWindow(spendTx);

                        if (spendDialog.ShowDialog() == true)
                        {
                            Cursor = Cursors.Wait;

                            bool broadcast = await spendTx.Send();

                            if (broadcast)
                            {
                                if (tcBitcoin.KeyTransferNode(spendTx, keyTransfer.KeyNameTo, keyTransfer.CashCodeFrom, keyTransfer.CashCodeTo))
                                {
                                    Refresh();
                                    await RefreshBalance();
                                }
                            }
                        }
                        else
                        {
                            tcBitcoin.KeyTransferCancel(spendTx);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                MessageBox.Show($"{err.Message}", $"{err.Source}.{err.TargetSite.Name}", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }