示例#1
0
        public void Withdraw()
        {
            var utility = new Utility();

            Console.WriteLine("Bạn muốn gửi bao nhiêu tiền :");
            var amount = utility.getDecimal();

            Console.WriteLine("Nội dung giao dịch:");
            var           content       = Console.ReadLine();
            SPHTransation sphTransation = new SPHTransation()
            {
                Id                    = Guid.NewGuid().ToString(),
                Content               = content,
                Amount                = amount,
                SenderAccountNumber   = Program.currentSphLoggedAccount.AccountNumber,
                RecevierAccountNumber = Program.currentSphLoggedAccount.AccountNumber,
                Type                  = SPHTransation.TransactionType.WITHDRAW,
                Status                = SPHTransation.ActiveStatus.DONE
            };

            if (model.Deposit(Program.currentSphLoggedAccount, sphTransation))
            {
                Console.WriteLine("Giao dịch thành công");
            }
            else
            {
                Console.WriteLine("Giao dịch không thành công");
            }
        }
        public bool Deposit(SPHAccount currentSphLoggedAccount, SPHTransation sphTransation)
        {
            DbConnection.Instance().OpenConnection();
            var transaction = DbConnection.Instance().Connection.BeginTransaction();

            try
            {
                var queryCheckBalance =
                    "select balance from `account` where accountNumber = @accountNumber and status = 1";
                var command = new MySqlCommand(queryCheckBalance, DbConnection.Instance().Connection);
                command.Parameters.AddWithValue("@accountNumber", Program.currentSphLoggedAccount.AccountNumber);
                var     reader         = command.ExecuteReader();
                decimal currentBalance = 0;
                if (reader.Read())
                {
                    currentBalance = reader.GetDecimal("balance");
                }

                if (sphTransation.Type == SPHTransation.TransactionType.WITHDRAW &&
                    currentBalance < sphTransation.Amount)
                {
                    Console.WriteLine("Số dư tài khoản hiện");
                }

                if (sphTransation.Type == SPHTransation.TransactionType.WITHDRAW)
                {
                    currentBalance -= sphTransation.Amount;
                }

                if (sphTransation.Type == SPHTransation.TransactionType.DEPOSIT)
                {
                    currentBalance += sphTransation.Amount;
                }

                var updateCurrentBalance = 0;
                var updateBalance        =
                    "update `account` set balance =@balance where accountNumber =@accountNumber and status =1";
                var updatecmd = new MySqlCommand(updateBalance, DbConnection.Instance().Connection);
                updatecmd.Parameters.AddWithValue("@balance", currentBalance);
                updatecmd.Parameters.AddWithValue("@accountNumber", Program.currentSphLoggedAccount.AccountNumber);
                updateCurrentBalance = updatecmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                transaction.Rollback();
                throw;
            }
            finally
            {
                DbConnection.Instance().CloseConnection();
            }


            return(false);
        }
        public void saveDB(SPHTransation transation)
        {
            var cnnString = string.Format("Server={0};Database={1};Uid={2};Pwd={3};SslMode=none", server,
                                          nameDB, userName, password);
            var con = new MySqlConnection();

            con.Open();
            MySqlCommand msd = new MySqlCommand(
                "insert into students(id,amount,content,senderAccountNumber,recevierAccountNumber,type,createAt,status) " +
                " values(@id, @amount, @content,@senderAccountNumber,@senderAccountNumber,@type,@createAt,@status)",
                con);

            msd.Parameters.AddWithValue("@id", transation.Id);
            msd.Parameters.AddWithValue("@amount", transation.Amount);
            msd.Parameters.AddWithValue("@content", transation.Content);
            msd.Parameters.AddWithValue("@senderAccountNumber", transation.SenderAccountNumber);
            msd.Parameters.AddWithValue("@recevierAccountNumber", transation.RecevierAccountNumber);
            msd.Parameters.AddWithValue("@type", transation.Type);
            msd.Parameters.AddWithValue("@createAt", transation.CreateAt);
            msd.Parameters.AddWithValue("@status", transation.Status);
            msd.ExecuteNonQuery();
            con.Clone();
        }