Ejemplo n.º 1
0
        public async Task <SurveyAnswerBrowsingContext> GetSurveyAnswerBrowsingContextAsync(string slugName, string answerId)
        {
            SurveyAnswerBrowsingContext browsingContext = null;

            HttpResponseMessage response = await httpClient.GetAsync($"api/surveyanswers?slugName={slugName}&answerId={answerId}");

            response.EnsureSuccessStatusCode();

            string content = await response.Content.ReadAsStringAsync();

            browsingContext = JsonConvert.DeserializeObject <SurveyAnswerBrowsingContext>(content);

            return(browsingContext);
        }
Ejemplo n.º 2
0
        public async Task <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 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 new SurveyAnswerServiceException();
            }
        }