public DetailsViewModel GetDetails(string sku) { var result = new DetailsViewModel(); //categories result.Categories = _session .CreateCriteria<Category>() .Future<Category>(); //selected product result.SelectedProduct = _session.Get<Product>(sku); var orderIDsContainingCurrentSku=DetachedCriteria.For<OrderItem>() .Add<OrderItem>(x=>x.Product.SKU==sku) .SetProjection(Projections.Property("Order.id")); var skusOfProductsAppearingInOrdersContainingCurrentSku = DetachedCriteria.For<OrderItem>() .SetProjection(Projections.GroupProperty("Product.id")) .AddOrder(NHibernate.Criterion.Order.Desc(Projections.Count("Order.id"))) .Add<OrderItem>(x=>x.Product.SKU!=sku) .Add(Subqueries.PropertyIn("Order.id", orderIDsContainingCurrentSku)) .SetMaxResults(15); result.Recommended = _session.CreateCriteria<Product>() .SetFetchMode<Product>(x => x.Descriptors, FetchMode.Join) .Add(Subqueries.PropertyIn("id", skusOfProductsAppearingInOrdersContainingCurrentSku)) .SetResultTransformer(Transformers.DistinctRootEntity) .List<Product>(); return result; }
public DetailsViewModel GetDetails(string sku) { var result = new DetailsViewModel(); result.Categories = GetCategories(); result.SelectedProduct = GetSelectedProduct(sku); result.Recommended = GetRecommendedProducts(sku); return result; }
public DetailsViewModel GetDetails(string sku) { var result = new DetailsViewModel(); //categories result.Categories = _repo.GetCategories(); //organize them result.Categories.ToList().ForEach(x => x.SubCategories = result.Categories.Where(y => y.ParentID == x.ID).ToList()); result.SelectedProduct = _repo.GetProduct(sku); return result; }