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 List <PurchaseOrder> ReadPurchaseOrderHeadersInDateRange(Guid customerId, string customerNumber, DateTime startDate, DateTime endDate)
        {
            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["CustomerId"]       = customerNumber;
            queryBaskets.SearchCriteria.Model.Properties["CreatedDateStart"] = startDate;
            queryBaskets.SearchCriteria.Model.Properties["CreatedDateEnd"]   = endDate;


            queryBaskets.QueryOptions.RefreshBasket = false;

            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>().Where(c => c.Properties["CustomerId"] != null &&
                                                                                 c.Properties["CustomerId"].ToString().Equals(customerNumber) &&
                                                                                 c.Properties["RequestedShipDate"].ToString().ToDateTime().Value >= startDate && c.Properties["RequestedShipDate"].ToString().ToDateTime().Value <= endDate
                                                                                 ).Select(p => (PurchaseOrder)p).ToList());
            //return basketResponse.CommerceEntities.Cast<CommerceEntity>().Select(p => (PurchaseOrder)p).ToList();
        }
        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]);
        }
Beispiel #4
0
        public List <UserProfile> GetUsersForCustomerOrAccount(Guid orgId)
        {
            CommerceQuery <CommerceEntity> profileQuery = new CommerceQuery <CommerceEntity>("UserOrganizations");

            profileQuery.SearchCriteria.Model.Properties["OrganizationId"] = orgId.ToCommerceServerFormat();

            CommerceResponse res = Helpers.FoundationService.ExecuteRequest(profileQuery.ToRequest());

            List <UserProfile> customerUsers = new List <UserProfile>();

            Dictionary <Guid, bool> existingUsers = new Dictionary <Guid, bool>();

            foreach (CommerceEntity ent in (res.OperationResponses[0] as CommerceQueryOperationResponse).CommerceEntities)
            {
                Guid userid = Guid.Parse(ent.Id);

                if (!existingUsers.ContainsKey(userid))
                {
                    existingUsers.Add(userid, true);

                    customerUsers.Add(new UserProfile {
                        UserId       = userid,
                        FirstName    = (string)ent.Properties["FirstName"],
                        LastName     = (string)ent.Properties["LastName"],
                        EmailAddress = (string)ent.Properties["Email"]
                    });
                }
            }

            return(customerUsers);
        }
        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]);
        }
Beispiel #6
0
        public List <UserProfile> GetExternalUsers()
        {
            CommerceQuery <CommerceEntity> queryOrg = new CommerceQuery <CommerceEntity>("ProfileCustomSearch");

            queryOrg.SearchCriteria.WhereClause = "u_email_address not like '%benekeith.com'"; // org type of customer

            CommerceQueryOperationResponse res = Helpers.FoundationService.ExecuteRequest(queryOrg.ToRequest())
                                                 .OperationResponses[0] as CommerceQueryOperationResponse;
            List <UserProfile> users = new List <UserProfile>();

            if (res.CommerceEntities.Count > 0)
            {
                foreach (CommerceEntity ent in res.CommerceEntities)
                {
                    users.Add(new UserProfile {
                        UserId       = Guid.Parse(ent.Id),
                        FirstName    = (string)ent.Properties["FirstName"],
                        LastName     = (string)ent.Properties["LastName"],
                        EmailAddress = (string)ent.Properties["Email"]
                    });
                }
            }

            return(users);
        }
Beispiel #7
0
        /// <summary>
        ///     retrieve the user's profile from commerce server
        /// </summary>
        /// <param name="emailAddress">the user's email address</param>
        /// <returns>a commerce server user profile object</returns>
        /// <remarks>
        ///     jwames - 10/14/14 - original code
        /// </remarks>
        public Core.Models.Generated.UserProfile GetCSProfile(Guid userId)
        {
            CommerceQuery <CommerceEntity> profileQuery = new CommerceQuery <CommerceEntity>("UserProfile");

            profileQuery.SearchCriteria.Model.Properties["Id"] = userId.ToCommerceServerFormat();

            profileQuery.Model.Properties.Add("Id");
            profileQuery.Model.Properties.Add("Email");
            profileQuery.Model.Properties.Add("LastLoginDate");
            profileQuery.Model.Properties.Add("LastActivityDate");
            profileQuery.Model.Properties.Add("FirstName");
            profileQuery.Model.Properties.Add("LastName");
            profileQuery.Model.Properties.Add("DefaultBranch");
            profileQuery.Model.Properties.Add("DefaultCustomer");
            profileQuery.Model.Properties.Add("Telephone");

            // Execute the operation and get the results back
            CommerceResponse response = Helpers.FoundationService.ExecuteRequest(profileQuery.ToRequest());
            CommerceQueryOperationResponse profileResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

            if (profileResponse.Count == 0)
            {
                return(null);
            }
            return((Core.Models.Generated.UserProfile)profileResponse.CommerceEntities[0]);
        }
Beispiel #8
0
        /// <summary>
        ///     retrieve the user's profile from commerce server
        /// </summary>
        /// <param name="emailAddress">the user's email address</param>
        /// <returns>a commerce server user profile object</returns>
        /// <remarks>
        ///     jwames - 10/3/2014 - documented
        /// </remarks>
        public Core.Models.Generated.UserProfile GetCSProfile(string emailAddress)
        {
            CommerceQuery <CommerceEntity> profileQuery = new CommerceQuery <CommerceEntity>("UserProfile");

            profileQuery.SearchCriteria.Model.Properties["Email"] = emailAddress;
            profileQuery.SearchCriteria.Model.DateModified        = DateTime.Now;

            profileQuery.Model.Properties.Add("Id");
            profileQuery.Model.Properties.Add("Email");
            profileQuery.Model.Properties.Add("LastLoginDate");
            profileQuery.Model.Properties.Add("LastActivityDate");
            profileQuery.Model.Properties.Add("FirstName");
            profileQuery.Model.Properties.Add("LastName");
            profileQuery.Model.Properties.Add("DefaultBranch");
            profileQuery.Model.Properties.Add("DefaultCustomer");
            profileQuery.Model.Properties.Add("Telephone");

            CommerceResponse response = Helpers.FoundationService.ExecuteRequest(profileQuery.ToRequest());
            CommerceQueryOperationResponse profileResponse = response.OperationResponses[0] as CommerceQueryOperationResponse;

            if (profileResponse.Count == 0)
            {
                return(null);
            }
            return((Core.Models.Generated.UserProfile)profileResponse.CommerceEntities[0]);
        }
        List <Catalog> IDivisionRepository.GetDivisions()
        {
            var queryCatalog = new CommerceQuery <CommerceEntity, CommerceModelSearch <CommerceEntity> >("Catalog");
            var response     = FoundationService.ExecuteRequest(queryCatalog.ToRequest());


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

            return(basketResponse.CommerceEntities.Cast <CommerceEntity>().Select(i => (Catalog)i).ToList());
        }
Beispiel #10
0
        public Product GetProduct(string catalogName, string productId)
        {
            var query = new CommerceQuery <CommerceEntity>("Product");

            query.SearchCriteria.Model.SetPropertyValue("CatalogId", catalogName);
            query.SearchCriteria.Model.SetPropertyValue("Id", productId);

            var service  = new OperationServiceAgent();
            var response = service.ProcessRequestWithContext(query.ToRequest());

            return
                (new Mapper().Map <Product>(
                     response
                     .OperationResponses.OfType <CommerceQueryOperationResponse>()
                     .Single().CommerceEntities.Single()));
        }
Beispiel #11
0
        public Customer GetCustomerById(Guid customerId)
        {
            var queryOrg = new CommerceQuery <Organization>("Organization");

            queryOrg.SearchCriteria.WhereClause = "u_org_id = '" + customerId.ToCommerceServerFormat() + "'";

            CommerceQueryOperationResponse res = (Svc.Impl.Helpers.FoundationService.ExecuteRequest(queryOrg.ToRequest())).OperationResponses[0] as CommerceQueryOperationResponse;

            if (res.CommerceEntities.Count > 0)
            {
                List <Customer> results = BuildCustomerList(res.CommerceEntities);

                return(results[0]);
            }
            else
            {
                return(null);
            }
        }
Beispiel #12
0
        public List <Core.Models.Generated.UserProfile> GetCSProfileForInternalUsers()
        {
            CommerceQuery <CommerceEntity> queryOrg = new CommerceQuery <CommerceEntity>("ProfileCustomSearch");

            queryOrg.SearchCriteria.WhereClause = "u_email_address like '%benekeith.com'"; // org type of customer

            CommerceQueryOperationResponse res = Helpers.FoundationService.ExecuteRequest(queryOrg.ToRequest())
                                                 .OperationResponses[0] as CommerceQueryOperationResponse;
            List <Core.Models.Generated.UserProfile> users = new List <Core.Models.Generated.UserProfile>();

            if (res.CommerceEntities.Count > 0)
            {
                foreach (CommerceEntity ent in res.CommerceEntities)
                {
                    users.Add((Core.Models.Generated.UserProfile)ent);
                }
            }

            return(users);
        }
        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());
        }
Beispiel #14
0
        /// <summary>
        /// Includes Addresses, LineItems, Shipments, Payments and Discounts
        /// </summary>
        /// <param name="basketQuery">The Query object for which relationships are being added to.</param>
        /// <param name="customRelationships">Name of any custom relationsships to be added in the basket query.</param>
        public static void IncludeBasketRelationships(this CommerceQuery <CommerceEntity> basketQuery, params Relationship[] customRelationships)
        {
            if (basketQuery == null)
            {
                throw new ArgumentNullException("basketQuery");
            }

            if (basketQuery.Model == null)
            {
                throw new InvalidOperationException("Model has not been specified on Query.");
            }

            if (!String.Equals(basketQuery.Model.ModelName, MetadataDefinitions.Basket.EntityName, StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidOperationException(String.Format("This method can only be used on a 'Basket' model. Current model: '{0}'", basketQuery.Model.ModelName));
            }

            var relationships = new List <Relationship>
            {
                new Relationship(MetadataDefinitions.Basket.Relationships.Addresses, MetadataDefinitions.Address.EntityName),
                new Relationship(MetadataDefinitions.Basket.Relationships.LineItems, MetadataDefinitions.LineItem.EntityName),
                new Relationship(MetadataDefinitions.Basket.Relationships.Payments, MetadataDefinitions.Payment.EntityName),
                new Relationship(MetadataDefinitions.Basket.Relationships.Shipments, MetadataDefinitions.Shipment.EntityName),
                new Relationship(MetadataDefinitions.Basket.Relationships.Discounts, MetadataDefinitions.Discount.EntityName)
            };

            if (customRelationships != null)
            {
                relationships.AddRange(customRelationships);
            }

            foreach (var relationship in relationships)
            {
                basketQuery.RelatedOperations.Add(
                    new CommerceQueryRelatedItem <CommerceEntity>(relationship.Name, relationship.Model));
            }
        }