using System; using System.Collections.Generic; using System.Linq; using Nancy; using Sony.Filtr.AdminAPI.Modules.TrackPlaylistAdds.ViewModels; using Sony.Filtr.AdminAPI.ViewModels.Graph; using Sony.Filtr.Contracts.Abstractions; using Sony.Filtr.Playlists.Spotify; using Sony.Filtr.Utility; namespace Sony.Filtr.AdminAPI.Modules.TrackPlaylistAdds { public partial class TrackPlaylistAddsGraphModule : BaseModule { public TrackPlaylistAddsGraphModule(IApplicationInstanceManager applicationInstanceManager, SpotifyPlaylistHistoricTrackListManager spotifyPlaylistHistoricTrackListManager) : base(applicationInstanceManager) { Get["TrackPlaylistAddsGraph", "/TrackPlaylistAdds/Graph", true] = async (parameters, cx) => { string isrc = (string)Request.Query.isrc; if (string.IsNullOrWhiteSpace(isrc)) return HttpStatusCode.BadRequest; DateTime startDate = Maybe.ToDateTimeOrFallback((string)Request.Query.startDate, DateTime.Today.AddDays(-30)); DateTime endDate = Maybe.ToDateTimeOrFallback((string)Request.Query.endDate, DateTime.Today); var result = await spotifyPlaylistHistoricTrackListManager.GetTrackPlaylistsOverTimeAsync(isrc, startDate, endDate); var viewModel = new GraphViewModel { Series = new List() { new TrackPlaylistAddsSeriesViewModel() { Entries = result.Select(e => new TrackPlaylistAddsGraphEntry() { Date = e.Date, PlaylistCount = e.PlaylistCount, PlaylistSubscribers = e.PlaylistFollowers, }).OrderBy(e => e.Date).ToList() } } }; return Response.AsJson(viewModel); }; } } }