public CustomUrlRecordEntityNameRequested(RouteData routeData, UrlRecordService.UrlRecordForCaching urlRecord) { this.RouteData = routeData; this.UrlRecord = urlRecord; }
public override void Process() { using (var db = new DatabaseService("DefaultConnectionString", "NopImport")) { var products = db.Session.QueryOver <Product>().Where(q => q.IsUpdated && !q.IsSynced).List(); var count = 0; foreach (var product in products) { count++; try { var nopProduct = ProductService.GetProductBySku(string.Format("{0}-{1}", product.ExternalStoreCode, product.ExternalId)); if (nopProduct == null) { nopProduct = new NopProduct(); nopProduct.UpdateFrom(product); ProductService.InsertProduct(nopProduct); TranslateToAllLanguages(nopProduct, "Name"); TranslateToAllLanguages(nopProduct, "ShortDescription"); TranslateToAllLanguages(nopProduct, "FullDescription"); TranslateToAllLanguages(nopProduct, "MetaDescription"); TranslateMetaKeywords(nopProduct); TranslateToAllLanguages(nopProduct, "MetaTitle"); var slug = nopProduct.ValidateSeName(StringExtension.GenerateSlug(product.Name), product.Name, true); UrlRecordService.SaveSlug(nopProduct, slug, 0); UrlRecordService.SaveSlug(nopProduct, slug, 1); UrlRecordService.SaveSlug(nopProduct, slug, 2); UrlRecordService.SaveSlug(nopProduct, slug, 3); if (!string.IsNullOrWhiteSpace(product.LocalPicture)) { var directory = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\..\\Presentation\\Nop.Web\\Content\\Images\\Thumbs")); var fullPath = Path.Combine(directory, product.LocalPicture); var newPictureBinary = File.ReadAllBytes(fullPath); var newPicture = PictureService.InsertPicture(newPictureBinary, GetMimeTypeFromFilePath(fullPath), PictureService.GetPictureSeName(product.Name)); nopProduct.ProductPictures.Add(new ProductPicture { PictureId = newPicture.Id, DisplayOrder = 1, }); } nopProduct.ProductManufacturers.Add(new ProductManufacturer { ManufacturerId = int.Parse(product.Manufacturer) }); nopProduct.ProductCategories.Add(new ProductCategory { CategoryId = int.Parse(product.Category) }); ProductService.UpdateProduct(nopProduct); var tabs = GetTabs(product); foreach (var tab in tabs) { TabService.InsertTab(tab); TranslateToAllLanguages(tab, "Description"); TranslateToAllLanguages(tab, "DisplayName"); } TabService.AddTabsForProductByIds(nopProduct.Id, tabs.Select(q => q.Id).ToArray()); } else { System.Console.WriteLine("product exists"); } db.BeginTransaction(); product.NopId = nopProduct.Id.ToString(CultureInfo.InvariantCulture); db.Session.Save(product); db.CommitTransaction(); } catch (Exception ex) { System.Console.WriteLine("Error when syncing product to NopCommerce, Rolling back"); db.RollBackTransaction(); throw ex; } ChangeProgress(count * 100 / products.Count); } } }