public Task<QueryResult<ChannelInfoDto>> GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); IEnumerable<LiveTvChannel> channels = _channels.Values; if (user != null) { channels = channels .Where(i => i.IsParentalAllowed(user, _localization)) .OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.ChannelInfo.Number)) { double.TryParse(i.ChannelInfo.Number, out number); } return number; }); } var returnChannels = channels.OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.ChannelInfo.Number)) { double.TryParse(i.ChannelInfo.Number, out number); } return number; }).ThenBy(i => i.Name) .Select(i => _tvDtoService.GetChannelInfoDto(i, user)) .ToArray(); var result = new QueryResult<ChannelInfoDto> { Items = returnChannels, TotalRecordCount = returnChannels.Length }; return Task.FromResult(result); }
public Task<QueryResult<ChannelInfoDto>> GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); var channels = _channelIdList.Select(_libraryManager.GetItemById) .Where(i => i != null) .OfType<LiveTvChannel>(); if (user != null) { // Avoid implicitly captured closure var currentUser = user; channels = channels .Where(i => i.IsParentalAllowed(currentUser)) .OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.Number)) { double.TryParse(i.Number, out number); } return number; }); } channels = channels.OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.Number)) { double.TryParse(i.Number, out number); } return number; }).ThenBy(i => i.Name); var allChannels = channels.ToList(); IEnumerable<LiveTvChannel> allEnumerable = allChannels; if (query.StartIndex.HasValue) { allEnumerable = allEnumerable.Skip(query.StartIndex.Value); } if (query.Limit.HasValue) { allEnumerable = allEnumerable.Take(query.Limit.Value); } var returnChannels = allEnumerable .Select(i => _tvDtoService.GetChannelInfoDto(i, GetCurrentProgram(i.ExternalId), user)) .ToArray(); var result = new QueryResult<ChannelInfoDto> { Items = returnChannels, TotalRecordCount = allChannels.Count }; return Task.FromResult(result); }
public async Task<QueryResult<ChannelInfoDto>> GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); var channels = _channelIdList.Select(_libraryManager.GetItemById) .Where(i => i != null) .OfType<LiveTvChannel>(); if (user != null) { // Avoid implicitly captured closure var currentUser = user; channels = channels .Where(i => i.IsParentalAllowed(currentUser)) .OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.Number)) { double.TryParse(i.Number, out number); } return number; }); if (query.IsFavorite.HasValue) { var val = query.IsFavorite.Value; channels = channels .Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite == val); } } channels = channels.OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.Number)) { double.TryParse(i.Number, out number); } return number; }).ThenBy(i => i.Name); var allChannels = channels.ToList(); IEnumerable<LiveTvChannel> allEnumerable = allChannels; if (query.StartIndex.HasValue) { allEnumerable = allEnumerable.Skip(query.StartIndex.Value); } if (query.Limit.HasValue) { allEnumerable = allEnumerable.Take(query.Limit.Value); } var returnList = new List<ChannelInfoDto>(); foreach (var channel in allEnumerable) { var currentProgram = await GetCurrentProgram(channel.ExternalId, cancellationToken).ConfigureAwait(false); returnList.Add(_tvDtoService.GetChannelInfoDto(channel, currentProgram, user)); } var result = new QueryResult<ChannelInfoDto> { Items = returnList.ToArray(), TotalRecordCount = allChannels.Count }; return result; }
public IEnumerable<Channel> GetChannels(ChannelQuery query) { return _channels.OrderBy(i => { double number = 0; if (!string.IsNullOrEmpty(i.ChannelNumber)) { double.TryParse(i.ChannelNumber, out number); } return number; }).ThenBy(i => i.Name); }