public override Task <Trackmanagement.NumberMessage> GetTrackCount(Trackmanagement.SortRequest request, ServerCallContext context) { int trackCount = FilterTracks(request).Length; return(Task.FromResult(new Trackmanagement.NumberMessage { Value = trackCount })); }
private Trackmanagement.Track[] FilterAndSortTracks(Trackmanagement.SortRequest request) { var tracks = FilterTracks(request); switch (request.SortBy) { case "Name": { tracks = tracks.OrderBy(t => t.Name).ToArray(); break; } case "Slot": { tracks = tracks.OrderBy(t => t.Slot).ToArray(); break; } case "Type": { tracks = tracks.OrderBy(t => t.Type).ToArray(); break; } case "Author": { tracks = tracks.OrderBy(t => t.Author).ToArray(); break; } case "Date Created": { tracks = tracks.OrderByDescending(t => t.Date).ToArray(); break; } case "Installs": { tracks = tracks.OrderByDescending(t => t.Installs).ToArray(); break; } case "My Installs": { tracks = tracks.OrderByDescending(t => t.MyInstalls).ToArray(); break; } case "Favorite": { tracks = tracks.OrderByDescending(t => t.Favorite).ToArray(); break; } } return(tracks); }
private Trackmanagement.Track[] FilterTracks(Trackmanagement.SortRequest request) { var tracks = Reflex.GetDisplayTracks(); if (request.TrackType != "All Track Types") { tracks = tracks.Where(t => t.Type == request.TrackType).ToArray(); } if (request.Slot != "All Slots") { int slot = Convert.ToInt32(request.Slot); tracks = tracks.Where(t => t.Slot == slot).ToArray(); } return(tracks); }