public CustomUrlRecordEntityNameRequested(RouteData routeData, UrlRecordService.UrlRecordForCaching urlRecord)
 {
     this.RouteData = routeData;
     this.UrlRecord = urlRecord;
 }
Example #2
0
        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);
                }
            }
        }