private void CleanCache()
 {
     foreach (ProductDetails p in SessionManager.shoppingCart)
     {
         CacheApplication.DeleteItemByProductId(p.productId);
     }
 }
        private void AddDataInCache(long categoryId, string keywords, string key)
        {
            List <ProductDetails> products       = null;
            List <ProductDetails> searchProducts = new List <ProductDetails>();
            int numberOfProducts = 0;
            int productsByRow    = Settings.Default.AmazonMarket_defaultCount;

            if (categoryId > 0)
            {
                numberOfProducts = SessionManager.ProductService.getNumberOfProductsByKeywords(keywords, categoryId);
            }
            else
            {
                numberOfProducts = SessionManager.ProductService.getNumberOfProductsByKeywords(keywords);
            }

            for (int i = 0; i < numberOfProducts; i++)
            {
                if (categoryId > 0)
                {
                    products = SessionManager.ProductService.FindByKeywords(keywords, categoryId, i, productsByRow);
                }
                else
                {
                    products = SessionManager.ProductService.FindByKeywords(keywords, i, productsByRow);
                }
                for (int j = 0; j < products.Count; j++)
                {
                    if (!searchProducts.Contains(products[j]))
                    {
                        searchProducts.Add(products[j]);
                    }
                }
            }
            CacheApplication.StoreItemsCache(key, searchProducts);
        }
        private void LoadGrid(bool isPostBack)
        {
            //Cogemos los keywords
            String keywords = Request.Params.Get("keywords");
            Int32  category = Convert.ToInt32(Request.Params.Get("category"));
            string key      = keywords + Request.Params.Get("category");

            if (isPostBack == true && CacheApplication.IsContainKey(key) == false)
            {
                first = true;
            }
            else if (isPostBack == true && CacheApplication.IsContainKey(key) == true)
            {
                inCache = true;
            }

            if (first)
            {
                try
                {
                    if (isPostBack)
                    {
                        AddDataInCache(category, keywords, key);
                    }

                    gvProductsResult.AllowPaging  = true;
                    gvProductsResult.PageSize     = Settings.Default.AmazonMarket_defaultCount;
                    pbpDataSource.ObjectCreating += this.PbpDataSource_ObjectCreating;
                    //Esto lo deberia de coger desde settings.settigns pero me daba error , CAMBIARLO LUEGO
                    Type   type = typeof(IProductService);
                    string assemblyQualifiedName = type.AssemblyQualifiedName;
                    pbpDataSource.TypeName     = assemblyQualifiedName;
                    pbpDataSource.EnablePaging = true;
                    pbpDataSource.SelectMethod = Settings.Default.ObjectDS_ProductsResult_SelectMethod;
                    //Añadimos el parametro keywords
                    pbpDataSource.SelectParameters.Add("keywords", DbType.String, keywords);
                    //Depende de si la categoria es all (-1) o una definida en la bd.
                    if (category != -1)
                    {
                        pbpDataSource.SelectParameters.Add("categoryId", DbType.Int32, category.ToString());
                    }

                    pbpDataSource.SelectCountMethod          = Settings.Default.ObjectDS_ProductsResult_CountMethod;
                    pbpDataSource.StartRowIndexParameterName = Settings.Default.ObjectDS_ProductsResult_StartIndexParameter;
                    pbpDataSource.MaximumRowsParameterName   = Settings.Default.ObjectDS_AccountOperations_CountParameter;

                    /*gvProductsResult.AllowPaging = true;
                     * gvProductsResult.PageSize = Settings.Default.AmazonMarket_defaultCount;*/
                    gvProductsResult.DataSource = pbpDataSource;
                    //Antes de hacer el databind hay que poner la columna de id a visible para luego poder acceder a ella
                    gvProductsResult.Columns[4].Visible = true;
                    gvProductsResult.Columns[3].Visible = true;
                    gvProductsResult.DataBind();
                    if (gvProductsResult.Rows.Count == 0)
                    {
                        lblAreProducts.Visible = true;
                    }
                    //Luego ya se pone a false.
                    gvProductsResult.Columns[4].Visible = false;
                    gvProductsResult.Columns[3].Visible = false;
                }
                catch (TargetInvocationException)
                {
                }
            }
            else if (inCache)
            {
                gvProductsResult.AllowPaging = true;
                gvProductsResult.PageSize    = Settings.Default.AmazonMarket_defaultCount;
                gvProductsResult.DataSource  = CacheApplication.GetCacheItem(key);
                //gvProductsResult.DataSource = productsOfPage;
                //Antes de hacer el databind hay que poner la columna de id a visible para luego poder acceder a ella
                gvProductsResult.Columns[4].Visible = true;
                gvProductsResult.Columns[3].Visible = true;
                gvProductsResult.DataBind();
                //Luego ya se pone a false.
                gvProductsResult.Columns[4].Visible = false;
                gvProductsResult.Columns[3].Visible = false;
            }
        }