/// <summary> /// Builds a query object using the search parameters passed in the 'filter' object. /// </summary> /// <param name="session">NHibernate session object.</param> /// <param name="filter">Filter object containing search parameters.</param> /// <returns>NHibernate Query object.</returns> private IQuery BuildQuery(ISession session, GroupFilter filter) { StringBuilder queryString = new StringBuilder(); IDictionary<string, string> parameters = new Dictionary<string, string>(); // prepare query string queryString.Append("from Group g where "); bool first = true; // Name parameter if (!string.IsNullOrEmpty(filter.Name)) { if (!first) { queryString.Append("and "); } queryString.Append("g.Name like :name"); parameters["name"] = string.Format("%{0}%", filter.Name); first = false; } // Description parameter if (!string.IsNullOrEmpty(filter.Description)) { if (!first) { queryString.Append("and "); } queryString.Append("g.Description like :description"); parameters["description"] = string.Format("%{0}%", filter.Description); first = false; } // Interests parameter if (!string.IsNullOrEmpty(filter.Interests)) { if (!first) { queryString.Append("and "); } queryString.Append("g.Interests like :interests"); parameters["interests"] = string.Format("%{0}%", filter.Interests); first = false; } // Create query IQuery query = session.CreateQuery(queryString.ToString()); foreach (string key in parameters.Keys) { query.SetString(key, parameters[key]); } return query; }
public IList<Group> SearchGroups(GroupFilter filter) { return Repository.SearchGroups(filter); }
/// <summary> /// Does a search using the parameters passed in the 'filter' object. /// </summary> /// <param name="filter">Filter object containing search parameters.</param> /// <returns>The list of groups matching the search parameters.</returns> public IList<Group> SearchGroups(GroupFilter filter) { IList<Group> searchResult; using (ISession session = NHibernateHelper.OpenSession()) { IQuery query = BuildQuery(session, filter); searchResult = query.List<Group>(); } return searchResult; }