Example #1
0
        public Result GetNextQuestion()
        {
            if (this.Current == null || DateTime.Now > this.Expiry)
            {
                using (var repository = new Repository())
                {
                    repository.BeginTransaction();

                    var datapoint = repository.GetNextDatapoint();
                    if (datapoint == null)
                        return null;

                    repository.SetDatapointUsed(datapoint.ID);
                    var related = repository.GetRelatedDatapoints(datapoint.ID);

                    this.Current = new Result();
                    this.Current.Focus = datapoint;
                    this.Current.Related = related;

                    this.Expiry = DateTime.Now.AddSeconds(Constants.QuestionTimeout);

                    repository.CommitTransaction();
                }
            }

            this.Current.ExpiresIn = this.Expiry.Subtract(DateTime.Now).TotalSeconds;

            return this.Current;
        }