using SPTarkov.Server.Core.Controllers;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Launcher;
using SPTarkov.Server.Core.Models.Eft.Profile;
using SPTarkov.Server.Core.Models.Enums;
using SPTarkov.Server.Core.Utils;
using SPTarkov.Common.Annotations;
namespace SPTarkov.Server.Core.Callbacks;
[Injectable]
public class ProfileCallbacks(
HttpResponseUtil _httpResponse,
TimeUtil _timeUtil,
ProfileController _profileController,
ProfileHelper _profileHelper
)
{
///
/// Handle client/game/profile/create
///
///
public string CreateProfile(string url, ProfileCreateRequestData info, string sessionID)
{
var id = _profileController.CreateProfile(info, sessionID);
return _httpResponse.GetBody(
new CreateProfileResponse
{
UserId = id
}
);
}
///
/// Handle client/game/profile/list
/// Get the complete player profile (scav + pmc character)
///
///
public string GetProfileData(string url, EmptyRequestData _, string sessionID)
{
return _httpResponse.GetBody(_profileController.GetCompleteProfile(sessionID));
}
///
/// Handle client/game/profile/savage/regenerate
/// Handle the creation of a scav profile for player
/// Occurs post-raid and when profile first created immediately after character details are confirmed by player
///
///
public string RegenerateScav(string url, EmptyRequestData _, string sessionID)
{
return _httpResponse.GetBody(
new List
{
_profileController.GeneratePlayerScav(sessionID)
}
);
}
///
/// Handle client/game/profile/voice/change event
///
///
public string ChangeVoice(string url, ProfileChangeVoiceRequestData info, string sessionID)
{
_profileController.ChangeVoice(info, sessionID);
return _httpResponse.NullResponse();
}
///
/// Handle client/game/profile/nickname/change event
/// Client allows player to adjust their profile name
///
///
public string ChangeNickname(string url, ProfileChangeNicknameRequestData info, string sessionID)
{
var output = _profileController.ChangeNickname(info, sessionID);
return output switch
{
"taken" => _httpResponse.GetBody