public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete) { try { var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request { RequestType = RequestType.RecycleInventoryItem, RequestMessage = new RecycleInventoryItemMessage { Count = toDelete, ItemId = itemSetting.Id }.ToByteString() }); RecycleInventoryItemResponse recycleInventoryItemResponse = null; recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response); LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle)); return(new MethodResult { Success = true }); } catch (Exception ex) { LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex)); return(new MethodResult()); } }
public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete) { try { RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete); if (response.Result == RecycleInventoryItemResponse.Types.Result.Success) { LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle)); return(new MethodResult { Success = true }); } else { LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning)); return(new MethodResult()); } } catch (Exception ex) { LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex)); return(new MethodResult()); } }
public void RecycleItems(ItemId itemId, int amount) { RecycleInventoryItemResponse res = _apiInventory.RecycleItem(itemId, amount).GetAwaiter().GetResult(); if (res.Result != RecycleInventoryItemResponse.Types.Result.Success) { throw new Exception("Unable to recycle item"); } }
public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete) { if (!_client.LoggedIn) { MethodResult result = await AcLogin(); if (!result.Success) { return(result); } } var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request { RequestType = RequestType.RecycleInventoryItem, RequestMessage = new RecycleInventoryItemMessage { Count = toDelete, ItemId = itemSetting.Id }.ToByteString() }); if (response == null) { return(new MethodResult()); } RecycleInventoryItemResponse recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response); switch (recycleInventoryItemResponse.Result) { case RecycleInventoryItemResponse.Types.Result.ErrorCannotRecycleIncubators: return(new MethodResult()); case RecycleInventoryItemResponse.Types.Result.ErrorNotEnoughCopies: return(new MethodResult()); case RecycleInventoryItemResponse.Types.Result.Success: LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle)); return(new MethodResult { Success = true }); case RecycleInventoryItemResponse.Types.Result.Unset: return(new MethodResult()); } return(new MethodResult()); }
/// <summary> /// Provides a safe way to invoke the <see cref="RecycleInventoryItemReceived" /> event. /// </summary> /// <param name="value"></param> public void RaiseRecycleInventoryItemReceived(RecycleInventoryItemResponse value) => RecycleInventoryItemReceived?.Invoke(this, value);
public async Task <MethodResult> RecycleItems() { if (!UserSettings.RecycleItems) { return(new MethodResult { Message = "Item deletion not enabled" }); } MethodResult <List <InventoryItem> > inventoryResponse = await GetInventory(); if (!inventoryResponse.Success) { return(inventoryResponse); } await UpdateItemList(false); foreach (ItemData item in Items) { InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId); if (itemSetting == null) { continue; } int toDelete = item.Count - itemSetting.MaxInventory; if (toDelete <= 0) { continue; } try { RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete); if (response.Result == RecycleInventoryItemResponse.Types.Result.Success) { LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle)); } else { LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning)); } await Task.Delay(500); } catch (Exception ex) { LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex)); } } return(new MethodResult { Message = "Success", Success = true }); }
private async void disposeItem(ItemId item, int amount) { RecycleInventoryItemResponse recResp = await this._session.Client.Inventory.RecycleItem(item, amount); Logger.Write($"Disposed {amount} {item}s. Result: {recResp.Result}. You now have {recResp.NewCount} {item}s"); }