public async Task<QueryResult<SeriesTimerInfoDto>> GetSeriesTimers(SeriesTimerQuery query, CancellationToken cancellationToken) { var service = ActiveService; var timers = await service.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); if (string.Equals(query.SortBy, "Priority", StringComparison.OrdinalIgnoreCase)) { timers = query.SortOrder == SortOrder.Descending ? timers.OrderBy(i => i.Priority).ThenByStringDescending(i => i.Name) : timers.OrderByDescending(i => i.Priority).ThenByString(i => i.Name); } else { timers = query.SortOrder == SortOrder.Descending ? timers.OrderByStringDescending(i => i.Name) : timers.OrderByString(i => i.Name); } var returnArray = timers .Select(i => { string channelName = null; if (!string.IsNullOrEmpty(i.ChannelId)) { var internalChannelId = _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId); var channel = GetInternalChannel(internalChannelId); channelName = channel == null ? null : channel.Name; } return _tvDtoService.GetSeriesTimerInfoDto(i, service, channelName); }) .ToArray(); return new QueryResult<SeriesTimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
public async Task<QueryResult<SeriesTimerInfoDto>> GetSeriesTimers(SeriesTimerQuery query, CancellationToken cancellationToken) { var tasks = _services.Select(async i => { try { var recs = await i.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); return recs.Select(r => new Tuple<SeriesTimerInfo, ILiveTvService>(r, i)); } catch (Exception ex) { _logger.ErrorException("Error getting recordings", ex); return new List<Tuple<SeriesTimerInfo, ILiveTvService>>(); } }); var results = await Task.WhenAll(tasks).ConfigureAwait(false); var timers = results.SelectMany(i => i.ToList()); if (string.Equals(query.SortBy, "Priority", StringComparison.OrdinalIgnoreCase)) { timers = query.SortOrder == SortOrder.Descending ? timers.OrderBy(i => i.Item1.Priority).ThenByStringDescending(i => i.Item1.Name) : timers.OrderByDescending(i => i.Item1.Priority).ThenByString(i => i.Item1.Name); } else { timers = query.SortOrder == SortOrder.Descending ? timers.OrderByStringDescending(i => i.Item1.Name) : timers.OrderByString(i => i.Item1.Name); } var returnArray = timers .Select(i => { string channelName = null; if (!string.IsNullOrEmpty(i.Item1.ChannelId)) { var internalChannelId = _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId); var channel = GetInternalChannel(internalChannelId); channelName = channel == null ? null : channel.Name; } return _tvDtoService.GetSeriesTimerInfoDto(i.Item1, i.Item2, channelName); }) .ToArray(); return new QueryResult<SeriesTimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
private async Task GetScheduledSeriesRecordings(bool refresh) { if (!NavigationService.IsNetworkAvailable || (_seriesLoaded && !refresh)) { return; } try { SetProgressBar(AppResources.SysTrayGettingSeriesRecordings); var query = new SeriesTimerQuery(); var items = await ApiClient.GetLiveTvSeriesTimersAsync(query, default(CancellationToken)); if (items != null && !items.Items.IsNullOrEmpty()) { Series = new ObservableCollection<SeriesTimerInfoDto>(); items.Items.ToList().ForEach(Series.Add); _seriesLoaded = true; } } catch (HttpException ex) { Utils.HandleHttpException(ex, "GetScheduledRecordings()", NavigationService, Log); } SetProgressBar(); }
private async Task<QueryResult<SeriesTimerInfo>> GetSeriesTimersInternal(SeriesTimerQuery query, CancellationToken cancellationToken) { var tasks = _services.Select(async i => { try { var recs = await i.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); return recs.Select(r => { r.ServiceName = i.Name; return new Tuple<SeriesTimerInfo, ILiveTvService>(r, i); }); } catch (Exception ex) { _logger.ErrorException("Error getting recordings", ex); return new List<Tuple<SeriesTimerInfo, ILiveTvService>>(); } }); var results = await Task.WhenAll(tasks).ConfigureAwait(false); var timers = results.SelectMany(i => i.ToList()); if (string.Equals(query.SortBy, "Priority", StringComparison.OrdinalIgnoreCase)) { timers = query.SortOrder == SortOrder.Descending ? timers.OrderBy(i => i.Item1.Priority).ThenByStringDescending(i => i.Item1.Name) : timers.OrderByDescending(i => i.Item1.Priority).ThenByString(i => i.Item1.Name); } else { timers = query.SortOrder == SortOrder.Descending ? timers.OrderByStringDescending(i => i.Item1.Name) : timers.OrderByString(i => i.Item1.Name); } var returnArray = timers .Select(i => { return i.Item1; }) .ToArray(); return new QueryResult<SeriesTimerInfo> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
public async Task<QueryResult<SeriesTimerInfoDto>> GetSeriesTimers(SeriesTimerQuery query, CancellationToken cancellationToken) { var list = new List<SeriesTimerInfoDto>(); if (ActiveService != null) { var timers = await ActiveService.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); var dtos = timers.Select(i => _tvDtoService.GetSeriesTimerInfoDto(i, ActiveService)); list.AddRange(dtos); } var returnArray = list.OrderByDescending(i => i.StartDate) .ToArray(); return new QueryResult<SeriesTimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
public async Task<QueryResult<SeriesTimerInfoDto>> GetSeriesTimers(SeriesTimerQuery query, CancellationToken cancellationToken) { var service = ActiveService; var timers = await service.GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false); var returnArray = timers .Select(i => { string channelName = null; if (!string.IsNullOrEmpty(i.ChannelId)) { var internalChannelId = _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId); var channel = GetInternalChannel(internalChannelId.ToString("N")); channelName = channel == null ? null : channel.ChannelInfo.Name; } return _tvDtoService.GetSeriesTimerInfoDto(i, service, channelName); }) .OrderByDescending(i => i.StartDate) .ToArray(); return new QueryResult<SeriesTimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }