public Promise <MarketOrderDataObject> UpdateOrAddMarketOrder(BuyOrderType orderType, long marketId, MyDefinitionId itemDefinitionId, decimal pricePerOne, decimal quantity) { return(new Promise <MarketOrderDataObject>((resolve, reject) => { using (var connection = ConnectionFactory.Open()) { var createdOn = DateTime.UtcNow.ToUnixTimestamp(); var definitionHash = itemDefinitionId.ToString(); connection.Execute( SQL.INSERT_OR_UPDATE_MARKET_ORDER, new { marketId = marketId, definitionId = definitionHash, price = pricePerOne, quantity = quantity, createdOn = createdOn, orderType = (int)orderType }); GetMarketOrder(orderType, marketId, itemDefinitionId) .Then(resolve) .Catch(reject); } })); }
/// <summary> /// Allows you to retrieve all buy orders you have placed, whether active or not. /// </summary> /// <param name="app">Inventory's game id.</param> /// <param name="name">An item's name. (optional)</param> /// <param name="type">Type of buy orders. (optional)</param> /// <param name="page">The page number.</param> /// <returns>My buy orders.</returns> public static List <BuyOrder> GetMyBuyOrders(AppId.AppName app, string name, BuyOrderType type, int page) { CheckParameters(page); string urlRequest = GetUrlRequest(app, name, type, page); string result = Server.ServerRequest.RequestServer(urlRequest); List <BuyOrder> myBuyOrders = ReadMyBuyOrders(result); return(myBuyOrders); }
private void UpdateOrderPrice(BuyOrderType orderType, string marketNameOrId, string itemName, decimal newPrice) { var character = Context.Player.Character; if (character == null) { Context.Respond("You cannot do this while dead."); return; } if (!DefinitionResolver.TryGetDefinitionByName(itemName, out var itemDefinition)) { Context.Respond($"Unable to find an item by the name of {itemName}"); return; } if (newPrice < new decimal(0.01)) { Context.Respond($"{newPrice} is too small. Please use a higher value."); return; } var manager = EconomyPlugin.GetManager <MarketManager>(); var orderManager = EconomyPlugin.GetManager <MarketOrderManager>(); manager.GetMarkets() .Then(markets => { MarketDataObject market = null; if (long.TryParse(marketNameOrId, out var marketId)) { market = markets.FirstOrDefault(m => m.Id == marketId); } else { market = markets.FirstOrDefault(m => m.Name.Equals(marketNameOrId, StringComparison.InvariantCultureIgnoreCase)); } if (market == null) { Context.Respond($"Unable to find market by name or id of '{marketNameOrId}'."); return; } orderManager.GetMarketOrder(orderType, market.Id, itemDefinition.Id) .Then(order => { orderManager.UpdateOrderPrice(order.Id, newPrice) .Then(() => Context.Respond( $"Successfully updated Order#{order.Id}'s price to {Utilities.FriendlyFormatCurrency(newPrice)}.")) .Catch(HandleError); }) .Catch(HandleError); }) .Catch(HandleError); }
private void CreateOrder(BuyOrderType orderType, string marketNameOrId, string itemName, decimal pricePerOne, decimal quantity) { var character = Context.Player.Character; if (character == null) { Context.Respond("You cannot do this while dead."); return; } if (quantity < new decimal(0.01)) { Context.Respond($"{quantity} is too low. Please use a higher value."); return; } if (pricePerOne < new decimal(0.01)) { Context.Respond($"{pricePerOne} is too low. Please use a higher value."); return; } if (!DefinitionResolver.TryGetDefinitionByName(itemName, out var itemDefinition)) { Context.Respond($"Unable to find an item by the name of {itemName}"); return; } var manager = EconomyPlugin.GetManager <MarketManager>(); var orderManager = EconomyPlugin.GetManager <MarketOrderManager>(); manager.GetMarketByNameOrId(marketNameOrId, Context.Player.SteamUserId) .Then(market => { if (market == null) { Context.Respond($"Unable to find a market by the name or id of {marketNameOrId}."); return; } orderManager.UpdateOrAddMarketOrder(orderType, market.Id, itemDefinition.Id, pricePerOne, quantity) .Then(order => { Context.Respond( $"Successfully created Order#{order.Id} for {quantity}x {itemDefinition.DisplayNameText} @ {Utilities.FriendlyFormatCurrency(pricePerOne)} per 1."); }) .Catch(HandleError); }) .Catch(HandleError); }
private static string GetUrlRequest(AppId.AppName app, string name, BuyOrderType type, int page) { Server.UrlCreator urlCreator = new Server.UrlCreator($"https://bitskins.com/api/v1/get_buy_order_history/"); urlCreator.AppendUrl($"&app_id={(int)app}"); urlCreator.AppendUrl($"&page={page}"); if (!String.IsNullOrEmpty(name)) { urlCreator.AppendUrl($"&market_hash_name={name}"); } if (type != BuyOrderType.NotImportant) { urlCreator.AppendUrl($"&type={BuyOrderTypeToString(type)}"); } return(urlCreator.ReadUrl()); }
private void UpdateOrderQuantity(BuyOrderType orderType, string marketNameOrId, string itemName, decimal newQuantity) { var character = Context.Player.Character; if (character == null) { Context.Respond("You cannot do this while dead."); return; } if (!DefinitionResolver.TryGetDefinitionByName(itemName, out var itemDefinition)) { Context.Respond($"Unable to find an item by the name of {itemName}"); return; } if (newQuantity < new decimal(0.01)) { Context.Respond($"{newQuantity} is too small. Please use a higher value."); return; } var manager = EconomyPlugin.GetManager <MarketManager>(); var orderManager = EconomyPlugin.GetManager <MarketOrderManager>(); manager.GetMarketByNameOrId(marketNameOrId, Context.Player.SteamUserId) .Then(market => { if (market == null) { Context.Respond($"Unable to find market by name or id of '{marketNameOrId}'."); return; } orderManager.GetMarketOrder(orderType, market.Id, itemDefinition.Id) .Then(order => { orderManager.UpdateOrderQuantity(order.Id, newQuantity) .Then(() => Context.Respond( $"Successfully updated Order#{order.Id}'s quantity to {newQuantity}.")) .Catch(HandleError); }) .Catch(HandleError); }) .Catch(HandleError); }
public Promise <MarketOrderDataObject> GetMarketOrder(BuyOrderType orderType, long marketId, MyDefinitionId itemDefinitionId) { return(new Promise <MarketOrderDataObject>((resolve, reject) => { using (var connection = ConnectionFactory.Open()) { var definitionHash = itemDefinitionId.ToString(); resolve(connection.QueryFirstOrDefault <MarketOrderDataObject>( SQL.SELECT_MARKET_ORDER_BY_ITEM, new { marketId = marketId, definitionId = definitionHash, orderType = (int)orderType })); } })); }
private static string BuyOrderTypeToString(BuyOrderType type) { switch (type) { case BuyOrderType.Listed: return("listed"); case BuyOrderType.Settled: return("settled"); case BuyOrderType.CancelledByUser: return("cancelled_by_user"); case BuyOrderType.CancelledBySystem: return("cancelled_by_system"); default: return(""); } }
private void RemoveOrder(BuyOrderType orderType, string marketNameOrId, string itemName) { var character = Context.Player.Character; if (character == null) { Context.Respond("You cannot do this while dead."); return; } if (!DefinitionResolver.TryGetDefinitionByName(itemName, out var itemDefinition)) { Context.Respond($"Unable to find an item by the name of {itemName}"); return; } var manager = EconomyPlugin.GetManager <MarketManager>(); var orderManager = EconomyPlugin.GetManager <MarketOrderManager>(); manager.GetMarketByNameOrId(marketNameOrId, Context.Player.SteamUserId) .Then(market => { if (market == null) { Context.Respond($"Unable to find market by name or id of '{marketNameOrId}'."); return; } orderManager.GetMarketOrder(orderType, market.Id, itemDefinition.Id) .Then(order => { orderManager.DeleteOrder(order.Id) .Then(() => Context.Respond( $"Successfully removed Order#{order.Id}.")) .Catch(HandleError); }) .Catch(HandleError); }) .Catch(HandleError); }