/// <summary>
            /// Gets the eCommerce context.
            /// </summary>
            /// <param name="httpContextBase">The HTTP context.</param>
            /// <returns>The eCommerce context.</returns>
            public static EcommerceContext GetEcommerceContext(HttpContextBase httpContextBase)
            {
                if (httpContextBase == null)
                {
                    throw new ArgumentNullException(nameof(httpContextBase));
                }

                IOwinContext        ctx    = httpContextBase.GetOwinContext();
                ClaimsPrincipal     user   = ctx.Authentication.User;
                IEnumerable <Claim> claims = user.Claims;

                string token = ServiceUtilities.GetExternalAuthToken(httpContextBase, claims);

                Claim identityProviderTypeClaim           = claims.Where(cl => string.Equals(cl.Type, CookieConstants.IdentityProviderType, StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
                IdentityProviderType identityProviderType = (identityProviderTypeClaim != null) ? (IdentityProviderType)Enum.Parse(typeof(IdentityProviderType), identityProviderTypeClaim.Value, true) : IdentityProviderType.None;

                string locale = null;

                // UserLanguages are not necessarily sent so need to be ready to process null property.
                if (httpContextBase.Request.UserLanguages != null)
                {
                    locale = httpContextBase.Request.UserLanguages.FirstOrDefault();
                }

                EcommerceContext ecommerceContext = new EcommerceContext()
                {
                    AuthenticationToken  = token,
                    IdentityProviderType = identityProviderType,
                    Locale          = locale,
                    OperatingUnitId = ConfigurationManager.AppSettings["OperatingUnitNumber"]
                };

                return(ecommerceContext);
            }