private void MergeExtraPrograms(Channel channel, ChannelPrograms channelPrograms, DateTime fromDateTime, DateTime toDateTime) { if (toDateTime > fromDateTime) { var guidePrograms = Proxies.GuideService.GetChannelProgramsBetween(channel.GuideChannelId.Value, fromDateTime, toDateTime).Result; foreach (GuideProgramSummary guideProgram in guidePrograms) { channelPrograms.InsertProgram(guideProgram); } } }
private void MergeExtraPrograms(IGuideService tvGuideAgent, Channel channel, ChannelPrograms channelPrograms, DateTime fromDateTime, DateTime toDateTime) { if (toDateTime > fromDateTime) { GuideProgramSummary[] guidePrograms = tvGuideAgent.GetChannelProgramsBetween(channel.GuideChannelId.Value, fromDateTime, toDateTime); foreach (GuideProgramSummary guideProgram in guidePrograms) { channelPrograms.InsertProgram(guideProgram); } } }
public void RefreshChannelsEpgData(List <Channel> channels, DateTime fromDateTime, DateTime toDateTime, CancellationPendingDelegate cancellationPending) { foreach (Channel channel in channels) { if (channel.GuideChannelId.HasValue) { if (_model.ProgramsByChannel.ContainsKey(channel.ChannelId)) { ChannelPrograms channelPrograms = _model.ProgramsByChannel[channel.ChannelId]; if (channelPrograms.LowerBoundTime >= toDateTime || channelPrograms.UpperBoundTime <= fromDateTime) { _model.ProgramsByChannel.Remove(channel.ChannelId); } else if (channelPrograms.LowerBoundTime <= fromDateTime && channelPrograms.UpperBoundTime <= toDateTime) { DateTime newUpperBoundTime = channelPrograms.UpperBoundTime.AddHours(8); if (toDateTime > newUpperBoundTime) { newUpperBoundTime = toDateTime; } MergeExtraPrograms(channel, channelPrograms, channelPrograms.UpperBoundTime, newUpperBoundTime); channelPrograms.UpperBoundTime = newUpperBoundTime; } else if (channelPrograms.LowerBoundTime >= fromDateTime && channelPrograms.UpperBoundTime >= toDateTime) { DateTime newLowerBoundTime = channelPrograms.LowerBoundTime.AddHours(-8); if (fromDateTime < newLowerBoundTime) { newLowerBoundTime = fromDateTime; } MergeExtraPrograms(channel, channelPrograms, newLowerBoundTime, channelPrograms.LowerBoundTime); channelPrograms.LowerBoundTime = newLowerBoundTime; } } if (cancellationPending != null && cancellationPending()) { return; } if (!_model.ProgramsByChannel.ContainsKey(channel.ChannelId)) { _model.ProgramsByChannel[channel.ChannelId] = new ChannelPrograms(fromDateTime, toDateTime, Proxies.GuideService.GetChannelProgramsBetween(channel.GuideChannelId.Value, fromDateTime, toDateTime).Result); } } else { _model.ProgramsByChannel[channel.ChannelId] = new ChannelPrograms(fromDateTime, toDateTime, new GuideProgramSummary[] { }); } if (cancellationPending != null && cancellationPending()) { break; } } }