async Task MoveItem(IConn conn, MoveItemRequest moveItemRequest) { var wasFrom = _store.GetItemQuantity(moveItemRequest.FromItemID); var wasTo = _store.GetItemQuantity(moveItemRequest.ToItemID); if (wasFrom < moveItemRequest.Amount) { await conn.Write(new ArgumentException("Insufficient amount")); return; } await Commit( new ItemAdded(moveItemRequest.ToItemID, moveItemRequest.Amount, wasTo + moveItemRequest.Amount), new ItemRemoved(moveItemRequest.FromItemID, moveItemRequest.Amount, wasFrom - moveItemRequest.Amount)); await conn.Write(new MoveItemResponse()); }
public async Task MoveItem(long from, long to, decimal amount) { var req = new MoveItemRequest(from, to, amount); await Unary <MoveItemRequest, MoveItemResponse>(req); }