using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.DI; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Insurance; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable(TypePriority = OnUpdateOrder.InsuranceCallbacks)] public class InsuranceCallbacks( InsuranceController insuranceController, HttpResponseUtil httpResponseUtil, ConfigServer configServer ) : IOnUpdate { private readonly InsuranceConfig _insuranceConfig = configServer.GetConfig(); public Task OnUpdate(long secondsSinceLastRun) { if (secondsSinceLastRun < _insuranceConfig.RunIntervalSeconds) { return Task.FromResult(false); } insuranceController.ProcessReturn(); return Task.FromResult(true); } /// /// Handle client/insurance/items/list/cost /// /// /// /// Session/player id /// public ValueTask GetInsuranceCost( string url, GetInsuranceCostRequestData info, MongoId sessionID ) { return new ValueTask( httpResponseUtil.GetBody(insuranceController.Cost(info, sessionID)) ); } /// /// Handle Insure event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse Insure( PmcData pmcData, InsureRequestData info, MongoId sessionID ) { return insuranceController.Insure(pmcData, info, sessionID); } }