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 { protected 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); } }