private CartIndexViewModel GetCartIndexModel(CartIndexSearchCriteria criteriaModel, string message = "")
        {
            User user = GetCurrentUser();

            CartSearchCriterias criteria = criteriaModel.ToSearchCriteria(user.Id);
            IQueryResult <Cart> results  = CartService.Obj.Find(criteria);

            var result = new CartIndexViewModel
            {
                Items               = results.Items.Select(x => x.ToViewModel()).ToList(),
                TotalCount          = results.TotalCount,
                PageSize            = PageSize,
                SearchCriteriaModel = criteriaModel,
                Message             = message
            };

            foreach (var cart in result.Items)
            {
                cart.AccessLevel = CartOwnerService.Obj.GetCartUser(cart.CartId.Value, user.Id).AccessLevel;
                cart.Items       = Domain.Service.User.ItemService.Obj.GetItemsByCard(cart.CartId.Value).Select(x => x.ToViewModel(ItemService.Obj.GetById(x.ItemId))).ToList();
                cart.Users       = CartOwnerService.Obj.GetUsersByCart(cart.CartId.Value, user.Id).Select(x => x.ToUserProfileViewModel(UserService.Obj.FindById(x.UserId), ImageService.Obj.FindByUserId(x.UserId))).ToList();
            }

            return(result);
        }
Пример #2
0
        public static CartSearchCriterias ToSearchCriteria(this CartIndexSearchCriteria model, int userId)
        {
            CartSearchCriterias criteria = CreateSearchCriteria <CartSearchCriterias>(model);

            criteria.UserId = userId;

            return(criteria);
        }
Пример #3
0
        public IQueryResult <Cart> Find(CartSearchCriterias criterias)
        {
            if (criterias == null)
            {
                throw new ArgumentNullException(nameof(criterias));
            }

            List <CartOwner> carts = CartOwnerService.Obj.GetCartsByUser(criterias.UserId);

            var cartIds = carts.Select(x => x.CartId).ToList();

            IQueryConstraints <Cart> constraints = new QueryConstraints <Cart>()
                                                   .PageAndSort(criterias, x => x.CartId)
                                                   .AndAlso(x => cartIds.Contains(x.CartId));

            IQueryResult <Cart> result = queryRepository.Find(constraints);

            Tracer.Log.EntitiesRetrieved(nameof(Cart), result.Items.Count(), result.TotalCount);

            return(result);
        }