using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Eft.Quests; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class QuestCallbacks( HttpResponseUtil _httpResponseUtil, QuestController _questController, RepeatableQuestController _repeatableQuestController ) { /// /// Handle RepeatableQuestChange event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse ChangeRepeatableQuest(PmcData pmcData, RepeatableQuestChangeRequest info, string sessionID) { return _repeatableQuestController.ChangeRepeatableQuest(pmcData, info, sessionID); } /// /// Handle QuestAccept event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse AcceptQuest(PmcData pmcData, AcceptQuestRequestData info, string sessionID) { if (info.Type == "repeatable") { return _repeatableQuestController.AcceptRepeatableQuest(pmcData, info, sessionID); } return _questController.AcceptQuest(pmcData, info, sessionID); } /// /// Handle QuestComplete event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse CompleteQuest(PmcData pmcData, CompleteQuestRequestData info, string sessionID) { return _questController.CompleteQuest(pmcData, info, sessionID); } /// /// Handle QuestHandover event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse HandoverQuest(PmcData pmcData, HandoverQuestRequestData info, string sessionID) { return _questController.HandoverQuest(pmcData, info, sessionID); } /// /// Handle client/quest/list /// /// /// /// Session/player id /// public ValueTask ListQuests(string url, ListQuestsRequestData info, string sessionID) { return new ValueTask(_httpResponseUtil.GetBody(_questController.GetClientQuests(sessionID))); } /// /// Handle client/repeatalbeQuests/activityPeriods /// /// /// /// Session/player id /// public ValueTask ActivityPeriods(string url, EmptyRequestData _, string sessionID) { return new ValueTask(_httpResponseUtil.GetBody(_repeatableQuestController.GetClientRepeatableQuests(sessionID))); } }