private async Task <SkillResponse> CommuteAsync(ICollection <string> favoriteLines) { IList <Line> lines = await GetStatusesAsync(string.Join(",", favoriteLines)); var paragraphs = new List <string>(); bool hasMultipleStatuses = lines.Count > 1; foreach (Line line in lines.OrderBy((p) => p.Name, StringComparer.Ordinal)) { string text = StatusIntent.GenerateResponse(new[] { line }); if (hasMultipleStatuses) { string displayName = Verbalizer.LineName(line.Name, asTitleCase: true); text = string.Format(CultureInfo.CurrentCulture, Strings.CommuteIntentPrefixFormat, displayName, text); } paragraphs.Add(text); } return(SkillResponseBuilder .Tell(paragraphs) .WithCard(Strings.CommuteIntentCardTitle, string.Join("\n", paragraphs)) .Build()); }
/// <summary> /// Generates the summary text to respond for a single line status. /// </summary> /// <param name="name">The name of the line.</param> /// <param name="status">The status for a line.</param> /// <returns> /// The response text for the specified line status. /// </returns> private static string GenerateSummaryResponse(string name, LineStatus status) { string format; if (status.StatusSeverity == LineStatusSeverity.ServiceClosed) { format = Strings.StatusIntentClosedFormat; } else { Debug.Assert( status.StatusSeverity == LineStatusSeverity.GoodService || status.StatusSeverity == LineStatusSeverity.NoIssues, $"'{status.StatusSeverity}' is not supported for a summary response."); format = Strings.StatusIntentGoodServiceFormat; } var culture = CultureInfo.CurrentCulture; string spokenName = Verbalizer.LineName(name); string statusText = string.Format(culture, format, spokenName); return(char.ToUpper(statusText[0], culture) + statusText.Substring(1)); }