public static bool CardFreeOrUsingSameTransponder(TvDatabase.Card card, TvDatabase.Channel channel, IUser userToIgnore)
{
IUser[] cardUsers = TvServerPlugin.TvController_GetUsersForCard(card.IdCard);
if (cardUsers != null)
{
TvDatabase.TuningDetail tuning = Utility.FindTuningDetailOnCard(channel, card.IdCard);
HashSet <int> activeChannels = new HashSet <int>();
foreach (IUser cardUser in cardUsers)
{
if (userToIgnore == null ||
cardUser.Name != userToIgnore.Name)
{
if (!cardUser.Name.Equals("epg", StringComparison.InvariantCultureIgnoreCase))
{
activeChannels.Add(cardUser.IdChannel);
if (!Utility.IsSameTransponder(card.IdCard, tuning, cardUser.IdChannel))
{
return(false);
}
}
}
}
return(activeChannels.Contains(channel.IdChannel) ||
card.DecryptLimit == 0 ||
activeChannels.Count < card.DecryptLimit);
}
return(true);
}