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