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,
            });
        }
        public override async Task <GetCustomSpecialistsResponse> GetCustomSpecialists(GetCustomSpecialistsRequest request, ServerCallContext context)
        {
            DbUserModel user = context.UserState["user"] as DbUserModel;

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

            // Search through all specialists for the search term.
            List <SpecialistConfigurationModel> results = (await SpecialistConfigurationModel.Search(request.SearchTerm)).Skip((int)request.PageNumber * 50).Take(50).ToList();

            GetCustomSpecialistsResponse response = new GetCustomSpecialistsResponse()
            {
                Status = ResponseFactory.createResponse(ResponseType.SUCCESS),
            };

            foreach (SpecialistConfigurationModel model in results)
            {
                response.CustomSpecialists.Add(model.SpecialistConfig);
            }

            return(response);
        }