using System; using System.Collections.Generic; using System.Linq.Expressions; using Tanshu.Accounts.Entities; using NHibernate; namespace Tanshu.Accounts.Repository { public class ProductGroupBI : UnitOfWork { public new IList List() { return _session.QueryOver() .OrderBy(x => x.SortOrder).Asc .ThenBy(x => x.Name).Asc .List(); } public new IList List(Expression> query) { return _session.QueryOver() .Where(query) .OrderBy(x => x.SortOrder).Asc .ThenBy(x => x.Name).Asc .List(); } public IList GetProductGroupTypes() { const string query = @"select distinct(pg.GroupType) from ProductGroup pg order by pg.GroupType"; var hnq = _session.CreateQuery(query); return hnq.List(); } public ProductGroup GetProductGroupOfProduct(Guid productID) { using (var session = SessionManager.Session) { var item = (from p in session.QueryOver() where p.ProductID == productID select p.ProductGroup).SingleOrDefault(); NHibernateUtil.Initialize(item); return item; } } public void UpdateSortOrder(IList list) { for (int i = 0; i < list.Count; i++) { var item = list[i]; var productGroup = _session.Get(item.ProductGroupID); productGroup.SortOrder = i; _session.Update(productGroup); } } } }