public async Task DeleteUserRonStock(UserRonStock userRonStock) { //Don't Delete if quantity isn't 0 if (userRonStock.Quantity != 0) { return; } var cmd = string.Format("DELETE FROM userronstock WHERE userid = @id and symbol = @symbol"); await connection.QueryAsync(cmd, new{ quantity = userRonStock.Quantity, id = userRonStock.UserID, symbol = userRonStock.Symbol }); }
public async Task BuyAsync(string ticker, int quantity) { if (quantity < 1) { await ReplyAsync("Invalid quantity. Must be greater than 0"); return; } var upperTicker = ticker.ToUpperInvariant(); RonStock stock = RonStockMarketService.GetStock(upperTicker); if (stock == null) { await ReplyAsync($"Stock {upperTicker} doesn't exist."); return; } int cost = stock.Price * quantity * -1; UserRonStock usr = await GameService.GetUserRonStockAsync(Context.User, upperTicker); if (!await GameService.AddRonPoints(Context.User, cost)) { await ReplyAsync($"Can't Afford to buy {quantity} shares of {upperTicker} for {cost} rp."); return; } if (usr == null) { usr = new UserRonStock() { UserID = Context.User.Id, Symbol = upperTicker, Quantity = quantity }; await GameService.AddUserRonStock(usr); } else { usr.Quantity += quantity; await GameService.UpdateUserRonStock(usr); } await ReplyAsync($"Bought {quantity} shares of {upperTicker} for {cost} rp."); }
public async Task SellAsync(string ticker, int quantity) { var upperTicker = ticker.ToUpperInvariant(); if (quantity < 1) { await ReplyAsync($"Invalid quantity. Must be greater than 0"); return; } RonStock stock = RonStockMarketService.GetStock(upperTicker); if (stock == null) { await ReplyAsync($"Stock {upperTicker} doesn't exist."); return; } UserRonStock usr = await GameService.GetUserRonStockAsync(Context.User, upperTicker); if (usr == null || usr.Quantity < quantity) { await ReplyAsync($"You don't own enough {upperTicker} to sell {quantity} shares."); return; } int cost = quantity * stock.Price; usr.Quantity -= quantity; if (usr.Quantity == 0) { await GameService.DeleteUserRonStock(usr); } else { await GameService.UpdateUserRonStock(usr); } await GameService.AddRonPoints(Context.User, cost); await ReplyAsync($"Sold {quantity} shares of {upperTicker} for {cost}."); }
public async Task AddUserRonStock(UserRonStock userRonStock) { var cmd = "INSERT INTO userronstock(userid,symbol,quantity) values(@UserId,@Symbol,@Quantity)"; await connection.ExecuteAsync(cmd, new { UserId = userRonStock.UserID, Symbol = userRonStock.Symbol, Quantity = userRonStock.Quantity }); }
public async Task UpdateUserRonStock(UserRonStock userRonStock) { var cmd = string.Format("UPDATE userronstock SET quantity = @quantity WHERE userid = @id and symbol = @symbol"); await connection.QueryAsync(cmd, new{ quantity = userRonStock.Quantity, id = userRonStock.UserID, symbol = userRonStock.Symbol }); }