public IList<Program> SearchProgramsPerGenre(string currentGenre, string searchCriteria, ChannelType channelType)
{
IFormatProvider mmddFormat = new CultureInfo(String.Empty, false);
StringBuilder SqlSelectCommand = new StringBuilder();
SqlSelectCommand.Append("select p.* from Program p inner join Channel c on c.idChannel = p.idChannel ");
SqlSelectCommand.AppendFormat("where endTime > '{0}'", DateTime.Now.ToString(GetDateTimeString(), mmddFormat));
if (currentGenre.Length > 0)
{
SqlSelectCommand.AppendFormat("and genre like '%{0}%' ", currentGenre);
}
if (searchCriteria.Length > 0)
{
SqlSelectCommand.AppendFormat("and title like '{0}%' ", searchCriteria);
}
switch (channelType)
{
case ChannelType.Radio:
SqlSelectCommand.Append("and c.isTv=0 ");
break;
case ChannelType.Tv:
SqlSelectCommand.Append("and c.isTv=1 ");
break;
}
SqlSelectCommand.Append("and c.visibleInGuide = 1 order by title, startTime");
SqlStatement stmt = new SqlBuilder(StatementType.Select, typeof (Program)).GetStatement(true);
SqlStatement ManualJoinSQL = new SqlStatement(StatementType.Select, stmt.Command, SqlSelectCommand.ToString(),
typeof (Program));
return ObjectFactory.GetCollection<Program>(ManualJoinSQL.Execute());
}