Beispiel #1
0
        internal static BrowseResponseModel ToBrowseResponseModel(this ClientModels.SurveyAnswerBrowsingContext browsingContext)
        {
            if (browsingContext == null)
            {
                throw new ArgumentNullException(nameof(browsingContext));
            }

            return(new BrowseResponseModel()
            {
                NextAnswerId = browsingContext.NextAnswerId,
                PreviousAnswerId = browsingContext.PreviousAnswerId,
                SurveyAnswer = browsingContext.SurveyAnswer?.ToSurveyAnswer()
            });
        }
Beispiel #2
0
        public async Task <ClientModels.SurveyAnswerBrowsingContext> GetSurveyAnswerBrowsingContextAsync(string slugName, string answerId)
        {
            if (string.IsNullOrWhiteSpace(slugName))
            {
                throw new ArgumentException($"{nameof(slugName)} cannot be null, empty, or only whitespace");
            }

            try
            {
                var containerName    = $"{slugName}-answers";
                var container        = surveyAnswerContainerFactory(containerName);
                var surveyAnswerList = await GetSurveyAnswerListAsync(slugName);

                var browsingContext = new ClientModels.SurveyAnswerBrowsingContext();
                if (surveyAnswerList.Count > 0)
                {
                    if (string.IsNullOrWhiteSpace(answerId))
                    {
                        answerId = surveyAnswerList[0];
                    }

                    if (await container.ExistsAsync())
                    {
                        var previousAnswerId = surveyAnswerList
                                               .TakeWhile(s => string.Compare(s, answerId) != 0)
                                               .LastOrDefault();
                        var nextAnswerId = surveyAnswerList
                                           .SkipWhile(s => string.Compare(s, answerId) != 0)
                                           .Skip(1)
                                           .FirstOrDefault();
                        var surveyAnswer = await container.GetAsync(answerId);

                        browsingContext.NextAnswerId     = nextAnswerId;
                        browsingContext.PreviousAnswerId = previousAnswerId;
                        browsingContext.SurveyAnswer     = surveyAnswer?.ToSurveyAnswer();
                    }
                }

                return(browsingContext);
            }
            catch (Exception ex)
            {
                ServiceEventSource.Current.ServiceRequestFailed(ex.ToString());
                throw;
            }
        }