protected void btnDownload_Click(object sender, EventArgs e) { if (lError.Visible) { return; } if (ExportStatistic.IsRun == false) { divAction.Visible = false; divbtnAction.Visible = false; choseDiv.Visible = false; _separator = (Separators.SeparatorsEnum)Convert.ToInt32(ddlSeparetors.SelectedValue); _encoding = (Encodings.EncodingsEnum)Convert.ToInt32(ddlEncoding.SelectedValue); ExportStatistic.Init(); ExportStatistic.IsRun = true; linkCancel.Visible = true; OutDiv.Visible = true; btnDownload.Visible = false; try { // Directory FileHelpers.CreateDirectory(_strFilePath); ExportStatistic.TotalRow = ProductService.GetProductsCount(); var tr = new Thread(Save); ExportStatistic.ThreadImport = tr; tr.IsBackground = true; tr.Start(); } catch (Exception ex) { Debug.LogError(ex); MsgErr(ex.Message); } } }
protected void btnDownload_Click(object sender, EventArgs e) { if (lError.Visible) return; if (CommonStatistic.IsRun) return; divAction.Visible = false; divbtnAction.Visible = false; choseDiv.Visible = false; _separator = (Separators.SeparatorsEnum)SQLDataHelper.GetInt(ddlSeparetors.SelectedValue); _encoding = (Encodings.EncodingsEnum)SQLDataHelper.GetInt(ddlEncoding.SelectedValue); CommonStatistic.Init(); CommonStatistic.IsRun = true; CommonStatistic.CurrentProcess = Request.Url.PathAndQuery; CommonStatistic.CurrentProcessName = Resource.Admin_ExportExcel_CatalogDownload; linkCancel.Visible = true; OutDiv.Visible = true; btnDownload.Visible = false; try { // Directory foreach (var file in Directory.GetFiles(_strFilePath).Where(f => f.Contains(StrFileName)).ToList()) { FileHelpers.DeleteFile(file); } ExtStrFileName = (StrFileName + StrFileExt).FileNamePlusDate(); _strFullPath = _strFilePath + ExtStrFileName; FileHelpers.CreateDirectory(_strFilePath); CommonStatistic.TotalRow = ProductService.GetProductsCount(); CommonStatistic.ThreadImport = new Thread(Save) { IsBackground = true }; CommonStatistic.ThreadImport.Start(); } catch (Exception ex) { Debug.LogError(ex); MsgErr(ex.Message); } }
//Added by Evgeni public static void SaveProductsToCsvAutospace(string path, Encodings.EncodingsEnum encodeType, Separators.SeparatorsEnum delimetr) { ImportStatistic.WriteLog("Start working on SaveProductsToCsvAutospace. DateTime: " + DateTime.Now); using (var writer = new CsvHelper.CsvWriter(new StreamWriter(path, false, Encodings.GetEncoding(encodeType)))) { ImportStatistic.WriteLog("Start working on SaveProductsToCsvAutospace 2.Encoding: " + Encodings.GetEncoding(encodeType) + " DateTime: " + DateTime.Now); writer.Configuration.Delimiter = Separators.GetCharSeparator(delimetr); //var items = new List<Product>(); //using (var db = new SQLDataAccess()) //{ // db.cnOpen(); // items = (List<Product>)ProductService.GetProductsWhere(db, "ArtNo like '2.607.001.733'"); // db.cnClose(); //} var items = ProductService.GetProducts();// .Where(t => t.ArtNo.Contains("2.607.001.733")).ToList(); List <string> loadedProducts = new List <string>(); ImportStatistic.WriteLog("Start working on SaveProductsToCsvAutospace 3. DateTime: " + DateTime.Now + "Number of products to proceed: " + items.Count); //select only relevants offers // items = items.Where(t => t.Brand.Name.ToLower() == "bosch" || t.Brand.Name.ToLower() == "skil").Where(t => t.Offers.FirstOrDefault().Amount > 0 && t.Offers.FirstOrDefault().Price > 0).ToList(); if (items == null) { return; } var regex = new Regex("^[0-9]+$"); string pcs = "шт."; for (int j = 0; j < items.Count; j++) { try { if (j % 1000 == 0) { ImportStatistic.WriteLog("Start working on SaveProductsToCsvAutospace 4. DateTime: " + DateTime.Now + " File No " + j); } //check that product was not inserted yet if (loadedProducts.Where(t => t.Contains(items[j].ArtNo)).ToList().Count > 0) { continue; } else { loadedProducts.Add(items[j].ArtNo); } var product = items[j]; var offer = product.Offers.Where(t => t.OfferListId == 15).FirstOrDefault() ?? new Offer { Amount = 0, Price = 0, SupplyPrice = 0, Unit = "", ShippingPrice = 0 }; //get only spec price if (offer.OfferListId != 15 || offer.Amount <= 0 || offer.Price <= 0) { continue; } if (product.Brand == null) { if (product.ArtNo.ToLower().StartsWith("f")) { writer.WriteField("Skil"); } else { writer.WriteField("Bosch"); } } else { writer.WriteField(product.Brand.Name); } writer.WriteField(product.ArtNo); writer.WriteField(product.BriefDescription.Replace(";", "").Replace(" ", " ").Replace(",", "").Replace("<p>", "").Replace("<p/>", "")); if (product.ProductCategories.Count == 0) { writer.WriteField("Прочее"); } else { writer.WriteField(product.ProductCategories.FirstOrDefault().Name.Replace(";", "").Replace(" ", "").Replace(",", "")); } writer.WriteField(offer.Amount); writer.WriteField(offer.Price.ToString("F2")); writer.WriteField(pcs); writer.WriteField("1"); writer.NextRecord(); } catch (Exception ex) { ImportStatistic.WriteLog("Error while adding product:" + ex.Message); } } ImportStatistic.WriteLog("End working on SaveProductsToCsvAutospace 5. DateTime: " + DateTime.Now); } ImportStatistic.WriteLog("End working on SaveProductsToCsvAutospace 6. DateTime: " + DateTime.Now); }
public static void SaveProductsToCsv(string path, Encodings.EncodingsEnum encodeType, Separators.SeparatorsEnum delimetr, List <ProductFields.Fields> fieldMapping) { using (var writer = new CsvHelper.CsvWriter(new StreamWriter(path, false, Encodings.GetEncoding(encodeType)))) { writer.Configuration.Delimiter = Separators.GetCharSeparator(delimetr); //var fields = new List<string> { "SKU", "Name*", "ParamSynonym", "Category", "Enabled*", "Price*", "PurchasePrice*", "Amount*", "Unit", "Discount", "ShippingPrice", "Weight", "Size", "BriefDescription", "Description" }; //foreach (var item in fields) // writer.WriteField(item); foreach (var item in fieldMapping) { writer.WriteField(ProductFields.GetStringNameByEnum(item)); } writer.NextRecord(); var items = ProductService.GetProducts(); if (items == null) { return; } var regex = new Regex("^[0-9]+$"); for (int j = 0; j < items.Count; j++) { var product = items[j]; if (!ExportStatistic.IsRun) { return; } var offer = product.Offers.FirstOrDefault() ?? new Offer { Amount = 0, Price = 0, SupplyPrice = 0, Unit = "", ShippingPrice = 0 }; var meta = MetaInfoService.GetMetaInfo(product.ID, MetaType.Product) ?? new MetaInfo(0, 0, MetaType.Product, string.Empty, string.Empty, string.Empty); for (int i = 0; i < fieldMapping.Count; i++) { var item = fieldMapping[i]; //Changed by Evgeni to insert dotes if (item == ProductFields.Fields.Sku) { string art = product.ArtNo; //if (art.Contains("-") == false && art.Length > 7) // { // art = art.Insert(7, ".").Insert(4, ".").Insert(1, "."); // } // writer.WriteField(art); // writer.WriteField(product.ArtNo); } // if (item == ProductFields.Fields.Name) { writer.WriteField(product.Name); } if (item == ProductFields.Fields.ParamSynonym) { if (regex.IsMatch(product.UrlPath)) { writer.WriteField("IPD" + product.UrlPath); } else { writer.WriteField(product.UrlPath); } } if (item == ProductFields.Fields.Category) { writer.WriteField((GetCategoryStringByProductID(product.ProductId))); } if (item == ProductFields.Fields.Enabled) { writer.WriteField(product.Enabled ? "+" : "-"); } if (item == ProductFields.Fields.Price) { writer.WriteField(offer.Price.ToString("F2")); } if (item == ProductFields.Fields.PurchasePrice) { writer.WriteField(offer.SupplyPrice.ToString("F2")); } if (item == ProductFields.Fields.Amount) { writer.WriteField(offer.Amount.ToString()); } if (item == ProductFields.Fields.Unit) { writer.WriteField(offer.Unit); } if (item == ProductFields.Fields.ShippingPrice) { writer.WriteField(offer.ShippingPrice.ToString("F2")); } if (item == ProductFields.Fields.Discount) { writer.WriteField(product.Discount.ToString("F2")); } if (item == ProductFields.Fields.Weight) { writer.WriteField(product.Weight.ToString("F2")); } if (item == ProductFields.Fields.Size) { writer.WriteField(product.Size.Replace("|", " x ")); } if (item == ProductFields.Fields.BriefDescription) { writer.WriteField(product.BriefDescription); } if (item == ProductFields.Fields.Description) { writer.WriteField(product.Description); } if (item == ProductFields.Fields.Title) { writer.WriteField(meta.Title); } if (item == ProductFields.Fields.MetaKeywords) { writer.WriteField(meta.MetaKeywords); } if (item == ProductFields.Fields.MetaDescription) { writer.WriteField(meta.MetaDescription); } if (item == ProductFields.Fields.Markers) { writer.WriteField(MarkersToString(product)); } if (item == ProductFields.Fields.Photos) { writer.WriteField(PhotoToString(product.ProductPhotos)); } if (item == ProductFields.Fields.Properties) { writer.WriteField(PropertiesToString(product.ProductPropertyValues)); } //Changed by Evgeni if (item == ProductFields.Fields.EAN) { writer.WriteField(product.EAN); } if (item == ProductFields.Fields.SubBrandId) { writer.WriteField(product.SubBrandId); } // if (item == ProductFields.Fields.Producer) { var brand = BrandService.GetBrandById(product.BrandId); writer.WriteField(brand != null ? brand.Name : string.Empty); } if (item == ProductFields.Fields.OrderByRequest) { writer.WriteField(product.OrderByRequest ? "+" : "-"); } } writer.NextRecord(); ExportStatistic.RowPosition++; } } }