public async Task <decimal> GetUserTrendShares(int userId, string trendName) { DataTable dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spSelectUserShares", new List <SqlParameter> { new SqlParameter("@USERID", userId), new SqlParameter("@TRENDNAME", trendName) }); return(Convert.ToDecimal(dt.Rows[0][0])); }
public async Task <bool> EmailExists(string email) { List <SqlParameter> prms = new List <SqlParameter> { new SqlParameter("@EMAIL", email) }; var dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spEmailExists", prms); return(dt.Rows.Count > 0); }
public async Task <User> SignUpUser(string email, string username, string password, string mobile, string publickey, string privatekey) { string hashedPassed = Utility.GetStringSha256Hash(password); List <SqlParameter> prms = new List <SqlParameter> { new SqlParameter("@EMAIL", email), new SqlParameter("@USERNAME", username), new SqlParameter("@PASSWORD", hashedPassed), new SqlParameter("@MOBILE", mobile), new SqlParameter("@PUBLICKEY", publickey), new SqlParameter("@PRIVATEKEY", privatekey) }; var dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spInsertUser", prms); var id = Convert.ToInt32(dt.Rows[0][0]); return(await GetUserInformation(id)); }
public async Task <User> GetUserInformation(int userId) { List <SqlParameter> prms = new List <SqlParameter> { new SqlParameter("@USERID", userId) }; DataTable dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spSelectUser", prms); DataRow dr = dt.Rows[0]; return(new User { Id = Convert.ToInt32(dr["Id"]), Username = dr["Username"].ToString(), Email = dr["Email"].ToString(), Balance = Convert.ToDecimal(dr["Balance"]), Avatar = dr["Avatar"].ToString() }); }
public async Task <User> LoginUser(string username, string password) { string hashedPassed = Utility.GetStringSha256Hash(password); List <SqlParameter> prms = new List <SqlParameter> { new SqlParameter("@USERNAME", username), new SqlParameter("@PASSWORD", hashedPassed) }; var dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spLoginUser", prms); // USER DOES NOT EXIST, RETURN NULL if (dt.Rows.Count == 0) { return(null); } // USER DOES EXIST, RETURN THEIR INFORMATION BASED ON THEIR ID int userId = Convert.ToInt32(dt.Rows[0]["Id"]); return(await GetUserInformation(userId)); }
public async Task <(int ReturnCode, decimal?Balance)> InsertOrder(Order newOrder, Guid orderId, int status) { var dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spSelectUserBalance", new List <SqlParameter> { new SqlParameter("@USERID", this.userId) }); var balance = Convert.ToDecimal(dt.Rows[0][0]); dt = await DBUtility.GetDataTableAsync(opts.ConnectionString, "spSelectUserShares", new List <SqlParameter> { new SqlParameter("@USERID", this.userId), new SqlParameter("@TRENDNAME", newOrder.TrendName) }); var totalTrendShares = Convert.ToDecimal(dt.Rows[0][0]); decimal amount = newOrder.Price * newOrder.Quantity; decimal newBalance = (newOrder.TradeTypeId == 1) ? balance - amount : balance + amount; decimal newShareQuantity = 0; //// IM TRYING TO BUY/SELL ZERO SHARES if (newOrder.Quantity <= 0) { return(1, null); } //// IM TRYING TO BUY/SELL TRENDS WITH A PRICE OF ZERO if (newOrder.Price == 0) { return(4, null); } //// IM TRYING TO BUY STUFF if (newOrder.TradeTypeId == 1) { // I DONT HAVE ENOUGH FUNDS TO BUY SHARES if (newBalance < 0) { return(2, null); } // I DO HAVE ENOUGH FUNDS TO BUY SHARES else { newShareQuantity = totalTrendShares + newOrder.Quantity; } } //// IM TRYING TO SELL STUFF if (newOrder.TradeTypeId == 2) { // I DONT HAVE ANY OR ENOUGH SHARES THAT IM TRYING TO SELL if (totalTrendShares < newOrder.Quantity) { return(3, null); } // I DO HAVE ENOUGH SHARES TO SELL else { newShareQuantity = totalTrendShares - newOrder.Quantity; } } List <SqlParameter> parameters = new List <SqlParameter>(); parameters.Add(new SqlParameter("@ORDERID", orderId)); parameters.Add(new SqlParameter("@USERID", newOrder.UserId)); parameters.Add(new SqlParameter("@TRENDID", newOrder.TrendId)); parameters.Add(new SqlParameter("@TRENDNAME", newOrder.TrendName)); parameters.Add(new SqlParameter("@TRADETYPEID", newOrder.TradeTypeId)); parameters.Add(new SqlParameter("@ACTIVITYID", newOrder.TradeTypeId)); parameters.Add(new SqlParameter("@PRICE", newOrder.Price)); parameters.Add(new SqlParameter("@QUANTITY", newOrder.Quantity)); parameters.Add(new SqlParameter("@TOTALAMOUNT", amount)); parameters.Add(new SqlParameter("@NEWBALANCE", newBalance)); parameters.Add(new SqlParameter("@STATUS", status)); parameters.Add(new SqlParameter("@NEWQUANTITY", newShareQuantity)); await DBUtility.ExecuteQueryAsync(opts.ConnectionString, "spInsertOrder", parameters); return(0, newBalance); }