public async Task <bool> ChangeCharacterVisual(string userID, string charID, JObject charVisual)
        {
            var character = await characterCache.GetCharacter(charID);

            if (character != null)
            {
                if (character.character.userID == userID)
                {
                    var user = await getCharacterData.GetUserData(userID);

                    if (user != null)
                    {
                        if (user.userData.characterAlterationLimit > 0)
                        {
                            user.userData.characterAlterationLimit--;
                            var userRes = await setCharacterData.SetUserData(userID, user.userData);

                            if (userRes)
                            {
                                character.visualData = charVisual;
                                eventManager.InvokeEvent(UserServiceEvents.CHARACTER_CHANGE_EVENT, charID);
                                return(true);
                            }
                        }
                    }
                }
            }
            return(false);
        }
        public async Task <bool> CreateCharacter(string userID, string charName, JObject visualData)
        {
            var user = await getCharacterData.GetUserData(userID);

            if (user == null)
            {
                return(false);
            }
            var oldChar = await getCharacterData.GetCharacterByName(charName);

            if (oldChar != null)
            {
                return(false);
            }
            if (user.userData.characterCreationLimit > 0)
            {
                var guid    = Guid.NewGuid().ToString();
                var newChar = new CharacterFull
                {
                    characterVisualData = visualData,
                    userID        = userID,
                    characterName = charName,
                    characterID   = guid
                };
                user.userData.characterCreationLimit--;
                var res = await createCharacter.CreateCharacter(newChar, user);

                if (res)
                {
                    eventManager.InvokeEvent(UserServiceEvents.CHARACTER_CREATE_EVENT, guid, userID);
                }
                else
                {
                    user.userData.characterCreationLimit++;
                }
                return(res);
            }

            return(false);
        }