コード例 #1
0
        private void TaskIndexRebuild(string language, Guid taskId)
        {
            var loggedEvent = LoggingEvents.LogStartEvent(_objectRepository, "Task Index Rebuild", string.Empty);

            var allProducts    = _objectRepository.GetProductsAndContext().ToList();
            var productsInStep = new List <Product>();

            for (var i = 0; i < allProducts.Count; i++)
            {
                // update task progress
                var x = Decimal.Divide(i, allProducts.Count);
                _tasks[taskId] = (x * 100).ToString("f0", CultureInfo.InvariantCulture);

                // update the index in steps of 10 products
                var step = i % 10;
                if (i > 0 && step == 0)
                {
                    // the end of a step is achieved so we need to process the
                    // work list and restart it

                    productsInStep.Add(allProducts[i]);

                    _luceneWorker.AddUpdateLuceneIndex(language, productsInStep);

                    productsInStep = new List <Product>();
                }
                else
                {
                    // add product to step work list

                    productsInStep.Add(allProducts[i]);
                }

                // simulate long running operation
                //Thread.Sleep(2000);
            }

            // check that the last work list is executed
            if (productsInStep.Any())
            {
                _luceneWorker.AddUpdateLuceneIndex(language, productsInStep);
            }

            LoggingEvents.LogEndEvent(_objectRepository,
                                      loggedEvent.LoggedEventID,
                                      string.Format("{0} products indexed",
                                                    allProducts.Count));

            _tasks.Remove(taskId);
        }
コード例 #2
0
        public bool SaveProduct(SellerProductModel product, int userid)
        {
            var saveSucceeded = false;

            try
            {
                Product tmpProduct;

                using (var db = new Entities())
                {
                    if (product.ProductId > 0)
                    {
                        tmpProduct = db.Products.SingleOrDefault(i => i.ProductID == product.ProductId);
                        if (tmpProduct != null)
                        {
                            tmpProduct.Name         = product.Name;
                            tmpProduct.EDI          = product.Edi;
                            tmpProduct.SKU          = product.Sku;
                            tmpProduct.Year         = product.Year;
                            tmpProduct.Material     = product.Material;
                            tmpProduct.Size         = product.Size;
                            tmpProduct.BrandID      = product.BrandId;
                            tmpProduct.CategoryID   = product.CategoryId;
                            tmpProduct.CollectionID = product.CollectionId;
                            tmpProduct.GenderID     = product.GenderId;
                            tmpProduct.SeasonID     = product.SeasonId;
                            tmpProduct.updated      = DateTime.Now;
                            tmpProduct.UserID       = userid;
                        }
                    }
                    else
                    {
                        tmpProduct = new Product
                        {
                            Name         = product.Name,
                            EDI          = product.Edi,
                            SKU          = product.Sku,
                            Year         = product.Year,
                            Material     = product.Material,
                            Size         = product.Size,
                            BrandID      = product.BrandId,
                            CategoryID   = product.CategoryId,
                            CollectionID = product.CollectionId,
                            GenderID     = product.GenderId,
                            SeasonID     = product.SeasonId,
                            created      = DateTime.Now,
                            updated      = DateTime.Now,
                            UserID       = userid
                        };

                        db.Products.Add(tmpProduct);
                    }

                    db.SaveChanges();
                }

                _luceneWorker.AddUpdateLuceneIndex(Thread.CurrentThread.CurrentCulture.ThreeLetterISOLanguageName, tmpProduct);

                saveSucceeded = true;
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("SaveProduct - error [{0}] - - \r\n {1} \r\n\r\n", ex.Message, ex.StackTrace);
            }

            return(saveSucceeded);
        }