public bool UpdateCatalogAndStock() { //читаем старый каталог и сток ReadCatalogFromCSV(CATALOG_FILENAME); stock.ReadStockFromCSV(STOCK_FILENAME); MergeCatalogAndStock(); bool isUpdate = false; //парсим новый список кроссовок и размеров Catalog newCatalog = ParseSneakersFromAllPages(); //ParseAllSneakers(newCatalog); int i = 0; foreach (var newSneaker in newCatalog.sneakers) { //Console.WriteLine(i + " " + catalog.sneakers[i].queensLink); //ParseOneSneaker(newSneaker); //Console.WriteLine(i + ". sku: " + catalog.sneakers[i].sku + " title: " + catalog.sneakers[i].title); i++; Sneaker oldSneaker = catalog.GetSneakerFromLink(newSneaker.link); if (oldSneaker == null) { catalog.sneakers.Add(newSneaker); ParseOneSneaker(catalog.sneakers[catalog.sneakers.Count - 1]); //DownloadSneakerImages(newSneaker, IMAGE_FOLDER); string message = "Новые кроссовки: " + newSneaker.sku + " " + newSneaker.title + " " + newSneaker.link; Program.Logger.Info(message); //Console.WriteLine(message); } else { //проверяем цену if (oldSneaker.price != newSneaker.price) { isUpdate = true; string message = "Price change. sku:" + newSneaker.sku + " old price:" + oldSneaker.price + " new price:" + newSneaker.price; oldSneaker.price = newSneaker.price; Program.Logger.Info(message); //Console.WriteLine(message); } if (oldSneaker.oldPrice != newSneaker.oldPrice) { isUpdate = true; oldSneaker.oldPrice = newSneaker.oldPrice; } //проверяем размеры bool isSizeUpdated = false; foreach (var size in newSneaker.sizes) { SneakerSize oldSize = oldSneaker.GetSize(size.sizeUS); if (oldSize == null) { isSizeUpdated = true; Console.WriteLine("new size. sku:" + newSneaker.sku + " size:" + size.sizeUS); } } //теперь проверяем старые размеры. Если какого-то из этих размеров нет в новых размерах, значит его продали и его надо убрать foreach (var size in oldSneaker.sizes) { SneakerSize newSize = newSneaker.GetSize(size.sizeUS); if (newSize == null) { isSizeUpdated = true; Console.WriteLine("size soldout. sku:" + newSneaker.sku + " size:" + size.sizeUS); } } if (isSizeUpdated) { isUpdate = true; oldSneaker.sizes = newSneaker.sizes; } } } //проверяем старый каталог. Если в старом каталоге есть кроссовки, которых нет в новом, значит эти кроссы уже не продают и надо их удалить Catalog newCatalog2 = new Catalog(); foreach (var sneaker in catalog.sneakers) { sneaker.ParseTitle(); sneaker.title = sneaker.title.Replace("Jordan AIR JORDAN", "AIR JORDAN"); sneaker.title = sneaker.title.Replace("Jordan JORDAN", "AIR JORDAN"); //if (stockSneaker.sku == "") Sneaker newSneaker = newCatalog.GetSneakerFromLink(sneaker.link); if (newSneaker == null) { isUpdate = true; string message = "Sneaker deleted. sku:" + sneaker.sku; Program.Logger.Info(message); //Console.WriteLine(message); } else { if (!newCatalog2.isExistSneakerInCatalog(sneaker)) { newCatalog2.sneakers.Add(sneaker); } } } catalog = newCatalog2; //SaveCatalogToCSV(CATALOG_FILENAME); //SaveStockToCSV(STOCK_FILENAME); return(isUpdate); }
/// <summary> /// Обновляем информацию о каталоге и стоке /// </summary> /// <returns>возвращает true если были обновления</returns> public bool UpdateCatalogAndStock() { //читаем старый каталог и сток ReadCatalogFromCSV(Config.GetConfig().BasketshopCatalogFilename); stock.ReadStockFromCSV(Config.GetConfig().BasketshopStockFilename); MergeCatalogAndStock(); bool isUpdate = false; //парсим новый список кроссовок и размеров Catalog newCatalog = ParseSneakersFromAllPages(); foreach (var newSneaker in newCatalog.sneakers) { Sneaker oldSneaker = catalog.GetSneakerFromSKU(newSneaker.sku); if (oldSneaker == null) { catalog.sneakers.Add(newSneaker); ParseOneSneaker(catalog.sneakers.Count - 1); //DownloadSneakerImages(newSneaker, Settings.BASKETSHOP_IMAGE_FOLDER); string message = "Новые кроссовки: " + newSneaker.sku + " " + newSneaker.title + " " + newSneaker.link; Program.Logger.Info(message); //Console.WriteLine(message); } else { //проверяем цену if (oldSneaker.price != newSneaker.price) { isUpdate = true; string message = "Price change. sku:" + newSneaker.sku + " old price:" + oldSneaker.price + " new price:" + newSneaker.price; oldSneaker.price = newSneaker.price; Program.Logger.Info(message); //Console.WriteLine(message); } if (oldSneaker.oldPrice != newSneaker.oldPrice) { isUpdate = true; oldSneaker.oldPrice = newSneaker.oldPrice; } //проверяем размеры bool isSizeUpdated = false; foreach (var size in newSneaker.sizes) { SneakerSize oldSize = oldSneaker.GetSize(size.sizeUS); if (oldSize == null) { isSizeUpdated = true; Console.WriteLine("new size. sku:" + newSneaker.sku + " size:" + size.sizeUS); } } //теперь проверяем старые размеры. Если какого-то из этих размеров нет в новых размерах, значит его продали и его надо убрать foreach (var size in oldSneaker.sizes) { SneakerSize newSize = newSneaker.GetSize(size.sizeUS); if (newSize == null) { isSizeUpdated = true; Console.WriteLine("size soldout. sku:" + newSneaker.sku + " size:" + size.sizeUS); } } if (isSizeUpdated) { isUpdate = true; oldSneaker.sizes = newSneaker.sizes; } } } //проверяем старый каталог. Если в старом каталоге есть кроссовки, которых нет в новом, значит эти кроссы уже не продают и надо их удалить List <Sneaker> newSneakers = new List <Sneaker>(); foreach (var sneaker in catalog.sneakers) { Sneaker newSneaker = newCatalog.GetSneakerFromSKU(sneaker.sku); if (newSneaker == null) { isUpdate = true; string message = "Sneaker deleted. sku:" + sneaker.sku; Program.Logger.Info(message); //Console.WriteLine(message); } else { newSneakers.Add(sneaker); } } catalog.sneakers = newSneakers; return(isUpdate); }