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