//[AuthorizeJwt(GuardianApplicationRole.ZoneServer)] //TODO: Eventually we'll need to auth these zoneservers. public async Task <IActionResult> UpdatePlayerAvatar([FromBody][NotNull] ZoneServerAvatarPedestalInteractionCharacterRequest requestModel, [FromServices][NotNull] IGameObjectBehaviourDataServiceClient <AvatarPedestalInstanceModel> avatarPedestalModel, [FromServices][NotNull] ICharacterAppearanceRepository characterAppearanceRepository) { if (avatarPedestalModel == null) { throw new ArgumentNullException(nameof(avatarPedestalModel)); } if (characterAppearanceRepository == null) { throw new ArgumentNullException(nameof(characterAppearanceRepository)); } //If this fails we have problems that can be mitigated. CharacterAppearanceModel appearanceModel = await characterAppearanceRepository.RetrieveAsync(requestModel.CharacterGuid.EntityId); try { var behaviourInstanceResponse = await avatarPedestalModel.GetBehaviourInstance(requestModel.AvatarPedestalId); if (behaviourInstanceResponse.isSuccessful) { //we can properly change. appearanceModel.AvatarModelId = behaviourInstanceResponse.Result.AvatarModelId; await characterAppearanceRepository.UpdateAsync(requestModel.CharacterGuid.EntityId, appearanceModel); //return BadRequest($"Cannot query data for Avatar Pedestal: {requestModel.AvatarPedestalId} Reason: {behaviourInstanceResponse.ResultCode.ToString()}"); } } catch (Exception e) { if (Logger.IsEnabled(LogLevel.Error)) { Logger.LogError($"Encountered exception: {e.Message} in {nameof(UpdatePlayerAvatar)}.\n\nStack: {e.StackTrace}"); } } //No matter what we should return the current. return(Json(new AvatarPedestalChangeResponse((int)appearanceModel.AvatarModelId))); }
public async Task <AvatarPedestalChangeResponse> UpdatePlayerAvatar(ZoneServerAvatarPedestalInteractionCharacterRequest request) { return(await(await GetService().ConfigureAwaitFalse()).UpdatePlayerAvatar(request).ConfigureAwaitFalse()); }