public void StoreQuestion(Question question)
        {
            using (var redis = RedisManager.GetClient())
            {
                var redisQuestions = redis.As<Question>();

                if (question.Tags == null) question.Tags = new List<string>();
                if (question.Id == default(long))
                {
                    question.Id = redisQuestions.GetNextSequence();
                    question.CreatedDate = DateTime.UtcNow;

                    //Increment the popularity for each new question tag
                    question.Tags.ForEach(tag => redis.IncrementItemInSortedSet(TagIndex.All, tag, 1));
                }

                redisQuestions.Store(question);
                redisQuestions.AddToRecentsList(question);
                redis.AddItemToSet(UserQuestionIndex.Questions(question.UserId), question.Id.ToString());

                //Populate tag => questions index for each tag
                question.Tags.ForEach(tag => redis.AddItemToSet(TagIndex.Questions(tag), question.Id.ToString()));
            }
        }
 public void Post(Question question)
 {
     Repository.StoreQuestion(question);
 }
 public void Delete(Question request)
 {
     Repository.DeleteQuestion(request.Id);
 }
 public object Get(Question question)
 {
     return new QuestionResponse {
         Result = Repository.GetQuestion(question.Id),
     };
 }