public bool SaveAccount(object obj) { var _connection = ConnectionHelper.GetConnection(); var sqlQuery = SqlStringUtil.InsertString(obj.GetType()); var shbAccount = (SHBAccount)obj; Console.WriteLine(sqlQuery); var cmd = new MySqlCommand(sqlQuery, _connection); cmd.Parameters.AddWithValue("@Username", shbAccount.Username); cmd.Parameters.AddWithValue("@AccountNumber", shbAccount.AccountNumber); cmd.Parameters.AddWithValue("@Balance", shbAccount.Balance); cmd.Parameters.AddWithValue("@Password", shbAccount.Password); cmd.Parameters.AddWithValue("@CreatedAtMLS", shbAccount.CreatedAtMLS); cmd.Parameters.AddWithValue("@UpdatedAtMLS", shbAccount.UpdatedAtMLS); if (cmd.ExecuteNonQuery() == 1) { _connection.Close(); return(true); } _connection.Close(); return(false); }
public CashFlowFixMapper(XPObjectSpace objSpace) { this.objSpace = objSpace; var sqlStringUtil = new SqlStringUtil(); this.SqlDeclareClauses = CreateSqlDeclareClauses(); }
private void BeforeProcess(CriteriaOperator criteria) { var util = new SqlStringUtil(); var conn = (SqlConnection)objSpace.Session.Connection; var command = conn.CreateCommand(); command.CommandText = util.AddSqlCriteria(BeforeSql, criteria); command.ExecuteNonQuery(); }
public BankStmtCalculator(XPObjectSpace objSpace) { this.objSpace = objSpace; var clauses = new List <SqlDeclareClause>() { new SqlDeclareClause("FuncCcy", "uniqueidentifier", "(SELECT TOP 1 FunctionalCurrency FROM SetOfBooks WHERE GCRecord IS NULL)") }; var sqlUtil = new SqlStringUtil(); parameterCommandText = sqlUtil.CreateCommandText(clauses); }
public FixCashFlowsAlgorithm(XPObjectSpace objSpace, CashFlowFixParam paramObj, CashFlowFixMapper mapper) { this.objSpace = objSpace; this.paramObj = paramObj; if (paramObj.Snapshot == null) { currentSnapshot = GetCurrentSnapshot(objSpace.Session); } else { currentSnapshot = paramObj.Snapshot; } if (paramObj.ApReclassActivity != null) { paramApReclassActivity = objSpace.GetObjectByKey <Activity>(objSpace.GetKeyValue(paramObj.ApReclassActivity)); } defaultCounterparty = objSpace.FindObject <Counterparty>( CriteriaOperator.Parse("Name LIKE ?", CashDiscipline.Common.Constants.DefaultFixCounterparty)); var query = new XPQuery <CashForecastFixTag>(objSpace.Session); reversalFixTag = query .Where(x => x.Name == CashDiscipline.Common.Constants.ReversalFixTag).FirstOrDefault(); revRecFixTag = query .Where(x => x.Name == CashDiscipline.Common.Constants.RevRecFixTag).FirstOrDefault(); resRevRecFixTag = query .Where(x => x.Name == CashDiscipline.Common.Constants.ResRevRecFixTag).FirstOrDefault(); payrollFixTag = query .Where(x => x.Name == CashDiscipline.Common.Constants.PayrollFixTag).FirstOrDefault(); autoFixTag = query .Where(x => x.Name == CashDiscipline.Common.Constants.AutoFixTag).FirstOrDefault(); setOfBooks = SetOfBooks.GetInstance(objSpace); this.mapper = mapper; this.sqlDeclareClauses = CreateSqlDeclareClauses(); var sqlStringUtil = new SqlStringUtil(); this.parameterCommandText = sqlStringUtil.CreateCommandText(sqlDeclareClauses); }
private void BeforeProcess(IEnumerable objs) { var oids = new List <string>(); foreach (BaseObject obj in objs) { oids.Add(string.Format("'{0}'", obj.Oid)); } var util = new SqlStringUtil(); var conn = (SqlConnection)objSpace.Session.Connection; var command = conn.CreateCommand(); command.CommandText = BeforeSql.Replace(SqlStringUtil.CriteriaToken, "AND Oid IN (" + string.Join(",", oids) + ")"); // replace {criteria} with filter command.ExecuteNonQuery(); }
public void Process() { var clauses = new List <SqlDeclareClause>() { new SqlDeclareClause("Snapshot", "uniqueidentifier", @"(SELECT TOP 1 [CurrentCashFlowSnapshot] FROM SetOfBooks WHERE GCRecord IS NULL)"), new SqlDeclareClause("ActualStatus", "int", Convert.ToInt32(CashFlowStatus.Actual).ToString()), new SqlDeclareClause("ForecastStatus", "int", Convert.ToInt32(CashFlowStatus.Forecast).ToString()), new SqlDeclareClause("Activity", "uniqueidentifier", "(SELECT TOP 1 [ForexSettleActivity] FROM SetOfBooks WHERE GCRecord IS NULL)"), new SqlDeclareClause("Source", "uniqueidentifier", "(SELECT TOP 1 [ForexSettleCashFlowSource] FROM SetOfBooks WHERE GCRecord IS NULL)") }; var sqlStringUtil = new SqlStringUtil(); var paramCommandText = sqlStringUtil.CreateCommandText(clauses); using (var cmd = ((SqlConnection)objSpace.Session.Connection).CreateCommand()) { cmd.CommandText = paramCommandText + "\n\n" + ProcessCommandText; int result = cmd.ExecuteNonQuery(); } }
public bool SaveAccount(object obj) { var _connection = ConnectionHelper.GetConnection(); var sqlQuery = SqlStringUtil.InsertString(obj.GetType()); var account = (BlockChain)obj; Console.WriteLine(sqlQuery); var cmd = new MySqlCommand(sqlQuery, _connection); cmd.Parameters.AddWithValue("@WalletId", account.WalletId); cmd.Parameters.AddWithValue("@Balance", account.Balance); cmd.Parameters.AddWithValue("@Password", account.Password); cmd.Parameters.AddWithValue("@CreatedAt", account.CreatedAt); cmd.Parameters.AddWithValue("@UpdatedAt", account.UpdatedAt); if (cmd.ExecuteNonQuery() == 1) { _connection.Close(); return(true); } _connection.Close(); return(false); }
public bool UpdateBalance(object currentLoggedInAccount, object historyTransaction) { var account = (BlockChain)currentLoggedInAccount; var transactionBl = (BlockChainTransaction)historyTransaction; var connection = ConnectionHelper.GetConnection(); var transactionBegin = connection.BeginTransaction(); // Khởi tạo transaction. try { /** * 1. Lấy thông tin số dư mới nhất của tài khoản. * 2. Kiểm tra kiểu transaction. Chỉ chấp nhận deposit và withdraw. * 2.1. Kiểm tra số tiền rút nếu kiểu transaction là withdraw. * 3. Update số dư vào tài khoản. * 3.1. Tính toán lại số tiền trong tài khoản. * 3.2. Update số tiền vào database. * 4. Lưu thông tin transaction vào bảng transaction. */ // 1. Lấy thông tin số dư mới nhất của tài khoản. var queryBalance = "select balance from `blockchainaccount` where WalletId = @username"; MySqlCommand queryBalanceCommand = new MySqlCommand(queryBalance, connection); queryBalanceCommand.Parameters.AddWithValue("@username", account.WalletId); var balanceReader = queryBalanceCommand.ExecuteReader(); // Không tìm thấy tài khoản tương ứng, throw lỗi. if (!balanceReader.Read()) { // Không tồn tại bản ghi tương ứng, lập tức rollback transaction, trả về false. // Hàm dừng tại đây. throw new SHBModel.CustomError("Tai khoan không hợp lệ."); } // Đảm bảo sẽ có bản ghi. var currentBalance = balanceReader.GetDouble("Balance"); balanceReader.Close(); // 2. Kiểm tra kiểu transaction. Chỉ chấp nhận deposit và withdraw. if (transactionBl.Type != Transaction.TransactionType.Deposit && transactionBl.Type != Transaction.TransactionType.Withdraw) { throw new SHBModel.CustomError("Kiểu giao dịch không hợp lệ."); } // 2.1. Kiểm tra số tiền rút nếu kiểu transaction là withdraw. if (transactionBl.Type == Transaction.TransactionType.Withdraw && transactionBl.Amount > currentBalance) { throw new SHBModel.CustomError("Số tiền bạn rút lớn hơn số tiền còn trong tài khoản, vui lòng thử lại!"); } // 3. Update số dư vào tài khoản. // 3.1. Tính toán lại số tiền trong tài khoản. if (transactionBl.Type == Transaction.TransactionType.Deposit) { currentBalance += transactionBl.Amount; } else { currentBalance -= transactionBl.Amount; } // 3.2. Update số dư vào database. var queryUpdateAccountBalance = "update `shbaccount` set balance = @balance where Username = @username "; var cmdUpdateAccountBalance = new MySqlCommand(queryUpdateAccountBalance, connection); cmdUpdateAccountBalance.Parameters.AddWithValue("@username", account.WalletId); cmdUpdateAccountBalance.Parameters.AddWithValue("@balance", currentBalance); var updateAccountResult = cmdUpdateAccountBalance.ExecuteNonQuery(); // 4. Lưu thông tin transaction vào bảng transaction. var queryInsertTransaction = SqlStringUtil.InsertString(transactionBl.GetType()); var cmdInsertTransaction = new MySqlCommand(queryInsertTransaction, connection); cmdInsertTransaction.Parameters.AddWithValue("@TransactionId", transactionBl.TransactionId); cmdInsertTransaction.Parameters.AddWithValue("@CreatedAt", transactionBl.CreatedAt); cmdInsertTransaction.Parameters.AddWithValue("@UpdatedAt", transactionBl.UpdatedAt); cmdInsertTransaction.Parameters.AddWithValue("@Type", transactionBl.Type); cmdInsertTransaction.Parameters.AddWithValue("@Amount", transactionBl.Amount); cmdInsertTransaction.Parameters.AddWithValue("@SenderWalletId", transactionBl.SenderWalletId); cmdInsertTransaction.Parameters.AddWithValue("@ReceiverWalletId", transactionBl.ReceiverWalletId); cmdInsertTransaction.Parameters.AddWithValue("@Status", transactionBl.Status); var insertTransactionResult = cmdInsertTransaction.ExecuteNonQuery(); if (updateAccountResult == 1 && insertTransactionResult == 1) { transactionBegin.Commit(); return(true); } } catch (SHBModel.CustomError) { transactionBegin.Rollback(); return(false); } connection.Close(); return(false); }
public bool UpdateBalanceWhenTransfer(object historyTransaction_obj) { /* * 1. Kiểm tra số dư mới nhất. * 1.1 Người gửi. * 1.2 Người nhận. * 2. Kiểm tra kiểu transaction type chỉ nhận type là transfer. * 3. Tính toán lại số tiền của người gửi và nhận. * 3.1 Update số dư người nhận người gửi lên database. * 3.1.1 Người gửi. * 3.1.2 Người nhận. * 4. Lưu transaction vào bảng transaction trên database */ var connection = ConnectionHelper.GetConnection(); // Đảm bảo rằng đã kết nối đến db thành công. var transaction = connection.BeginTransaction(); // Khởi tạo transaction. var historyTransaction = (BlockChainTransaction)historyTransaction_obj; // 1. Kiểm tra số dư mới nhất. try { // 1.1 Người gửi. var queryBalanceAccountFrom = "select balance from `BlockChainAccount` where WalletId = @walletIdFrom"; var queryBalanceCommand = new MySqlCommand(queryBalanceAccountFrom, connection); queryBalanceCommand.Parameters.AddWithValue("@walletIdFrom", Program._BL_CurrentLoggedIn.WalletId); var balanceAccountFrom = queryBalanceCommand.ExecuteReader(); if (!balanceAccountFrom.Read()) { // Không tồn tại bản ghi tương ứng, lập tức rollback transaction, trả về false. // Hàm dừng tại đây. throw new SHBModel.CustomError("Tai khoan không hợp lệ."); } // Lấy balance hiện tại của ng gửi. var currentBalanceAccountFrom = balanceAccountFrom.GetDouble("Balance"); balanceAccountFrom.Close(); // 1.2 Người nhận. var queryBalanceAccountTo = "select balance from `BlockChainAccount` where WalletId = @walletIdTo"; var cmd = new MySqlCommand(queryBalanceAccountTo, connection); cmd.Parameters.AddWithValue("@walletIdTo", Program._BL_CurrentReceiverAccountNumber.WalletId); var balanceAccountTo = cmd.ExecuteReader(); if (!balanceAccountTo.Read()) { // Không tồn tại bản ghi tương ứng, lập tức rollback transaction, trả về false. // Hàm dừng tại đây. throw new SHBModel.CustomError("Tai khoan không hợp lệ."); } // Lấy balance của người nhận. var currentBalanceAccountTo = balanceAccountTo.GetDouble("balance"); balanceAccountTo.Close(); // 2. Kiểm tra kiểu transaction type chỉ nhận type là transfer. if (historyTransaction.Type != Transaction.TransactionType.Transfer) { throw new SHBModel.CustomError("Kiểu giao dịch không hợp lệ!"); } if (historyTransaction.Type == Transaction.TransactionType.Transfer && historyTransaction.Amount > currentBalanceAccountFrom) { throw new SHBModel.CustomError( "Số tiền bạn muốn chuyển lớn hơn số tiền còn trong tài khoản của bạn, vui lòng thử lại."); } // 3. Tính toán lại số tiền của người gửi và nhận. if (historyTransaction.Type == Transaction.TransactionType.Transfer) { currentBalanceAccountFrom -= historyTransaction.Amount; currentBalanceAccountTo += historyTransaction.Amount; } // 3.1 Update số dư người nhận người gửi lên database. // 3.1.1 Người gửi. var queryUpdateBalanceAccountFrom = "update `BlockChainAccount` set balance = @balanceFrom where WalletId = @usernameFrom"; var cmdUpdateAccountBalanceFrom = new MySqlCommand(queryUpdateBalanceAccountFrom, connection); cmdUpdateAccountBalanceFrom.Parameters.AddWithValue("@usernameFrom", Program._SHB_CurrentLoggedIn.Username); cmdUpdateAccountBalanceFrom.Parameters.AddWithValue("@balanceFrom", currentBalanceAccountFrom); var updateAccountFromResult = cmdUpdateAccountBalanceFrom.ExecuteNonQuery(); // 3.1.2 Người nhận. var queryUpdateBalanceAccountTo = "update `BlockChainAccount` set balance = @balanceTo where WalletId = @usernameTo"; var cmdUpdateBalanceAccountTo = new MySqlCommand(queryUpdateBalanceAccountTo, connection); cmdUpdateBalanceAccountTo.Parameters.AddWithValue("@usernameTo", Program._SHB_CurrentReceiverAccountNumber.Username); cmdUpdateBalanceAccountTo.Parameters.AddWithValue("@balanceTo", currentBalanceAccountTo); var updateAccountToResult = cmdUpdateBalanceAccountTo.ExecuteNonQuery(); // 4. Lưu thông tin transaction vào bảng transaction. var queryInsertTransaction = SqlStringUtil.InsertString(historyTransaction.GetType()); var cmdInsertTransaction = new MySqlCommand(queryInsertTransaction, connection); cmdInsertTransaction.Parameters.AddWithValue("@TransactionId", historyTransaction.TransactionId); cmdInsertTransaction.Parameters.AddWithValue("@Type", historyTransaction.Type); cmdInsertTransaction.Parameters.AddWithValue("@Amount", historyTransaction.Amount); cmdInsertTransaction.Parameters.AddWithValue("@CreatedAt", historyTransaction.CreatedAt); cmdInsertTransaction.Parameters.AddWithValue("@UpdatedAt", historyTransaction.UpdatedAt); cmdInsertTransaction.Parameters.AddWithValue("@SenderWalletId", historyTransaction.SenderWalletId); cmdInsertTransaction.Parameters.AddWithValue("@ReceiverWalletId", historyTransaction.ReceiverWalletId); cmdInsertTransaction.Parameters.AddWithValue("@Status", historyTransaction.Status); var insertTransactionResult = cmdInsertTransaction.ExecuteNonQuery(); if (updateAccountFromResult == 1 && updateAccountToResult == 1 && insertTransactionResult == 1) { transaction.Commit(); return(true); } connection.Close(); return(false); } catch (SHBModel.CustomError) { transaction.Rollback(); return(false); } }