private static string BuildEpgSelect(IEnumerable<Channel> channelList, string aProvider)
{
StringBuilder sbSelect = new StringBuilder("SELECT * FROM Program WHERE ");
if (aProvider == "mysql")
{
sbSelect.Append("((EndTime > ?startTime and EndTime < ?endTime)");
sbSelect.Append(" OR ");
sbSelect.Append("(StartTime >= ?startTime and StartTime <= ?endTime)");
sbSelect.Append(" OR ");
sbSelect.Append("(StartTime <= ?startTime and EndTime >= ?endTime))");
sbSelect.Append(" AND ");
}
else
{
sbSelect.Append("((EndTime > @startTime and EndTime < @endTime)");
sbSelect.Append(" OR ");
sbSelect.Append("(StartTime >= @startTime and StartTime <= @endTime)");
sbSelect.Append(" OR ");
sbSelect.Append("(StartTime <= @startTime and EndTime >= @endTime))");
sbSelect.Append(" AND ");
}
string channelConstraint = "";
foreach (Channel ch in channelList)
{
if (string.IsNullOrEmpty(channelConstraint))
{
channelConstraint = string.Format("(idChannel={0}", ch.IdChannel);
}
else
{
channelConstraint += string.Format(" or idChannel={0}", ch.IdChannel);
}
}
if (channelConstraint.Length > 0)
{
channelConstraint += ") ";
sbSelect.Append(channelConstraint);
}
sbSelect.Append(" ORDER BY startTime ");
return sbSelect.ToString();
}