From f12fcda9d636e494105e38ae8bb0c97a1d716016 Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 19 Oct 2025 11:19:15 +0000 Subject: [PATCH] add AddItemsToInventoryBulkAndGetResponse function --- src/Controllers/Common/ContentController.cs | 49 +++++---------------- src/Services/InventoryService.cs | 24 ++++++++++ 2 files changed, 34 insertions(+), 39 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 8935881..1c7f67b 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -1201,24 +1201,12 @@ public class ContentController : Controller { inventoryItemsToAdd[reward.ItemId] += quantity; } - var addedItems = inventoryService.AddItemsToInventoryBulk(viking, inventoryItemsToAdd); - - // build response - List items = new List(); - foreach (var i in inventoryItemsToAdd) { - items.AddRange(Enumerable.Repeat( - new CommonInventoryResponseItem { - CommonInventoryID = addedItems.ContainsKey(i.Key) ? addedItems[i.Key] : 0, // return inventory id if this item was added to the DB - ItemID = i.Key, - Quantity = 0 - }, i.Value)); - } - - return Ok(new CommonInventoryResponse{ - Success = true, - CommonInventoryIDs = items.ToArray(), - UserGameCurrency = achievementService.GetUserCurrency(viking) - }); + // add items to the inventory (database) and build response + return Ok( + inventoryService.AddItemsToInventoryBulkAndGetResponse( + viking, inventoryItemsToAdd, inventoryItemsToAdd, achievementService.GetUserCurrency(viking) + ) + ); } [HttpPost] @@ -2484,26 +2472,9 @@ public class ContentController : Controller { achievementService.AddAchievementPoints(viking, AchievementPointTypes.GameCurrency, -totalCoinCost + coinsToAdd); achievementService.AddAchievementPoints(viking, AchievementPointTypes.CashCurrency, -totalGemCost + gemsToAdd); - // add items to the inventory (database) - var addedItems = inventoryService.AddItemsToInventoryBulk(viking, inventoryItemsToAdd); - - // build response - List items = new List(); - foreach (var i in itemsToSendBack) { - items.AddRange(Enumerable.Repeat( - new CommonInventoryResponseItem { - CommonInventoryID = addedItems.ContainsKey(i.Key) ? addedItems[i.Key] : 0, // return inventory id if this item was added to the DB - ItemID = i.Key, - Quantity = 0 - }, i.Value)); - } - // NOTE: The quantity of purchased items can always be 0 and the items are instead duplicated in both the request and the response. - // Item quantities are used for non-store related requests/responses. - - return new CommonInventoryResponse { - Success = true, - CommonInventoryIDs = items.ToArray(), - UserGameCurrency = achievementService.GetUserCurrency(viking) - }; + // add items to the inventory (database) and build response + return inventoryService.AddItemsToInventoryBulkAndGetResponse( + viking, inventoryItemsToAdd, itemsToSendBack, achievementService.GetUserCurrency(viking) + ); } } diff --git a/src/Services/InventoryService.cs b/src/Services/InventoryService.cs index 7f518ea..722f64d 100644 --- a/src/Services/InventoryService.cs +++ b/src/Services/InventoryService.cs @@ -74,6 +74,30 @@ namespace sodoff.Services { return itemsWithInventoryId; } + public CommonInventoryResponse AddItemsToInventoryBulkAndGetResponse(Viking viking, Dictionary inventoryItemsToAdd, Dictionary itemsToSendBack, UserGameCurrency gameCurrency) { + // add items to the inventory (database) + var addedItems = AddItemsToInventoryBulk(viking, inventoryItemsToAdd); + + // build response + List items = new List(); + foreach (var i in itemsToSendBack) { + items.AddRange(Enumerable.Repeat( + new CommonInventoryResponseItem { + CommonInventoryID = addedItems.ContainsKey(i.Key) ? addedItems[i.Key] : 0, // return inventory id if this item was added to the DB + ItemID = i.Key, + Quantity = 0 + }, i.Value)); + } + // NOTE: The quantity of purchased items can always be 0 and the items are instead duplicated in both the request and the response. + // Item quantities are used for non-store related requests/responses. + + return new CommonInventoryResponse { + Success = true, + CommonInventoryIDs = items.ToArray(), + UserGameCurrency = gameCurrency + }; + } + public InventoryItemStatsMap AddBattleItemToInventory(Viking viking, int itemId, int itemTier, ItemStat[] itemStat = null) { // get item data ItemData itemData = itemService.GetItem(itemId);