public PurchaseOrder ReadPurchaseOrderByTrackingNumber(string confirmationNumber)
        {
            Guid?userId = GetSoldToIdForPurchaseOrderByInvoice(confirmationNumber);

            if (userId.HasValue)
            {
                var queryBaskets = new CommerceQuery <CommerceEntity, CommerceModelSearch <CommerceEntity>, CommerceBasketQueryOptionsBuilder>("Basket");

                queryBaskets.SearchCriteria.Model.Properties["UserId"]      = userId.Value.ToString("B");
                queryBaskets.SearchCriteria.Model.Properties["BasketType"]  = 1;
                queryBaskets.SearchCriteria.Model.Properties["OrderNumber"] = confirmationNumber;

                queryBaskets.QueryOptions.RefreshBasket = false;

                var queryLineItems = new CommerceQueryRelatedItem <CommerceEntity>("LineItems", "LineItem");
                queryBaskets.RelatedOperations.Add(queryLineItems);

                var response = FoundationService.ExecuteRequest(queryBaskets.ToRequest());

                if (response.OperationResponses.Count == 0)
                {
                    return(null);
                }

                CommerceQueryOperationResponse basketResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

                return(basketResponse.CommerceEntities.Cast <CommerceEntity>().Select(p => (PurchaseOrder)p).First());
            }
            else
            {
                return(null);
            }
        }
        public PurchaseOrder ReadPurchaseOrder(Guid customerId, string orderNumber)
        {
            var queryBaskets = new CommerceQuery <CommerceEntity, CommerceModelSearch <CommerceEntity>, CommerceBasketQueryOptionsBuilder>("Basket");

            queryBaskets.SearchCriteria.Model.Properties["UserId"]      = customerId.ToCommerceServerFormat();
            queryBaskets.SearchCriteria.Model.Properties["BasketType"]  = 1;
            queryBaskets.SearchCriteria.Model.Properties["OrderNumber"] = orderNumber;

            queryBaskets.QueryOptions.RefreshBasket = false;

            var queryLineItems = new CommerceQueryRelatedItem <CommerceEntity>("LineItems", "LineItem");

            queryBaskets.RelatedOperations.Add(queryLineItems);

            var response = FoundationService.ExecuteRequest(queryBaskets.ToRequest());

            if (response.OperationResponses.Count == 0)
            {
                return(null);
            }

            CommerceQueryOperationResponse basketResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

            return((PurchaseOrder)basketResponse.CommerceEntities[0]);
        }
        public Basket ReadBasket(Guid userId, Guid cartId, bool runPipelines = false)
        {
            var queryBaskets = new CommerceQuery <CommerceEntity, CommerceModelSearch <CommerceEntity>, CommerceBasketQueryOptionsBuilder>("Basket");

            queryBaskets.SearchCriteria.Model.Properties["UserId"]     = userId.ToCommerceServerFormat();
            queryBaskets.SearchCriteria.Model.Properties["BasketType"] = 0;
            queryBaskets.SearchCriteria.Model.Id    = cartId.ToCommerceServerFormat();
            queryBaskets.QueryOptions.RefreshBasket = runPipelines;

            var queryLineItems = new CommerceQueryRelatedItem <CommerceEntity>("LineItems", "LineItem");

            queryBaskets.RelatedOperations.Add(queryLineItems);

            var response = FoundationService.ExecuteRequest(queryBaskets.ToRequest());

            if (response.OperationResponses.Count == 0)
            {
                return(null);
            }

            CommerceQueryOperationResponse basketResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

            if (basketResponse.CommerceEntities.Count == 0)
            {
                return(null);
            }

            return((Basket)basketResponse.CommerceEntities[0]);
        }
        public List <Basket> ReadAllBaskets(Guid userId, BasketType type, bool runPipelines = false)
        {
            var queryBaskets = new CommerceQuery <CommerceEntity, CommerceModelSearch <CommerceEntity>, CommerceBasketQueryOptionsBuilder>("Basket");

            queryBaskets.SearchCriteria.Model.Properties["UserId"]     = userId.ToCommerceServerFormat();
            queryBaskets.SearchCriteria.Model.Properties["BasketType"] = 0;
            queryBaskets.SearchCriteria.Model.Properties["ListType"]   = (int)type;

            queryBaskets.QueryOptions.RefreshBasket = runPipelines;

            var queryLineItems = new CommerceQueryRelatedItem <CommerceEntity>("LineItems", "LineItem");

            queryBaskets.RelatedOperations.Add(queryLineItems);


            var response = FoundationService.ExecuteRequest(queryBaskets.ToRequest());

            CommerceQueryOperationResponse basketResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

            return(basketResponse.CommerceEntities.Cast <CommerceEntity>().Where(b => b.Properties["ListType"].Equals((int)type)).Select(i => (Basket)i).ToList());
        }