private Guid EnsureDefaultChannel(ImportGuideChannel channel, ChannelType channelType, bool updateChannelName) { using (GuideServiceAgent guideServiceAgent = new GuideServiceAgent()) { using (SchedulerServiceAgent schedulerServiceAgent = new SchedulerServiceAgent()) { Guid guideChannelId = guideServiceAgent.EnsureChannel(channel.ExternalId, channel.ChannelName, channelType); // If we have exactly one channel, check LCN and DisplayName : Channel[] channels = schedulerServiceAgent.GetChannelsForGuideChannel(guideChannelId); if (channels.Length == 1 && updateChannelName) { bool needsToBeSaved = false; if (channels[0].LogicalChannelNumber == null && channel.LogicalChannelNumber.HasValue) { channels[0].LogicalChannelNumber = channel.LogicalChannelNumber; needsToBeSaved = true; } if (channels[0].DisplayName != channel.ChannelName) { channels[0].DisplayName = channel.ChannelName; needsToBeSaved = true; } if (needsToBeSaved) { schedulerServiceAgent.SaveChannel(channels[0]); } } else if (channels.Length == 0) { // No channels linked to the GuideChannel. If we have an existing channel with the same name, then link it. Channel existingChannel = schedulerServiceAgent.GetChannelByDisplayName(channelType, channel.ChannelName); if (existingChannel != null) { existingChannel.LogicalChannelNumber = channel.LogicalChannelNumber; schedulerServiceAgent.SaveChannel(existingChannel); } else { schedulerServiceAgent.EnsureDefaultChannel(guideChannelId, channelType, channel.ChannelName, null); channels = schedulerServiceAgent.GetChannelsForGuideChannel(guideChannelId); if (channels.Length == 1) { channels[0].LogicalChannelNumber = channel.LogicalChannelNumber; schedulerServiceAgent.SaveChannel(channels[0]); } } } return(guideChannelId); } } }
private static Channel EnsureChannelForDvbEpg(SchedulerServiceAgent tvSchedulerAgent, TvDatabase.Channel mpChannel, bool epgSyncAutoCreateChannels, bool epgSyncAutoCreateChannelsWithGroup) { ChannelLink channelLink = ChannelLinks.GetChannelLinkForMediaPortalChannel(mpChannel); ChannelType channelType = mpChannel.IsTv ? ChannelType.Television : ChannelType.Radio; Channel channel = null; if (channelLink != null) { channel = tvSchedulerAgent.GetChannelById(channelLink.ChannelId); if (channel == null) { channel = tvSchedulerAgent.GetChannelByDisplayName(channelType, channelLink.ChannelName); } } if (channel == null) { channel = tvSchedulerAgent.GetChannelByDisplayName(channelType, mpChannel.DisplayName); } if (channel == null && (epgSyncAutoCreateChannels || epgSyncAutoCreateChannelsWithGroup)) { string groupName = "DVB-EPG"; if (epgSyncAutoCreateChannelsWithGroup) { IList <TvDatabase.GroupMap> groupMaps = mpChannel.ReferringGroupMap(); foreach (TvDatabase.GroupMap groupMap in groupMaps) { TvDatabase.ChannelGroup channelGroup = TvDatabase.ChannelGroup.Retrieve(groupMap.IdGroup); if (channelGroup != null) { groupName = channelGroup.GroupName; break; } } } Guid channelId = tvSchedulerAgent.EnsureChannel(channelType, mpChannel.DisplayName, groupName); channel = tvSchedulerAgent.GetChannelById(channelId); if (!channel.LogicalChannelNumber.HasValue && mpChannel.ChannelNumber > 0) { channel.LogicalChannelNumber = mpChannel.ChannelNumber; tvSchedulerAgent.SaveChannel(channel); } } return(channel); }
private static Channel EnsureChannelForDvbEpg(SchedulerServiceAgent tvSchedulerAgent, TvDatabase.Channel mpChannel, bool epgSyncAutoCreateChannels, bool epgSyncAutoCreateChannelsWithGroup) { ChannelLink channelLink = ChannelLinks.GetChannelLinkForMediaPortalChannel(mpChannel); ChannelType channelType = mpChannel.IsTv ? ChannelType.Television : ChannelType.Radio; Channel channel = null; if (channelLink != null) { channel = tvSchedulerAgent.GetChannelById(channelLink.ChannelId); if (channel == null) { channel = tvSchedulerAgent.GetChannelByDisplayName(channelType, channelLink.ChannelName); } } if (channel == null) { channel = tvSchedulerAgent.GetChannelByDisplayName(channelType, mpChannel.DisplayName); } if (channel == null && (epgSyncAutoCreateChannels || epgSyncAutoCreateChannelsWithGroup)) { string groupName = "DVB-EPG"; if (epgSyncAutoCreateChannelsWithGroup) { IList<TvDatabase.GroupMap> groupMaps = mpChannel.ReferringGroupMap(); foreach (TvDatabase.GroupMap groupMap in groupMaps) { TvDatabase.ChannelGroup channelGroup = TvDatabase.ChannelGroup.Retrieve(groupMap.IdGroup); if (channelGroup != null) { groupName = channelGroup.GroupName; break; } } } Guid channelId = tvSchedulerAgent.EnsureChannel(channelType, mpChannel.DisplayName, groupName); channel = tvSchedulerAgent.GetChannelById(channelId); if (!channel.LogicalChannelNumber.HasValue && mpChannel.ChannelNumber > 0) { channel.LogicalChannelNumber = mpChannel.ChannelNumber; tvSchedulerAgent.SaveChannel(channel); } } return channel; }
private Guid EnsureDefaultChannel(ImportGuideChannel channel, ChannelType channelType, bool updateChannelName) { using (GuideServiceAgent guideServiceAgent = new GuideServiceAgent()) { using (SchedulerServiceAgent schedulerServiceAgent = new SchedulerServiceAgent()) { Guid guideChannelId = guideServiceAgent.EnsureChannel(channel.ExternalId, channel.ChannelName, channelType); // If we have exactly one channel, check LCN and DisplayName : Channel[] channels = schedulerServiceAgent.GetChannelsForGuideChannel(guideChannelId); if (channels.Length == 1 && updateChannelName) { bool needsToBeSaved = false; if (channels[0].LogicalChannelNumber == null && channel.LogicalChannelNumber.HasValue) { channels[0].LogicalChannelNumber = channel.LogicalChannelNumber; needsToBeSaved = true; } if (channels[0].DisplayName != channel.ChannelName) { channels[0].DisplayName = channel.ChannelName; needsToBeSaved = true; } if (needsToBeSaved) { schedulerServiceAgent.SaveChannel(channels[0]); } } else if(channels.Length == 0) { // No channels linked to the GuideChannel. If we have an existing channel with the same name, then link it. Channel existingChannel = schedulerServiceAgent.GetChannelByDisplayName(channelType, channel.ChannelName); if (existingChannel != null) { existingChannel.LogicalChannelNumber = channel.LogicalChannelNumber; schedulerServiceAgent.SaveChannel(existingChannel); } else { schedulerServiceAgent.EnsureDefaultChannel(guideChannelId, channelType, channel.ChannelName, null); channels = schedulerServiceAgent.GetChannelsForGuideChannel(guideChannelId); if (channels.Length == 1) { channels[0].LogicalChannelNumber = channel.LogicalChannelNumber; schedulerServiceAgent.SaveChannel(channels[0]); } } } return guideChannelId; } } }
private void ImportChannel(GuideServiceAgent tvGuideAgent, SchedulerServiceAgent tvSchedulerAgent, ImportChannelsContext.ImportChannel importChannel) { Guid channelId; Channels.ChannelLink channelLink = Channels.ChannelLinks.GetChannelLinkForMediaPortalChannel(importChannel.Channel); if (channelLink == null) { Channel channel = new Channel(); channel.ChannelType = this.Context.ChannelType; channel.VisibleInGuide = true; channel.DisplayName = importChannel.Channel.DisplayName; channel.LogicalChannelNumber = importChannel.LogicalChannelNumber; channel.Sequence = importChannel.Channel.SortOrder; channel = tvSchedulerAgent.SaveChannel(channel); Channels.ChannelLinks.SetLinkedMediaPortalChannel(channel, importChannel.Channel); channelId = channel.ChannelId; } else { channelId = channelLink.ChannelId; } if (!_importChannelsOnlyRadioButton.Checked) { string groupName; int groupSequence; if (_importChannelsAndGroupsRadioButton.Checked) { groupName = importChannel.GroupName; groupSequence = importChannel.GroupSequence; } else { groupName = _groupNameTextBox.Text.Trim(); groupSequence = 0; } if (!String.IsNullOrEmpty(importChannel.GroupName)) { if (!_channelGroupsByName.ContainsKey(groupName)) { ChannelGroup channelGroup = new ChannelGroup(); channelGroup.GroupName = groupName; channelGroup.VisibleInGuide = true; channelGroup.ChannelType = this.Context.ChannelType; channelGroup.Sequence = groupSequence; channelGroup = tvSchedulerAgent.SaveChannelGroup(channelGroup); _channelGroupsByName[groupName] = channelGroup; _channelMembersByName[groupName] = new List<Guid>(); } if (!_channelMembersByName.ContainsKey(groupName)) { _channelMembersByName[groupName] = new List<Guid>( tvSchedulerAgent.GetChannelGroupMembers(_channelGroupsByName[groupName].ChannelGroupId)); } _channelMembersByName[groupName].Add(channelId); } } }
private void ImportChannel(GuideServiceAgent tvGuideAgent, SchedulerServiceAgent tvSchedulerAgent, ImportChannelsContext.ImportChannel importChannel) { Guid channelId; Channels.ChannelLink channelLink = Channels.ChannelLinks.GetChannelLinkForMediaPortalChannel(importChannel.Channel); if (channelLink == null) { Channel channel = new Channel(); channel.ChannelType = this.Context.ChannelType; channel.VisibleInGuide = true; channel.DisplayName = importChannel.Channel.DisplayName; channel.LogicalChannelNumber = importChannel.LogicalChannelNumber; channel.Sequence = importChannel.Channel.SortOrder; channel = tvSchedulerAgent.SaveChannel(channel); Channels.ChannelLinks.SetLinkedMediaPortalChannel(channel, importChannel.Channel); channelId = channel.ChannelId; } else { channelId = channelLink.ChannelId; } if (!_importChannelsOnlyRadioButton.Checked) { string groupName; int groupSequence; if (_importChannelsAndGroupsRadioButton.Checked) { groupName = importChannel.GroupName; groupSequence = importChannel.GroupSequence; } else { groupName = _groupNameTextBox.Text.Trim(); groupSequence = 0; } if (!String.IsNullOrEmpty(importChannel.GroupName)) { if (!_channelGroupsByName.ContainsKey(groupName)) { ChannelGroup channelGroup = new ChannelGroup(); channelGroup.GroupName = groupName; channelGroup.VisibleInGuide = true; channelGroup.ChannelType = this.Context.ChannelType; channelGroup.Sequence = groupSequence; channelGroup = tvSchedulerAgent.SaveChannelGroup(channelGroup); _channelGroupsByName[groupName] = channelGroup; _channelMembersByName[groupName] = new List <Guid>(); } if (!_channelMembersByName.ContainsKey(groupName)) { _channelMembersByName[groupName] = new List <Guid>( tvSchedulerAgent.GetChannelGroupMembers(_channelGroupsByName[groupName].ChannelGroupId)); } _channelMembersByName[groupName].Add(channelId); } } }