private static void UpdateFromOneMarket(Model.FullCatalog.FullCatalogRoot fullCatalogJson, Parsing.Model.RootParsingObject jsonMarket, ShopCatalogRoot shopCatalog, out int addedCount) { addedCount = 0; foreach (var listing in jsonMarket.listings) { var fcSneaker = fullCatalogJson.records.Find(x => x.sku.ToUpper() == listing.sku.ToUpper()); if (fcSneaker == null) { //если фулкаталогсникер нул, значит этого кроссовка еще нет в фулкаталоге и надо его добавить var fcRecord = CreateFullCatalogRecordFromListing(listing, jsonMarket, shopCatalog); if (fcRecord != null) { fullCatalogJson.records.Add(fcRecord); addedCount++; } else { //значит ошибка какая-то bool test = true; } } else { //если кросс уже существуюет то смотрим что есть в листинге, если есть данные для обновления то обновляем их в кроссовке. //проверить, сохранятся ли данные обновления в фулкаталоге, потому что передаю просто листинг а не весь каталог UpdateSneaker(fcSneaker, listing); } } }
public static void AddNewSneakersFromAllStores() { Model.FullCatalog.FullCatalogRoot fullCatalogJson = FullCatalog2.LoadFullCatalogFromFtp(); Program.Logger.Info("Items without category: " + CountItemsWithoutCategory(fullCatalogJson)); Program.Logger.Info("Items without Image: " + CountItemsWithoutImages(fullCatalogJson)); var shopCatalog = Model.ShopCatalogModel.ShopCatalogRoot.ReadFromFtp(); Program.Logger.Info("Update FullCatalog..."); Update(fullCatalogJson, shopCatalog); Program.Logger.Info("Items without category: " + CountItemsWithoutCategory(fullCatalogJson)); Program.Logger.Info("Items without Image: " + CountItemsWithoutImages(fullCatalogJson)); SaveFullCatalogToFtp(fullCatalogJson); }
public static void SaveCatalogToJson() { var fullCatalog = new FullCatalog(); var sneakers = fullCatalog.sneakers; var jsonFullCatalog = new Model.FullCatalog.FullCatalogRoot(); foreach (var sneaker in sneakers) { var record = new Model.FullCatalog.FullCatalogRecord(); record.sku = sneaker.sku; record.brand = sneaker.brand; record.title = sneaker.title; record.color = sneaker.color; record.collection = sneaker.collection; record.category = Helper.ConvertCategoryRusToEng(sneaker.category); record.sex = Helper.ConvertSexRusToEng(sneaker.sex); record.height = sneaker.height; record.destination = sneaker.destination; record.description = sneaker.description; record.link = sneaker.link; record.images = sneaker.images; record.type = sneaker.type; jsonFullCatalog.records.Add(record); } jsonFullCatalog.update_time = DateTime.Now; var folder = "FullCatalog"; var filename = "FullCatalog.json"; var localFileName = Config.GetConfig().DirectoryPathParsing + folder + @"\" + filename; //сохраняем на яндекс.диск файл var textJson = JsonConvert.SerializeObject(jsonFullCatalog); System.IO.File.WriteAllText(localFileName, textJson); ////подгружаем из конфига данные фтп var appSettings = System.Configuration.ConfigurationManager.AppSettings; var ftpHost = appSettings["ftpHostSneakerIcon"]; var ftpUser = appSettings["ftpUserSneakerIcon"]; var ftpPass = appSettings["ftpPassSneakerIcon"]; ////загружаем на ftp файл var ftpFileName = folder + "/" + filename; Helper.LoadFileToFtp(localFileName, ftpFileName, ftpHost, ftpUser, ftpPass); //throw new NotImplementedException(); }
private static void Update(Model.FullCatalog.FullCatalogRoot fullCatalogJson, Model.ShopCatalogModel.ShopCatalogRoot shopCatalog) { int addedSneakersCount = 0; int numMarket = 1; foreach (var market in shopCatalog.markets) { var jsonMarket = Parsing.Model.RootParsingObject.ReadJsonMarketFromFtp(market); if (jsonMarket != null) //если нул значит магазин еще не добавлен { Program.Logger.Info("Update market..."); int addedCount = 0; UpdateFromOneMarket(fullCatalogJson, jsonMarket, shopCatalog, out addedCount); addedSneakersCount += addedCount; Program.Logger.Info(jsonMarket.market_info.name + ": Updated market complete. Added sneakers: " + addedCount); } } Program.Logger.Info(numMarket + ". Update FullCatalog complete. Items count: " + fullCatalogJson.records.Count + ". Added items:" + addedSneakersCount); fullCatalogJson.update_time = DateTime.Now; }