private void SetPreferenceCookie(UserPreferenceInfo newUserPreferences)
        {
            HttpCookie userPrefCookie =
                HttpContext.Current.Request.Cookies[COOKIE_NAME]
                ?? new HttpCookie(COOKIE_NAME);

            userPrefCookie["ProductsPerPage"]         = newUserPreferences.ProductsPerPage.ToString();
            userPrefCookie["ProductColumnsToDisplay"] = string.Join(",", newUserPreferences.ProductColumnsToDisplay.ToArray <string>());
            userPrefCookie.Expires = DateTime.Now.AddDays(365);

            HttpContext.Current.Response.Cookies.Add(userPrefCookie);
        }
        private UserPreferenceInfo GetPreferencesFromCookie()
        {
            HttpCookie    userPrefCookie          = HttpContext.Current.Request.Cookies[COOKIE_NAME];
            int           productsPerPage         = 10;
            List <string> productColumnsToDisplay = new List <string>();

            if (userPrefCookie == null)
            {
                UserPreferenceInfo newUserInfo = new UserPreferenceInfo()
                {
                    ProductsPerPage         = productsPerPage,
                    ProductColumnsToDisplay = productColumnsToDisplay
                };

                SetPreferenceCookie(newUserInfo);

                return(newUserInfo);
            }

            if (userPrefCookie["ProductsPerPage"] != null)
            {
                if (!int.TryParse(userPrefCookie["ProductsPerPage"], out productsPerPage))
                {
                    productsPerPage = 10;
                }
            }

            if (userPrefCookie["ProductColumnsToDisplay"] != null)
            {
                productColumnsToDisplay = userPrefCookie["ProductColumnsToDisplay"].Split(new char[] { ',' }).ToList <string>();
            }

            return(new UserPreferenceInfo()
            {
                ProductsPerPage = productsPerPage,
                ProductColumnsToDisplay = productColumnsToDisplay
            });
        }
 public CookieUserPreferenceService(UserPreferenceInfo info)
 {
     this.Preferences = info;
 }