using System.Collections.Generic; using System.Linq; using Sony.ChartBot.Entities; using Sony.ChartBot.Entities.MessengerApi; using Sony.ChartBot.Entities.Storage; using Sony.ChartBot.Messages.Helpers; namespace Sony.ChartBot.Messages.MessageBuilders { public class ComparisonMessageBuilder : IMessageBuilder> { public ResponseType ResponseType => ResponseType.Succeeded; public IEnumerable BuildMessages(IEnumerable data) { var elements = new List(); var outputBuilder = new ChartPositionOutputBuilder(); // Currently only 2 tracks with 2 positions each supported due to limitaions i template foreach (var track in data.Take(2)) { foreach (var position in track.Positions.Take(2)) { var positionText = outputBuilder.GetChartPositionComparisonText(track.Country, position); var element = new Element { title = $"{position.ChartType} - {track.TrackName} by {track.ArtistName}", subtitle = positionText, image_url = track.TrackArtworkUrl ?? track.ArtistArtworkUrl }; elements.Add(element); } } elements = elements.OrderBy(e => e.title).ToList(); // Order by title to maintain same order of charts and tracks return new[] { new MessageToSend { attachment = new Attachment { type = "template", payload = new ListTemplatePayload { template_type = "list", elements = elements, top_element_style = "compact", buttons = new[] { new Button { title = "Next artist", type = "postback", payload = "next" } } } } } }; } } }