using System; using System.Collections.Generic; using System.Linq.Expressions; using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Entities; using NHibernate; namespace Tanshu.Accounts.Repository { public class ProductBI : FluentGenericBase { public ProductBI() : base() { } public ProductBI(bool beginTransaction) : base(beginTransaction) { } public ProductBI(ISession session) : base(session) { } public ProductBI(ISession session, bool beginTransaction) : base(session, beginTransaction) { } public Product Get(string nameAndUnits) { return Get(x => x.Name + " (" + x.Units + ")" == nameAndUnits); } public new IList List(Expression> query) { var list = Query() .Where(query) .OrderBy(x => x.SortOrder).Asc .ThenBy(x => x.Name).Asc .List(); foreach (var item in list) { NHibernateUtil.Initialize(item.ProductGroup); NHibernateUtil.Initialize(item.Tax); } return list; } public new IList List() { var list = Query() .OrderBy(x => x.ProductGroup).Asc .ThenBy(x => x.SortOrder).Asc .ThenBy(x => x.Name).Asc .List(); foreach (var item in list) { NHibernateUtil.Initialize(item.ProductGroup); NHibernateUtil.Initialize(item.Tax); } return list; } public static List GetFilteredProducts(Dictionary filter) { throw new NotImplementedException(); } public static List GetUnFilteredProducts() { Dictionary filter = new Dictionary(); filter.Add("Name", ""); filter.Add("Type", ""); return GetFilteredProducts(filter); } public static IList List(int productGroupID) { using (var session = SessionManager.Session) { return (from product in session.QueryOver() where product.ProductGroup.ProductGroupID == productGroupID select product).List(); } } } }