diff --git a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
index 50cec711..a21ecbf7 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
@@ -886,7 +886,7 @@ public class InsuranceController(
///
/// request object
/// Session/Player id
- /// GetInsuranceCostResponseData object to send to client
+ /// Dictionary keyed by trader with every item price from each trader
public GetInsuranceCostResponseData Cost(GetInsuranceCostRequestData request, MongoId sessionId)
{
var response = new GetInsuranceCostResponseData();
@@ -897,13 +897,13 @@ public class InsuranceController(
var inventoryItemsHash = pmcData.Inventory.Items.ToDictionary(item => item.Id);
// Loop over each trader in request
- foreach (var trader in request.Traders ?? [])
+ foreach (var traderId in request.Traders ?? [])
{
- var items = new Dictionary();
+ var traderItems = new Dictionary();
foreach (var itemId in request.Items ?? [])
{
- // Ensure hash has item in it
- if (!inventoryItemsHash.ContainsKey(itemId))
+ // Ensure inventory has item in it
+ if (!inventoryItemsHash.TryGetValue(itemId, out var inventoryItem))
{
if (logger.IsLogEnabled(LogLevel.Debug))
{
@@ -915,17 +915,24 @@ public class InsuranceController(
continue;
}
- items.TryAdd(
- inventoryItemsHash[itemId].Template,
- insuranceService.GetRoublePriceToInsureItemWithTrader(
- pmcData,
- inventoryItemsHash[itemId],
- trader
+ if (
+ !traderItems.TryAdd(
+ inventoryItem.Template,
+ insuranceService.GetRoublePriceToInsureItemWithTrader(
+ pmcData,
+ inventoryItem,
+ traderId
+ )
)
- );
+ )
+ {
+ logger.Warning(
+ $"Unable to add item id: {itemId.ToString()} to client/insurance/items/list/cost response, already exists"
+ );
+ }
}
- response.Add(trader, items);
+ response.Add(traderId, traderItems);
}
return response;
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostRequestData.cs
index e26cbd24..68fcde49 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Utils;
namespace SPTarkov.Server.Core.Models.Eft.Insurance;
@@ -9,8 +10,8 @@ public record GetInsuranceCostRequestData : IRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("traders")]
- public List? Traders { get; set; }
+ public List? Traders { get; set; }
[JsonPropertyName("items")]
- public List? Items { get; set; }
+ public List? Items { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostResponseData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostResponseData.cs
index 863202c1..a95d6017 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostResponseData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/GetInsuranceCostResponseData.cs
@@ -1,3 +1,5 @@
+using SPTarkov.Server.Core.Models.Common;
+
namespace SPTarkov.Server.Core.Models.Eft.Insurance;
-public class GetInsuranceCostResponseData : Dictionary> { }
+public class GetInsuranceCostResponseData : Dictionary> { }