Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Services/RagfairRequiredItemsService.cs
T

45 lines
1.3 KiB
C#

using System.Collections.Concurrent;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Eft.Ragfair;
namespace SPTarkov.Server.Core.Services;
[Injectable(InjectionType.Singleton)]
public class RagfairRequiredItemsService(
RagfairOfferService _ragfairOfferService,
PaymentHelper _paymentHelper)
{
protected ConcurrentDictionary<string, List<RagfairOffer>> _requiredItemsCache = new();
public List<RagfairOffer> GetRequiredItemsById(string searchId)
{
if (_requiredItemsCache.TryGetValue(searchId, out var list))
{
return list;
}
return [];
}
public void BuildRequiredItemTable()
{
_requiredItemsCache.Clear();
foreach (var offer in _ragfairOfferService.GetOffers())
foreach (var requirement in offer.Requirements)
{
if (_paymentHelper.IsMoneyTpl(requirement.Template))
// This would just be too noisy
{
continue;
}
// Ensure key is init
_requiredItemsCache.TryAdd(requirement.Template, []);
// Add matching offer
_requiredItemsCache.GetValueOrDefault(requirement.Template)?.Add(offer);
}
}
}