diff --git a/Libraries/Core/Services/RagfairRequiredItemsService.cs b/Libraries/Core/Services/RagfairRequiredItemsService.cs index 7e9951d7..008fbf51 100644 --- a/Libraries/Core/Services/RagfairRequiredItemsService.cs +++ b/Libraries/Core/Services/RagfairRequiredItemsService.cs @@ -1,19 +1,40 @@ -using SptCommon.Annotations; +using Core.Helpers; +using SptCommon.Annotations; using Core.Models.Eft.Ragfair; namespace Core.Services; [Injectable(InjectionType.Singleton)] -public class RagfairRequiredItemsService +public class RagfairRequiredItemsService( + RagfairOfferService _ragfairOfferService, + PaymentHelper _paymentHelper) { - public List GetRequiredItemsById(string searchId) + + protected Dictionary> _requiredItemsCache; + + public List? GetRequiredItemsById(string searchId) { - Console.WriteLine($"actually implement me plz: owo: GetRequiredItemsById"); - return new List(); + _requiredItemsCache.TryGetValue(searchId, out var list); + return list; } public void BuildRequiredItemTable() { - Console.WriteLine($"actually implement me plz: owo: BuildRequiredItemTable"); + _requiredItemsCache = new Dictionary>(); + 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[requirement.Template].Add(offer); + } + } } }