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); }
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); }