public void PlayerCanCreateACustomSpecialist()
        {
            SubmitCustomSpecialistRequest request = createSpecialistRequest("MyCustomSpecialist");

            SubmitCustomSpecialistResponse response = client.SubmitCustomSpecialist(request);

            Assert.IsTrue(response.Status.IsSuccess);
            Assert.NotNull(response.SpecialistConfigurationId);
        }
        public override async Task <SubmitCustomSpecialistResponse> SubmitCustomSpecialist(SubmitCustomSpecialistRequest request, ServerCallContext context)
        {
            DbUserModel user = context.UserState["user"] as DbUserModel;

            if (user == null)
            {
                return new SubmitCustomSpecialistResponse()
                       {
                           Status = ResponseFactory.createResponse(ResponseType.UNAUTHORIZED)
                       }
            }
            ;

            // Set author
            request.Configuration.Creator = user.AsUser();
            SpecialistConfigurationModel configModel = new SpecialistConfigurationModel(request.Configuration);
            await configModel.saveToRedis();

            // Get the generated specialist ID
            string specialistId = configModel.SpecialistConfig.Id;

            return(new SubmitCustomSpecialistResponse()
            {
                Status = ResponseFactory.createResponse(ResponseType.SUCCESS),
                SpecialistConfigurationId = specialistId,
            });
        }