Пример #1
0
        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 });
        }
Пример #2
0
        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.");
        }
Пример #3
0
        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}.");
        }
Пример #4
0
 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 });
 }
Пример #5
0
 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 });
 }