public LinqDataAccess(DatabaseType dt, String ConnectionString) { var f = GetConnectionFactory(dt); Connection = f(ConnectionString); dbr = new DbRoot(Connection); }
public static void SaveLocalFile(DbRoot db) { var path = Config.GetConfig().DbFolder + Config.GetConfig().DbFileName; var text = JsonConvert.SerializeObject(db); File.WriteAllText(path, text); }
private void AddDbSneaker(DbRoot db, Listing listing, RootParsingObject shop, Shop shopCatalogItem) { log += "Add Sneaker. sku:" + listing.sku + " Title:" + listing.title + br; var sneaker = new DbSneaker(); sneaker.Id = db.Sneakers.Count + 1; sneaker.Brand = listing.brand; sneaker.Sku = listing.sku; sneaker.Titles.Add(listing.title); sneaker.Color = listing.colorbrand; sneaker.Category = listing.category; sneaker.Links.Add(listing.url); if (listing.images.Count > 0) { var imageCollection = new DbImageCollection(); imageCollection.ShopName = shop.market_info.name; foreach (var image in listing.images) { var dbimg = new DbImage(); dbimg.SiteUrl = image; imageCollection.Images.Add(dbimg); } //imageCollection.Images = listing.images; //todo менять ссылки из магазины на ссылки с нашего сервака //todo качать фотки в момент парсинга sneaker.ImageCollectionList.Add(imageCollection); } foreach (var size in listing.sizes) { var dbSize = GetDbSize(sneaker, size, listing, shop, shopCatalogItem); sneaker.Sizes.Add(dbSize); } db.Sneakers.Add(sneaker); }
private static void DeleteOffers(DbRoot db) { foreach (var sneaker in db.Sneakers) { foreach (var size in sneaker.Sizes) { size.Offers.Clear(); } } }
private void AddShopsInfo(DbRoot db) { var shopCatalog = ShopCatalog; var shops = ShopCatalogController.GetShopsValidated(); foreach (var shop in shops) { var shopCatalogItem = shopCatalog.markets.Find(x => x.name == shop.market_info.name); AddShopInfo(db, shop, shopCatalogItem); } }
public void Dispose() { if (dbr != null) { dbr.Dispose(); dbr = null; } if (Connection != null) { Connection.Dispose(); Connection = null; } }
public void Create() { var db = new DbRoot(); db.UpdateTime = DateTime.Now; AddShopsInfo(db); db.Sneakers = db.Sneakers.FindAll(x => x.Category != "kids"); _logger.Info("Delete kids sneakers"); SaveLocalFile(db); SaveLog(); }
public static void Validate(DbRoot db) { _logger.Info("Validate Db"); //images var sneakersWithoutImages = db.Sneakers.FindAll(x => x.ImageCollectionList.Count == 0); foreach (var sneaker in sneakersWithoutImages) { _logger.Warn("sneaker without images. sku: " + sneaker.Sku); } db.Sneakers.RemoveAll(x => x.ImageCollectionList.Count == 0); _logger.Info("db validate is finished"); }
public void Complete() { if (dbr != null) { dbr.Dispose(); dbr = null; } if (Connection != null) { Connection.Dispose(); Connection = null; } else { throw new InvalidOperationException(); } }
public async Task Save() { DbRoot.Refresh(); if (!DbRoot.Exists) { DbRoot.Create(); DbRoot.Refresh(); } { var fileinfo = new FileInfo(Path.Join(DbRoot.FullName, "config.json")); using var fs = fileinfo.Open(FileMode.Create, FileAccess.Write); await JsonSerializer.SerializeAsync(fs, Configuration); } { var fileinfo = new FileInfo(Path.Join(DbRoot.FullName, "history.json")); using var fs = fileinfo.Open(FileMode.Create, FileAccess.Write); await JsonSerializer.SerializeAsync(fs, History); } }
private void AddShopInfo(DbRoot db, RootParsingObject shop, Shop shopCatalogItem) { foreach (var listing in shop.listings) { var sneaker = db.Sneakers.Find(x => x.Sku == listing.sku); if (sneaker == null) { AddDbSneaker(db, listing, shop, shopCatalogItem); } else { //db.Sneakers.RemoveAll(x => x.Sku == listing.sku); //AddDbSneaker(db, listing, shop, shopCatalogItem); UpdateDbSneaker(db, sneaker, listing, shop, shopCatalogItem); //todo запилить этот метод } } }
public static object Test000() { using (DClsszDataContext context = new DClsszDataContext()) { DbRoot root = Queryable.First <DbRoot>(context.DbRoots); for (int i = 0; i < root.CTyps.Count; i++) { CTyp typ = Enumerable.First <CTyp>(Enumerable.Skip <CTyp>(root.CTyps, i)); for (int j = 0; j < typ.FTyps.Count; j++) { FTyp typ2 = Enumerable.First <FTyp>(Enumerable.Skip <FTyp>(typ.FTyps, j)); for (int k = 0; k < typ2.Itms.Count; k++) { Itm itm = Enumerable.First <Itm>(Enumerable.Skip <Itm>(typ2.Itms, k)); for (int m = 0; m < itm.Parts.Count; m++) { Enumerable.First <Part>(Enumerable.Skip <Part>(itm.Parts, m)); } } } } } return(null); }
public BonanzaExporterAllBrands() { Db = DbController.LoadLocalFile(); Validator.Validate(Db); }
private void UpdateDbSneaker(DbRoot db, DbSneaker sneaker, Listing listing, RootParsingObject shop, Shop shopCatalogItem) { log += "Update Sneaker. sku:" + sneaker.Sku + " title: " + sneaker.Titles[0] + br; /* логика: * проверяем заголовок, если длиннее, берем его * проверяем остальные элементы, если они не нул, а были нул то берем их * сравниваем категорию листинга и кроссовка, если не совпадают то отклоняем этот листинг (но по идее такого быть не должно */ //title var title = sneaker.Titles.Find(x => x.ToLower() == listing.title.ToLower()); if (title == null) { sneaker.Titles.Add(listing.title); sneaker.Titles = sneaker.Titles.OrderByDescending(x => x.Length).ToList(); } //color if (!string.IsNullOrWhiteSpace(listing.colorbrand)) { if (listing.colorbrand.Length > sneaker.Color.Length) { sneaker.Color = listing.colorbrand; } } //category //если пустая то добавляем if (string.IsNullOrWhiteSpace(sneaker.Category) && !string.IsNullOrWhiteSpace(listing.category)) { sneaker.Category = listing.category; } //если обе непустые сраванием else if (!string.IsNullOrWhiteSpace(sneaker.Category) && !string.IsNullOrWhiteSpace(listing.category)) { if (sneaker.Category != listing.category) { log += "Warn! Other categories. sku: " + sneaker.Sku + " sneaker.Category:" + sneaker.Category + " listing.category:" + listing.category + " listing.url: " + listing.url + br; } } //если обе пустые то else if (string.IsNullOrWhiteSpace(sneaker.Category) && string.IsNullOrWhiteSpace(listing.category)) { log += "Warn: category is empty" + br; } //links sneaker.Links.Add(listing.url); //images var imgCol = new DbImageCollection(); imgCol.ShopName = shopCatalogItem.name; foreach (var lImage in listing.images) { var dbImg = new DbImage(); dbImg.SiteUrl = lImage; imgCol.Images.Add(dbImg); } sneaker.ImageCollectionList.Add(imgCol); //sizes foreach (var lSize in listing.sizes) { //find size var snSize = new DbSize(); if (!string.IsNullOrWhiteSpace(lSize.us)) { snSize = sneaker.Sizes.Find(x => x.Us == lSize.us); //если размера нет, создаем if (snSize == null) { var dbSize = GetDbSize(sneaker, lSize, listing, shop, shopCatalogItem); sneaker.Sizes.Add(dbSize); } //если есть создаем только оффер else { var offer = CreateDbOffer(sneaker, lSize, listing, shop, shopCatalogItem); snSize.Offers.Add(offer); snSize.Offers = snSize.Offers.OrderBy(x => x.price_usd_with_delivery_to_usa_and_minus_vat) .ToList(); } } else { //если юс размера нет, то надо добисать будет код (например для асфальтгольда) throw new Exception("size us is null. Cannot update db sneaker."); } } }