Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
 public IList<Group> SearchGroups(GroupFilter filter)
 {
     return Repository.SearchGroups(filter);
 }
Esempio n. 3
0
        /// <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;
        }