using Core.Controllers; using Core.DI; using Core.Models.Eft.Common; using Core.Models.Eft.ItemEvent; using Core.Models.Eft.Ragfair; using Core.Models.Spt.Config; using Core.Servers; using Core.Services; using Core.Utils; using SptCommon.Annotations; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.RagfairCallbacks)] [Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.RagfairCallbacks)] [Injectable(InjectableTypeOverride = typeof(RagfairCallbacks))] public class RagfairCallbacks( HttpResponseUtil _httpResponseUtil, RagfairServer _ragfairServer, RagfairController _ragfairController, RagfairTaxService _ragfairTaxService, RagfairPriceService _ragfairPriceService, ConfigServer _configServer ) : IOnLoad, IOnUpdate { private readonly RagfairConfig _ragfairConfig = _configServer.GetConfig(); public Task OnLoad() { _ragfairServer.Load(); _ragfairPriceService.Load(); return Task.CompletedTask; } public string GetRoute() { return "spt-ragfair"; } public bool OnUpdate(long timeSinceLastRun) { if (timeSinceLastRun > _ragfairConfig.RunIntervalSeconds) { // There is a flag inside this class that only makes it run once. _ragfairServer.AddPlayerOffers(); // Check player offers and mail payment to player if sold _ragfairController.Update(); // Process all offers / expire offers _ragfairServer.Update(); return true; } return false; } /// /// Handle client/ragfair/search /// Handle client/ragfair/find /// /// /// /// Session/player id /// public string Search(string url, SearchRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_ragfairController.GetOffers(sessionID, info)); } /// /// Handle client/ragfair/itemMarketPrice /// /// /// /// Session/player id /// public string GetMarketPrice(string url, GetMarketPriceRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_ragfairController.GetItemMinAvgMaxFleaPriceValues(info)); } /// /// Handle RagFairAddOffer event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse AddOffer(PmcData pmcData, AddOfferRequestData info, string sessionID) { return _ragfairController.AddPlayerOffer(pmcData, info, sessionID); } /// /// Handle RagFairRemoveOffer event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse RemoveOffer(PmcData pmcData, RemoveOfferRequestData info, string sessionID) { return _ragfairController.FlagOfferForRemoval(info.OfferId, sessionID); } /// /// Handle RagFairRenewOffer event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse ExtendOffer(PmcData pmcData, ExtendOfferRequestData info, string sessionID) { return _ragfairController.ExtendOffer(info, sessionID); } /// /// Handle /client/items/prices /// Called when clicking an item to list on flea /// /// /// /// Session/player id /// public string GetFleaPrices(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_ragfairController.GetAllFleaPrices()); } /// /// Handle client/reports/ragfair/send /// /// /// /// Session/player id /// public string SendReport(string url, SendRagfairReportRequestData info, string sessionID) { return _httpResponseUtil.NullResponse(); } public string StorePlayerOfferTaxAmount(string url, StorePlayerOfferTaxAmountRequestData info, string sessionID) { _ragfairTaxService.StoreClientOfferTaxValue(sessionID, info); return _httpResponseUtil.NullResponse(); } /// /// Handle client/ragfair/offer/findbyid /// /// /// /// Session/player id /// public string GetFleaOfferById(string url, GetRagfairOfferByIdRequest info, string sessionID) { return _httpResponseUtil.GetBody(_ragfairController.GetOfferById(sessionID, info)); } }