Example #1
0
        private void btnTransferir_Click(object sender, EventArgs e)
        {
            Conta origem  = (Conta)cbOrigem.SelectedItem;
            Conta destino = (Conta)cbDestino.SelectedItem;

            if (origem.Numero == destino.Numero)
            {
                MessageBox.Show("Origem e destino são iguais.");
                return;
            }

            Double valor = Convert.ToDouble(txtValor.Text);

            SqlConnection  conexao = FabricaConexao.ObterConexao();
            SqlTransaction tx      = conexao.BeginTransaction();

            try
            {
                ContaDAO contaDAO = new ContaDAO(conexao, tx);
                contaDAO.Sacar(origem.Numero, valor);
                contaDAO.Depositar(destino.Numero, valor);
                tx.Commit();

                MessageBox.Show("Transferência feita com sucesso!");
            }
            catch (Exception ex)
            {
                tx.Rollback();
                MessageBox.Show("Falha na transferência!");
            }
            finally
            {
                FabricaConexao.FecharConexao(conexao);
            }

            // Não sacar e transferir para a mesma conta.
            // Abrir uma conexao e repassar para o DAO junto com a transação.
        }