public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) { var service = ActiveService; var timers = await service.GetTimersAsync(cancellationToken).ConfigureAwait(false); if (!string.IsNullOrEmpty(query.ChannelId)) { var guid = new Guid(query.ChannelId); timers = timers.Where(i => guid == _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId)); } if (!string.IsNullOrEmpty(query.SeriesTimerId)) { var guid = new Guid(query.SeriesTimerId); var currentServiceName = service.Name; timers = timers .Where(i => _tvDtoService.GetInternalSeriesTimerId(currentServiceName, i.SeriesTimerId) == guid); } var returnList = new List<TimerInfoDto>(); foreach (var i in timers) { var program = string.IsNullOrEmpty(i.ProgramId) ? null : await GetInternalProgram(_tvDtoService.GetInternalProgramId(service.Name, i.ProgramId).ToString("N"), cancellationToken).ConfigureAwait(false); var channel = string.IsNullOrEmpty(i.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.ChannelId)); returnList.Add(_tvDtoService.GetTimerInfoDto(i, service, program, channel)); } var returnArray = returnList .OrderBy(i => i.StartDate) .ToArray(); return new QueryResult<TimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
private async Task<bool> GetScheduledRecordings() { try { SetProgressBar(AppResources.SysTrayGettingUpcomingRecordings); var query = new TimerQuery { SeriesTimerId = SelectedSeries.Id }; var items = await ApiClient.GetLiveTvTimersAsync(query); if (items != null && !items.Items.IsNullOrEmpty()) { var upcomingItems = items.Items; var groupedItems = (from u in upcomingItems group u by u.StartDate.ToLocalTime().Date into grp orderby grp.Key select new Group<TimerInfoDto>(Utils.CoolDateName(grp.Key), grp)).ToList(); ScheduledRecordings = groupedItems; SetProgressBar(); return true; } } catch (HttpException ex) { Utils.HandleHttpException(ex, "GetScheduledRecordings()", NavigationService, Log); } SetProgressBar(); return false; }
public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) { var tasks = _services.Select(async i => { try { var recs = await i.GetTimersAsync(cancellationToken).ConfigureAwait(false); return recs.Select(r => new Tuple<TimerInfo, ILiveTvService>(r, i)); } catch (Exception ex) { _logger.ErrorException("Error getting recordings", ex); return new List<Tuple<TimerInfo, ILiveTvService>>(); } }); var results = await Task.WhenAll(tasks).ConfigureAwait(false); var timers = results.SelectMany(i => i.ToList()); if (!string.IsNullOrEmpty(query.ChannelId)) { var guid = new Guid(query.ChannelId); timers = timers.Where(i => guid == _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId)); } if (!string.IsNullOrEmpty(query.SeriesTimerId)) { var guid = new Guid(query.SeriesTimerId); timers = timers .Where(i => _tvDtoService.GetInternalSeriesTimerId(i.Item2.Name, i.Item1.SeriesTimerId) == guid); } var returnList = new List<TimerInfoDto>(); foreach (var i in timers) { var program = string.IsNullOrEmpty(i.Item1.ProgramId) ? null : GetInternalProgram(_tvDtoService.GetInternalProgramId(i.Item2.Name, i.Item1.ProgramId).ToString("N")); var channel = string.IsNullOrEmpty(i.Item1.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId)); returnList.Add(_tvDtoService.GetTimerInfoDto(i.Item1, i.Item2, program, channel)); } var returnArray = returnList .OrderBy(i => i.StartDate) .ToArray(); return new QueryResult<TimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }
public async Task<QueryResult<TimerInfoDto>> GetTimers(TimerQuery query, CancellationToken cancellationToken) { var list = new List<TimerInfoDto>(); if (ActiveService != null) { var timers = await ActiveService.GetTimersAsync(cancellationToken).ConfigureAwait(false); var dtos = timers.Select(i => _tvDtoService.GetTimerInfoDto(i, ActiveService)); list.AddRange(dtos); } if (!string.IsNullOrEmpty(query.ChannelId)) { list = list.Where(i => string.Equals(i.ChannelId, query.ChannelId)) .ToList(); } var returnArray = list.OrderBy(i => i.StartDate) .ToArray(); return new QueryResult<TimerInfoDto> { Items = returnArray, TotalRecordCount = returnArray.Length }; }