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); }
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(); } }