TvDatabase.TvBusinessLayer.SearchProgramsPerGenre C# (CSharp) Method

SearchProgramsPerGenre() public method

public SearchProgramsPerGenre ( string currentGenre, string searchCriteria, ChannelType channelType ) : IList
currentGenre string
searchCriteria string
channelType ChannelType
return IList
    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());
    }

Same methods

TvBusinessLayer::SearchProgramsPerGenre ( string currentGenre, string searchCriteria ) : IList

Usage Example

 private void Search()
 {
   Log.Info("newsearch Search:{0} {1}", _searchKeyword, SearchFor);
   GUIControl.ClearControl(GetID, listResults.GetID);
   TvBusinessLayer layer = new TvBusinessLayer();
   IList<Program> listPrograms = null;
   switch (SearchFor)
   {
     case SearchType.Genres:
       listPrograms = layer.SearchProgramsPerGenre("%" + _searchKeyword + "%", "");
       break;
     case SearchType.KeyWord:
       listPrograms = layer.SearchProgramsByDescription("%" + _searchKeyword);
       break;
     case SearchType.Title:
       listPrograms = layer.SearchPrograms("%" + _searchKeyword);
       break;
   }
   if (listPrograms == null)
   {
     return;
   }
   if (listPrograms.Count == 0)
   {
     return;
   }
   Log.Info("newsearch found:{0} progs", listPrograms.Count);
   foreach (Program program in listPrograms)
   {
     GUIListItem item = new GUIListItem();
     item.Label = TVUtil.GetDisplayTitle(program);
     string logo = Utils.GetCoverArt(Thumbs.TVChannel, program.ReferencedChannel().DisplayName);
     if (string.IsNullOrEmpty(logo))                            
     {
       logo = "defaultVideoBig.png";
     }
     item.ThumbnailImage = logo;
     item.IconImageBig = logo;
     item.IconImage = logo;
     item.TVTag = program;
     listResults.Add(item);
   }
 }
TvBusinessLayer