public void Can_calculate_rental_periods_for_days() { var product = new Product { IsRental = true, RentalPricePeriod = RentalPricePeriod.Days }; //rental period length = 1 day product.RentalPriceLength = 1; //the same date product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 5)).ShouldEqual(1); //1 day product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 6)).ShouldEqual(1); //2 days product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 7)).ShouldEqual(2); //3 days product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 8)).ShouldEqual(3); //rental period length = 2 days product.RentalPriceLength = 2; //the same date product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 5)).ShouldEqual(1); //1 day product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 6)).ShouldEqual(1); //2 days product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 7)).ShouldEqual(1); //3 days product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 8)).ShouldEqual(2); }
/// <summary> /// Gets discount amount /// </summary> /// <param name="product">Product</param> /// <param name="customer">The customer</param> /// <param name="additionalCharge">Additional charge</param> /// <returns>Discount amount</returns> public virtual decimal GetDiscountAmount(Product product, Customer customer, decimal additionalCharge = decimal.Zero) { Discount appliedDiscount = null; return GetDiscountAmount(product, customer, additionalCharge, out appliedDiscount); }
public void Can_calculate_total_quantity_when_we_do_use_multiple_warehouses_with_reserved() { var product = new Product { ManageInventoryMethod = ManageInventoryMethod.ManageStock, UseMultipleWarehouses = true, StockQuantity = 6, }; product.ProductWarehouseInventory.Add(new ProductWarehouseInventory { WarehouseId = 1, StockQuantity = 7, ReservedQuantity = 4, }); product.ProductWarehouseInventory.Add(new ProductWarehouseInventory { WarehouseId = 2, StockQuantity = 8, ReservedQuantity = 1, }); product.ProductWarehouseInventory.Add(new ProductWarehouseInventory { WarehouseId = 3, StockQuantity = -2, }); var result = product.GetTotalStockQuantity(true); result.ShouldEqual(8); }
public virtual int SendProductInquery(Product product,Vendor vendor,string from,string phone, string email,string msg, int languageId) { if (product == null) throw new ArgumentNullException("product"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetActiveMessageTemplate("Product.Inqure", store.Id); if (messageTemplate == null) return 0; //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount); tokens.Add(new Token("Product.ProductUrl", store.Url + product.Name.Trim().Replace(" ", "-"))); tokens.Add(new Token("Product.ProductName", product.Name)); tokens.Add(new Token("From", from)); tokens.Add(new Token("Phone", phone)); tokens.Add(new Token("Email", email)); tokens.Add(new Token("Msg", msg)); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var toEmail = vendor.Email; var toName = vendor.Name; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
public void Two_transient_entities_should_not_be_equal() { var p1 = new Product(); var p2 = new Product(); Assert.AreNotEqual(p1, p2, "Different transient entities should not be equal"); }
public void Entity_should_not_equal_transient_entity() { var p1 = new Product { Id = 1 }; var p2 = new Product(); Assert.AreNotEqual(p1, p2, "Entity and transient entity should not be equal"); }
public void Can_save_and_load_product_with_productVariants() { var product = new Product { Name = "Name 1", Published = true, Deleted = false, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02) }; product.ProductVariants.Add ( new ProductVariant { Name = "Product variant name 1", CreatedOnUtc = new DateTime(2010, 01, 03), UpdatedOnUtc = new DateTime(2010, 01, 04) } ); var fromDb = SaveAndLoadEntity(product); fromDb.ShouldNotBeNull(); fromDb.Name.ShouldEqual("Name 1"); fromDb.ProductVariants.ShouldNotBeNull(); (fromDb.ProductVariants.Count == 1).ShouldBeTrue(); fromDb.ProductVariants.First().Name.ShouldEqual("Product variant name 1"); }
public void Entities_with_different_id_should_not_be_equal() { var p1 = new Product { Id = 2 }; var p2 = new Product { Id = 5 }; Assert.AreNotEqual(p1, p2, "Entities with different ids should not be equal"); }
public void Two_references_to_same_transient_entity_should_be_equal() { var p1 = new Product(); var p2 = p1; Assert.AreEqual(p1, p2, "Two references to the same transient entity should be equal"); }
public static IList<ProductSpecificationModel> PrepareProductSpecificationModel(this Controller controller, IWorkContext workContext, ISpecificationAttributeService specificationAttributeService, ICacheManager cacheManager, Product product) { if (product == null) throw new ArgumentNullException("product"); string cacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_SPECS_MODEL_KEY, product.Id, workContext.WorkingLanguage.Id); return cacheManager.Get(cacheKey, () => { var model = specificationAttributeService.GetProductSpecificationAttributesByProductId(product.Id, null, true) .Select(psa => { return new ProductSpecificationModel() { SpecificationAttributeId = psa.SpecificationAttributeOption.SpecificationAttributeId, SpecificationAttributeName = psa.SpecificationAttributeOption.SpecificationAttribute.GetLocalized(x => x.Name), SpecificationAttributeOption = !String.IsNullOrEmpty(psa.CustomValue) ? psa.CustomValue : psa.SpecificationAttributeOption.GetLocalized(x => x.Name), }; }).ToList(); return model; }); }
public void Entities_with_same_id_but_different_type_should_not_be_equal() { int id = 10; var p1 = new Product { Id = id }; var c1 = new Category { Id = id }; Assert.AreNotEqual(p1, c1, "Entities of different types should not be equal, even if they have the same id"); }
public void Can_check_taxExempt_product() { var product = new Product(); product.IsTaxExempt = true; _taxService.IsTaxExempt(product, null).ShouldEqual(true); product.IsTaxExempt = false; _taxService.IsTaxExempt(product, null).ShouldEqual(false); }
public void Two_references_with_the_same_id_should_be_equal() { int id = 10; var p1 = new Product { Id = id }; var p2 = new Product { Id = id }; Assert.AreEqual(p1, p2, "Entities with the same id should be equal"); }
public void Should_be_available_when_enddate_is_greater_than_somedate() { var product = new Product { AvailableEndDateTimeUtc = new DateTime(2010, 01, 02) }; product.IsAvailable(new DateTime(2010, 01, 01)).ShouldEqual(true); }
public void Should_be_available_when_enddate_is_not_set() { var product = new Product { AvailableEndDateTimeUtc = null }; product.IsAvailable(new DateTime(2010, 01, 03)).ShouldEqual(true); }
public void Should_not_be_available_when_startdate_is_greater_than_somedate() { var product = new Product { AvailableStartDateTimeUtc = new DateTime(2010, 01, 02) }; product.IsAvailable(new DateTime(2010, 01, 01)).ShouldEqual(false); }
/// <summary> /// Create request for tax calculation /// </summary> /// <param name="product">Product</param> /// <param name="taxCategoryId">Tax category identifier</param> /// <param name="customer">Customer</param> /// <returns>Package for tax calculation</returns> protected virtual CalculateTaxRequest CreateCalculateTaxRequest(Product product, int taxCategoryId, Customer customer) { var calculateTaxRequest = new CalculateTaxRequest(); calculateTaxRequest.Customer = customer; if (taxCategoryId > 0) { calculateTaxRequest.TaxCategoryId = taxCategoryId; } else { if (product != null) calculateTaxRequest.TaxCategoryId = product.TaxCategoryId; } var basedOn = _taxSettings.TaxBasedOn; if (basedOn == TaxBasedOn.BillingAddress) { if (customer == null || customer.BillingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } if (basedOn == TaxBasedOn.ShippingAddress) { if (customer == null || customer.ShippingAddress == null) { basedOn = TaxBasedOn.DefaultAddress; } } Address address = null; switch (basedOn) { case TaxBasedOn.BillingAddress: { address = customer.BillingAddress; } break; case TaxBasedOn.ShippingAddress: { address = customer.ShippingAddress; } break; case TaxBasedOn.DefaultAddress: default: { address = _addressService.GetAddressById(_taxSettings.DefaultTaxAddressId); } break; } calculateTaxRequest.Address = address; return calculateTaxRequest; }
public void Should_be_available_when_startdate_is_less_than_somedate() { var product = new Product { AvailableStartDateTimeUtc = new DateTime(2010, 01, 02) }; product.IsAvailable(new DateTime(2010, 01, 03)).ShouldEqual(true); }
/// <summary> /// Gets the final price /// </summary> /// <param name="product">Product</param> /// <param name="customer">The customer</param> /// <param name="additionalCharge">Additional charge</param> /// <param name="includeDiscounts">A value indicating whether include discounts or not for final price computation</param> /// <param name="quantity">Shopping cart item quantity</param> /// <returns>Final price</returns> public virtual decimal GetFinalPrice(Product product, Customer customer, decimal additionalCharge = decimal.Zero, bool includeDiscounts = true, int quantity = 1) { decimal discountAmount; Discount appliedDiscount; return GetFinalPrice(product, customer, additionalCharge, includeDiscounts, quantity, out discountAmount, out appliedDiscount); }
public void Equality_works_using_operators() { var p1 = new Product { Id = 1 }; var p2 = new Product { Id = 1 }; Assert.IsTrue(p1 == p2); var p3 = new Product(); Assert.IsTrue(p1 != p3); }
public void Can_calculate_rental_periods_for_months() { var product = new Product { IsRental = true, RentalPricePeriod = RentalPricePeriod.Months }; //rental period length = 1 month product.RentalPriceLength = 1; //the same date product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 5)).ShouldEqual(1); //several days but less than a month product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 4)).ShouldEqual(1); //1 month product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 4, 5)).ShouldEqual(1); //1 month and 1 day product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 4, 6)).ShouldEqual(2); //several days but less than two months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 4, 13)).ShouldEqual(2); //2 months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 5, 5)).ShouldEqual(2); //3 months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 5, 8)).ShouldEqual(3); //several more unit tests product.GetRentalPeriods(new DateTime(1900, 1, 1), new DateTime(1900, 1, 1)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 1, 1), new DateTime(1900, 1, 2)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 1, 2), new DateTime(1900, 1, 1)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 1, 1), new DateTime(1900, 2, 1)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 2, 1), new DateTime(1900, 1, 1)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 1, 31), new DateTime(1900, 2, 1)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 8, 31), new DateTime(1900, 9, 30)).ShouldEqual(1); product.GetRentalPeriods(new DateTime(1900, 8, 31), new DateTime(1900, 10, 1)).ShouldEqual(2); product.GetRentalPeriods(new DateTime(1900, 1, 1), new DateTime(1901, 1, 1)).ShouldEqual(12); product.GetRentalPeriods(new DateTime(1900, 1, 1), new DateTime(1911, 1, 1)).ShouldEqual(132); product.GetRentalPeriods(new DateTime(1900, 8, 31), new DateTime(1901, 8, 30)).ShouldEqual(12); //rental period length = 2 months product.RentalPriceLength = 2; //the same date product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 5)).ShouldEqual(1); //several days but less than a month product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 3, 4)).ShouldEqual(1); //1 month product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 4, 5)).ShouldEqual(1); //several days but less than two months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 4, 13)).ShouldEqual(1); //2 months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 5, 5)).ShouldEqual(1); //3 months product.GetRentalPeriods(new DateTime(2014, 3, 5), new DateTime(2014, 5, 8)).ShouldEqual(2); }
public void Can_parse_required_productvariant_ids() { var product = new Product { RequiredProductIds = "1, 4,7 ,a," }; var ids = product.ParseRequiredProductIds(); ids.Length.ShouldEqual(3); ids[0].ShouldEqual(1); ids[1].ShouldEqual(4); ids[2].ShouldEqual(7); }
public void Can_parse_allowed_quantities() { var product = new Product() { AllowedQuantities = "1, 5,4,10,sdf" }; var result = product.ParseAllowedQuatities(); result.Length.ShouldEqual(4); result[0].ShouldEqual(1); result[1].ShouldEqual(5); result[2].ShouldEqual(4); result[3].ShouldEqual(10); }
/// <summary> /// Gets selected product attribute mappings /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <returns>Selected product attribute mappings</returns> public virtual IList<ProductAttributeMapping> ParseProductAttributeMappings(Product product, string attributesXml) { var result = new List<ProductAttributeMapping>(); var ids = ParseProductAttributeMappingIds(attributesXml); foreach (int id in ids) { var attribute = product.ProductAttributeMappings.Where(x => x.Id == id).FirstOrDefault(); //_productAttributeService.GetProductAttributeMappingById(id); if (attribute != null) { result.Add(attribute); } } return result; }
public void Can_save_and_load_product() { var product = new Product { Name = "Name 1", ShortDescription = "ShortDescription 1", FullDescription = "FullDescription 1", AdminComment = "AdminComment 1", VendorId = 1, ProductTemplateId = 2, ShowOnHomePage = false, MetaKeywords = "Meta keywords", MetaDescription = "Meta description", MetaTitle = "Meta title", AllowCustomerReviews = true, ApprovedRatingSum = 2, NotApprovedRatingSum = 3, ApprovedTotalReviews = 4, NotApprovedTotalReviews = 5, SubjectToAcl = true, LimitedToStores = true, Published = true, Deleted = false, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02), }; var fromDb = SaveAndLoadEntity(product); fromDb.ShouldNotBeNull(); fromDb.Name.ShouldEqual("Name 1"); fromDb.ShortDescription.ShouldEqual("ShortDescription 1"); fromDb.FullDescription.ShouldEqual("FullDescription 1"); fromDb.AdminComment.ShouldEqual("AdminComment 1"); fromDb.VendorId.ShouldEqual(1); fromDb.ProductTemplateId.ShouldEqual(2); fromDb.ShowOnHomePage.ShouldEqual(false); fromDb.MetaKeywords.ShouldEqual("Meta keywords"); fromDb.MetaDescription.ShouldEqual("Meta description"); fromDb.AllowCustomerReviews.ShouldEqual(true); fromDb.ApprovedRatingSum.ShouldEqual(2); fromDb.NotApprovedRatingSum.ShouldEqual(3); fromDb.ApprovedTotalReviews.ShouldEqual(4); fromDb.NotApprovedTotalReviews.ShouldEqual(5); fromDb.SubjectToAcl.ShouldEqual(true); fromDb.LimitedToStores.ShouldEqual(true); fromDb.Published.ShouldEqual(true); fromDb.Deleted.ShouldEqual(false); fromDb.CreatedOnUtc.ShouldEqual(new DateTime(2010, 01, 01)); fromDb.UpdatedOnUtc.ShouldEqual(new DateTime(2010, 01, 02)); }
public ProductMappingItem RetrieveFromAttributesXml(Product product, string attributesXml) { if (product.IsGiftCard) attributesXml = string.Empty; if (product.ProductAttributeCombinations == null || product.ProductAttributeCombinations.Count == 0) attributesXml = string.Empty; if (product.ProductAttributeMappings != null && product.ProductAttributeMappings.Count > _promoSettings.MaximumAttributesForVariants) attributesXml = string.Empty; return this._repository.Table.Where(pm => pm.EntityId == product.Id && pm.EntityName == EntityAttributeName.Product && (pm.AttributesXml ?? string.Empty).Equals((attributesXml ?? string.Empty), StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); }
public void Can_save_and_load_product_with_productCategories() { var product = new Product { Name = "Name 1", Published = true, Deleted = false, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02) }; product.ProductCategories.Add ( new ProductCategory { IsFeaturedProduct = true, DisplayOrder = 1, Category = new Category() { Name = "Books", Description = "Description 1", MetaKeywords = "Meta keywords", MetaDescription = "Meta description", MetaTitle = "Meta title", SeName = "SE name", ParentCategoryId = 2, PictureId = 3, PageSize = 4, PriceRanges = "1-3;", ShowOnHomePage = false, Published = true, Deleted = false, DisplayOrder = 5, CreatedOnUtc = new DateTime(2010, 01, 01), UpdatedOnUtc = new DateTime(2010, 01, 02), } } ); var fromDb = SaveAndLoadEntity(product); fromDb.ShouldNotBeNull(); fromDb.Name.ShouldEqual("Name 1"); fromDb.ProductCategories.ShouldNotBeNull(); (fromDb.ProductCategories.Count == 1).ShouldBeTrue(); fromDb.ProductCategories.First().IsFeaturedProduct.ShouldEqual(true); fromDb.ProductCategories.First().Category.ShouldNotBeNull(); fromDb.ProductCategories.First().Category.Name.ShouldEqual("Books"); }
public void Can_get_final_product_price_with_additionalFee() { var product = new Product { Id = 1, Name = "Product name 1", Price = 12.34M, CustomerEntersPrice = false, Published = true, }; //customer Customer customer = null; _priceCalcService.GetFinalPrice(product, customer, 5, false, 1).ShouldEqual(17.34M); }
/// <summary> /// Gets allowed discounts /// </summary> /// <param name="product">Product</param> /// <param name="customer">Customer</param> /// <returns>Discounts</returns> protected virtual IList<Discount> GetAllowedDiscounts(Product product, Customer customer) { var allowedDiscounts = new List<Discount>(); if (_catalogSettings.IgnoreDiscounts) return allowedDiscounts; if (product.HasDiscountsApplied) { //we use this property ("HasDiscountsApplied") for performance optimziation to avoid unnecessary database calls foreach (var discount in product.AppliedDiscounts) { if (_discountService.IsDiscountValid(discount, customer) && discount.DiscountType == DiscountType.AssignedToSkus && !allowedDiscounts.ContainsDiscount(discount)) allowedDiscounts.Add(discount); } } //performance optimization //load all category discounts just to ensure that we have at least one if (_discountService.GetAllDiscounts(DiscountType.AssignedToCategories).Any()) { var productCategories = _categoryService.GetProductCategoriesByProductId(product.ID); if (productCategories != null) { foreach (var productCategory in productCategories) { var category = productCategory.Category; if (category.HasDiscountsApplied) { //we use this property ("HasDiscountsApplied") for performance optimziation to avoid unnecessary database calls var categoryDiscounts = category.AppliedDiscounts; foreach (var discount in categoryDiscounts) { if (_discountService.IsDiscountValid(discount, customer) && discount.DiscountType == DiscountType.AssignedToCategories && !allowedDiscounts.ContainsDiscount(discount)) allowedDiscounts.Add(discount); } } } } } return allowedDiscounts; }
private void TranslateMetaKeywords(NopProduct nopProduct) { foreach (var googleLanguage in GoogleLanguage.Languages) { if (googleLanguage.Id != 1) { string translatedText = null; if (googleLanguage.Id == 2) { translatedText = @"保健品 维生素 抗衰老 医药 在线 护理 健康 美容 产品 减肥 处方药 药物 扑热息痛 皮肤 流感 阿司匹林 奶粉 婴儿食品 母婴用品 儿童 男人 女人 老人 小孩 自然 有机"; } else { var keywords = nopProduct.MetaKeywords.Replace(" ", "/ "); var language = GoogleLanguage.GetLanguageById(googleLanguage.Id); if (language != null && googleLanguage.Id != 1) { translatedText = NopDictionary.GetTranslate(keywords, googleLanguage.Id); if (string.IsNullOrWhiteSpace(translatedText)) { translatedText = Translator.Translate(keywords, "English", GoogleLanguage.GetLanguageById(googleLanguage.Id).Name); translatedText = translatedText.Replace("/", " "); } } } var lan = new LocalizedProperty { EntityId = nopProduct.Id, LanguageId = googleLanguage.Id, LocaleKey = "MetaKeywords", LocaleKeyGroup = "Prodcut", LocaleValue = translatedText }; LocalizedEntityService.InsertLocalizedProperty(lan); } } }
public void Can_get_final_product_price() { var product = new Product { Id = 1, Name = "Product name 1", Price = 12.34M, CustomerEntersPrice = false, Published = true, }; //customer var customer = new Customer(); _priceCalcService.GetFinalPrice(product, customer, 0, false, 1).ShouldEqual(12.34M); _priceCalcService.GetFinalPrice(product, customer, 0, false, 2).ShouldEqual(12.34M); }
private void InsertImage(string url, string name, Nop.Core.Domain.Catalog.Product product, int orderNo) { try { using (var myWebClient = new WebClient()) { byte[] myDataBuffer = myWebClient.DownloadData(url); var picture = _pictureService.InsertPicture(myDataBuffer, "image/jpeg", name); var newProductPic = new ProductPicture(); newProductPic.DisplayOrder = orderNo; newProductPic.PictureId = picture.Id; newProductPic.Product = product; product.ProductPictures.Add(newProductPic); } } catch (Exception ex) { _logger.Error("InsertImage", ex); } }
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); } } }
public void Execute() { try { var request = (HttpWebRequest)WebRequest.Create("http://www.bilgisayarim.com.tr/xml?ClientCode=23676&UserName=Admin&Password=MS2VR5D5"); using (var response = request.GetResponse()) { var document = new XmlDocument(); document.Load(response.GetResponseStream()); var userNodes = document.SelectNodes("//Urunler/Urun"); var vendor = _vendorService.GetAllVendors("Kadıoğlu").FirstOrDefault(); if (vendor == null) { vendor = new Core.Domain.Vendors.Vendor() { Active = true, Name = "Kadıoğlu", Email = "*****@*****.**", Deleted = false, PictureId = 0, AddressId = 0, DisplayOrder = 1, PageSize = 6, AllowCustomersToSelectPageSize = true, PageSizeOptions = "6, 3, 9, 18" }; _vendorService.InsertVendor(vendor); _urlRecordService.InsertUrlRecord(new Core.Domain.Seo.UrlRecord() { EntityId = vendor.Id, EntityName = "Vendor", IsActive = true, LanguageId = 0, Slug = vendor.Name.Replace("+", "-").Replace("ö", "o").Replace("ş", "s").Replace("ı", "i").Replace("ğ", "g").Replace("ç", "c").Replace("ü", "u").Replace(".", "").Replace(",", "").Replace("\"", "").Replace(",", "").Replace(" ", "-").Replace("---", "-").Replace("--", "-").ToLower() }); } _logger.Information("Product Service " + vendor.Name); foreach (XmlNode userNode in userNodes) { try { string urunID = userNode.SelectNodes("UrunID").Item(0) != null?userNode.SelectNodes("UrunID").Item(0).InnerText : ""; var anyProduct = _productService.GtinProduct(urunID); var product = new Nop.Core.Domain.Catalog.Product(); if (anyProduct == null) { _logger.Information("Product urunID " + urunID); product.VendorId = vendor.Id; product.Gtin = urunID; Category mainCategories = null, parentCategories = null, childCategories = null; _logger.Information("Product Fiyat"); if (userNode.SelectNodes("Fiyat").Item(0) != null) { _logger.Information("Product Fiyat " + userNode.SelectNodes("Fiyat").Item(0).InnerText); } _logger.Information("Product DovizTuru"); if (userNode.SelectNodes("DovizTuru").Item(0) != null) { _logger.Information("Product DovizTuru " + userNode.SelectNodes("DovizTuru").Item(0).InnerText); } decimal prices = 0; string dovizTuru = ""; try { prices = userNode.SelectNodes("Fiyat").Item(0) != null?Convert.ToDecimal(userNode.SelectNodes("Fiyat").Item(0).InnerText, new CultureInfo("tr-TR")) : 0; dovizTuru = userNode.SelectNodes("DovizTuru").Item(0) != null?userNode.SelectNodes("DovizTuru").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(dovizTuru) && dovizTuru != "USD") { var getCurrrency = _currencyService.GetAllCurrencies(true); var getdoviz = getCurrrency.Where(x => x.Name == dovizTuru).FirstOrDefault(); prices = prices / getdoviz.Rate; product.ProductCost = prices; prices = prices + ((prices / 100) * 15); } else { product.ProductCost = prices; prices = prices + ((prices / 100) * 15); } } catch (Exception ex) { _logger.Error("KadiogluExecute 3 ", ex); } _logger.Information("Product prices " + urunID); string urunAciklama = userNode.SelectNodes("UrunAciklama").Item(0) != null?userNode.SelectNodes("UrunAciklama").Item(0).InnerText : ""; string anaKategori = userNode.SelectNodes("AnaKategori").Item(0) != null?userNode.SelectNodes("AnaKategori").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(anaKategori)) { mainCategories = CreateCategory(anaKategori, 0); var productCategory = new ProductCategory(); productCategory.CategoryId = mainCategories.Id; productCategory.Product = product; productCategory.DisplayOrder = 3; product.ProductCategories.Add(productCategory); } _logger.Information("Product ProductCategory 1 " + urunID); string araKategori = userNode.SelectNodes("AraKategori").Item(0) != null?userNode.SelectNodes("AraKategori").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(araKategori)) { parentCategories = CreateCategory(araKategori, mainCategories != null ? mainCategories.Id : 1); var productCategory = new ProductCategory(); productCategory.CategoryId = parentCategories.Id; productCategory.Product = product; productCategory.DisplayOrder = 3; product.ProductCategories.Add(productCategory); } _logger.Information("Product ProductCategory 2 " + urunID); string altKategori = userNode.SelectNodes("AltKategori").Item(0) != null?userNode.SelectNodes("AltKategori").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(altKategori)) { childCategories = CreateCategory(altKategori, parentCategories != null ? parentCategories.Id : 1); var productCategory = new ProductCategory(); productCategory.CategoryId = childCategories.Id; productCategory.Product = product; productCategory.DisplayOrder = 3; product.ProductCategories.Add(productCategory); } _logger.Information("ProductCategory 3" + urunID); product.ProductTypeId = 5; product.ParentGroupedProductId = 0; product.VisibleIndividually = true; product.ProductTemplateId = 1; product.VendorId = 0; product.ShowOnHomePage = false; product.AllowCustomerReviews = true; product.ApprovedRatingSum = 0; product.NotApprovedRatingSum = 0; product.ApprovedTotalReviews = 1; product.NotApprovedTotalReviews = 0; product.SubjectToAcl = false; product.LimitedToStores = false; product.Sku = ""; product.IsGiftCard = false; product.GiftCardTypeId = 0; product.RequireOtherProducts = false; product.AutomaticallyAddRequiredProducts = false; product.IsDownload = false; product.DownloadId = 0; product.UnlimitedDownloads = false; product.MaxNumberOfDownloads = 0; product.DownloadActivationTypeId = 0; product.HasSampleDownload = false; product.SampleDownloadId = 0; product.HasUserAgreement = false; product.IsRecurring = false; product.RecurringCycleLength = 0; product.RecurringCyclePeriodId = 0; product.RecurringTotalCycles = 0; product.IsRental = false; product.RentalPriceLength = 0; product.RentalPricePeriodId = 0; product.IsShipEnabled = true; product.IsFreeShipping = false; product.ShipSeparately = false; product.AdditionalShippingCharge = 0; product.DeliveryDateId = 0; product.IsTaxExempt = false; product.IsTelecommunicationsOrBroadcastingOrElectronicServices = false; product.ManageInventoryMethodId = 1; product.ProductAvailabilityRangeId = 0; product.UseMultipleWarehouses = false; product.WarehouseId = 0; product.StockQuantity = userNode.SelectNodes("Stok").Item(0) != null?Convert.ToInt32(userNode.SelectNodes("Stok").Item(0).InnerText) : 0; product.DisplayStockAvailability = true; product.DisplayStockQuantity = true; product.MinStockQuantity = 10; product.LowStockActivityId = 1; product.NotifyAdminForQuantityBelow = 1; product.BackorderModeId = 0; product.AllowBackInStockSubscriptions = false; product.OrderMinimumQuantity = 1; product.OrderMaximumQuantity = 100; product.AllowAddingOnlyExistingAttributeCombinations = false; product.NotReturnable = false; product.DisableBuyButton = false; product.DisableWishlistButton = false; product.AvailableForPreOrder = false; product.CallForPrice = false; product.Price = prices; product.OldPrice = 0; product.ProductCost = 0; product.CustomerEntersPrice = false; product.MinimumCustomerEnteredPrice = 0; product.MaximumCustomerEnteredPrice = 0; product.BasepriceEnabled = false; product.BasepriceAmount = 0; product.BasepriceUnitId = 0; product.BasepriceBaseAmount = 0; product.BasepriceBaseUnitId = 0; product.MarkAsNew = true; product.MarkAsNewStartDateTimeUtc = DateTime.Now; product.MarkAsNewEndDateTimeUtc = new DateTime(2020, 04, 20); product.HasTierPrices = false; product.HasDiscountsApplied = false; product.Weight = 0; product.Length = 0; product.Width = 0; product.Height = 0; product.DisplayOrder = 0; product.Published = true; product.Deleted = false; product.CreatedOnUtc = DateTime.Now; product.UpdatedOnUtc = DateTime.Now; product.TaxCategoryId = 2; string urunAciklama2 = userNode.SelectNodes("UrunAciklama2").Item(0) != null?userNode.SelectNodes("UrunAciklama2").Item(0).InnerText : ""; string urunAciklama3 = userNode.SelectNodes("UrunAciklama3").Item(0) != null?userNode.SelectNodes("UrunAciklama3").Item(0).InnerText : ""; string urunAciklama4 = userNode.SelectNodes("UrunAciklama4").Item(0) != null?userNode.SelectNodes("UrunAciklama4").Item(0).InnerText : ""; product.MetaTitle = urunAciklama; product.MetaDescription = urunAciklama ?? urunAciklama.Replace(" ", ",") + urunAciklama2 ?? "," + urunAciklama2.Replace(" ", ",") + urunAciklama3 ?? "," + urunAciklama3.Replace(" ", ",") + urunAciklama4 ?? "," + urunAciklama4.Replace(" ", ","); product.MetaKeywords = urunAciklama ?? urunAciklama.Replace(" ", ",") + urunAciklama4 ?? "," + urunAciklama4.Replace(" ", ","); product.Name = urunAciklama; product.ShortDescription = urunAciklama2; product.FullDescription = urunAciklama + Environment.NewLine + urunAciklama2 + Environment.NewLine + urunAciklama3 + Environment.NewLine + urunAciklama4; //string urunKodu = userNode.SelectNodes("UrunKodu").Count > 0 ? userNode.SelectNodes("UrunKodu").Item(0).InnerText : ""; //string ureticiKodu = userNode.SelectNodes("UreticiKodu").Item(0).InnerText; //string gtipCode = userNode.SelectNodes("GtipCode").Item(0).InnerText; //string durum = userNode.SelectNodes("Durum").Item(0).InnerText; string marka = userNode.SelectNodes("Marka").Item(0) != null?userNode.SelectNodes("Marka").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(marka)) { var getManufacturer = _manufacturerService.GetAllManufacturers(marka); if (getManufacturer.TotalCount <= 0) { var manufacutrer = new Manufacturer(); manufacutrer.Name = marka; manufacutrer.ManufacturerTemplateId = 1; manufacutrer.PageSize = 6; manufacutrer.AllowCustomersToSelectPageSize = true; manufacutrer.PageSizeOptions = "6,3,9"; manufacutrer.SubjectToAcl = false; manufacutrer.LimitedToStores = false; manufacutrer.Deleted = false; manufacutrer.Published = true; manufacutrer.DisplayOrder = _manufacturerService.GetAllManufacturers().Count + 1; manufacutrer.CreatedOnUtc = DateTime.Now; manufacutrer.UpdatedOnUtc = DateTime.Now; _manufacturerService.InsertManufacturer(manufacutrer); _urlRecordService.InsertUrlRecord(new Core.Domain.Seo.UrlRecord() { EntityId = manufacutrer.Id, EntityName = "Manufacturer", IsActive = true, LanguageId = 0, Slug = manufacutrer.Name.Replace("+", "-").Replace("ö", "o").Replace("ş", "s").Replace("ı", "i").Replace("ğ", "g").Replace("ç", "c").Replace("ü", "u").Replace(".", "").Replace(",", "").Replace("\"", "").Replace(",", "").Replace(" ", "-").Replace("---", "-").Replace("--", "-").ToLower() }); product.ProductManufacturers.Add(new ProductManufacturer() { ManufacturerId = manufacutrer.Id, Product = product, IsFeaturedProduct = false, DisplayOrder = 1 }); } else { product.ProductManufacturers.Add(new ProductManufacturer() { ManufacturerId = getManufacturer.FirstOrDefault().Id, Product = product, IsFeaturedProduct = false, DisplayOrder = 1 }); } } _logger.Information("Manufacturer " + urunID); string gorselKucuk = userNode.SelectNodes("GorselKucuk").Item(0) != null?userNode.SelectNodes("GorselKucuk").Item(0).InnerText : ""; string gorselBuyuk = userNode.SelectNodes("GorselBuyuk").Item(0) != null?userNode.SelectNodes("GorselBuyuk").Item(0).InnerText : ""; string gorselKucuk2 = userNode.SelectNodes("GorselKucuk2").Item(0) != null?userNode.SelectNodes("GorselKucuk2").Item(0).InnerText : ""; string gorselBuyuk2 = userNode.SelectNodes("GorselBuyuk2").Item(0) != null?userNode.SelectNodes("GorselBuyuk2").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(gorselBuyuk)) { InsertImage(gorselBuyuk, product.Name.Replace(" ", "").Split("\"").FirstOrDefault(), product, 1); } if (!string.IsNullOrWhiteSpace(gorselBuyuk2)) { InsertImage(gorselBuyuk2, product.Name.Replace(" ", "").Split("\"").FirstOrDefault(), product, 2); } if (!string.IsNullOrWhiteSpace(gorselKucuk)) { InsertImage(gorselKucuk, product.Name.Replace(" ", "").Split("\"").FirstOrDefault(), product, 3); } if (!string.IsNullOrWhiteSpace(gorselKucuk2)) { InsertImage(gorselKucuk2, product.Name.Replace(" ", "").Split("\"").FirstOrDefault(), product, 4); } _productService.InsertProduct(product); _urlRecordService.InsertUrlRecord(new Core.Domain.Seo.UrlRecord() { EntityId = product.Id, EntityName = "Product", IsActive = true, LanguageId = 0, Slug = product.Name.Replace("+", "-").Replace("ö", "o").Replace("ş", "s").Replace("ı", "i").Replace("ğ", "g").Replace("ç", "c").Replace("ü", "u").Replace(".", "").Replace(",", "").Replace("\"", "").Replace(",", "").Replace(" ", "-").Replace("---", "-").Replace("--", "-").ToLower() }); _logger.Information("KadiogluExecute Bilgi " + product.Name); } else { decimal prices = userNode.SelectNodes("Fiyat").Item(0) != null?Convert.ToDecimal(userNode.SelectNodes("Fiyat").Item(0).InnerText, new CultureInfo("tr-TR")) : 0; string dovizTuru = userNode.SelectNodes("DovizTuru").Item(0) != null?userNode.SelectNodes("DovizTuru").Item(0).InnerText : ""; if (!string.IsNullOrWhiteSpace(dovizTuru) && dovizTuru != "USD") { var getCurrrency = _currencyService.GetAllCurrencies(true); var getdoviz = getCurrrency.Where(x => x.Name == dovizTuru).FirstOrDefault(); prices = prices / getdoviz.Rate; anyProduct.ProductCost = prices; prices = prices + ((prices / 100) * 15); } else { anyProduct.ProductCost = prices; prices = prices + ((prices / 100) * 15); } anyProduct.StockQuantity = userNode.SelectNodes("Stok").Item(0) != null?Convert.ToInt32(userNode.SelectNodes("Stok").Item(0).InnerText) : 0; anyProduct.Price = prices; anyProduct.VendorId = vendor.Id; _productService.UpdateProduct(anyProduct); _logger.Information("KadiogluExecute Bilgi 2 " + anyProduct.Name); } } catch (Exception ex) { _logger.Error("KadiogluExecute 1 ", ex); } } } } catch (Exception ex) { _logger.Error("KadiogluExecute", ex); } }