Beispiel #1
0
        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;
        }
Beispiel #2
0
        public DetailsViewModel GetDetails(string sku)
        {
            var result = new DetailsViewModel();

            result.Categories = GetCategories();

            result.SelectedProduct = GetSelectedProduct(sku);

            result.Recommended = GetRecommendedProducts(sku);

            return result;
        }
Beispiel #3
0
        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;
        }