public static CrossStitchPatternModel Parse(IElement root, Uri uri) { var model = new CrossStitchPatternModel(); var id = GetId(root, uri); ItemImage image = GetImageInfo(root, uri); PatternAuthor author = GetAuthorInfo(root, id.ToString()); PatternInfo patternInfo = GetPatternDescriptionInfo(root); PatternPrice patternPrice = GetPriceInfo(root); PatternDistributionStatus status = GetStatus(root, patternPrice); // model.PatternId = id; model.Image = image; model.Author = author; model.Info = patternInfo; model.PriceInfo = patternPrice; model.Status = status; return(model); }
private static PatternAuthor GetAuthorInfo(IElement root, string id) { // Author var author = new PatternAuthor(); var authorContainer = root.QuerySelector("div.set__title"); if (authorContainer != null) { author.ProfileLink = authorContainer.QuerySelector("a")?.GetAttribute("href"); var authorName = authorContainer.TextContent; if (!string.IsNullOrEmpty(authorName)) { authorName = authorName.Replace(id, string.Empty).Trim(' ', '#', '\xA0'); } author.Name = authorName; } return(author); }
private void AddKits() { _dbContext.PatternAuthors.Load(); _dbContext.KitManufacturers.Load(); _dbContext.ThreadManufacturers.Load(); _dbContext.Fabrics.Load(); _dbContext.FabricItems.Load(); var dtoKits = new List <Kit>(); foreach (var seedKit in _kits.Skip(1)) { var dto = new Kit((_lazyLoader)); dto.Title = seedKit.Title; var author = _dbContext.PatternAuthors.Local.FirstOrDefault(a => a.Name == seedKit.Author); if (author == null && !string.IsNullOrEmpty(seedKit.Author)) { author = new PatternAuthor((_lazyLoader)) { Name = seedKit.Author }; _dbContext.PatternAuthors.Add(author); } dto.Author = author; dto.ColorsCount = seedKit.ColorsCount; dto.Item = seedKit.Item; var manufacturer = _dbContext.KitManufacturers.Local.FirstOrDefault(a => a.Name.ToLowerInvariant() == seedKit.Manufacturer.ToLowerInvariant()); if (manufacturer == null) { manufacturer = new KitManufacturer((_lazyLoader)) { Name = seedKit.Manufacturer }; _dbContext.KitManufacturers.Add(manufacturer); } dto.Manufacturer = manufacturer; dto.Image = seedKit.Image; dto.Link = seedKit.Link; dto.WidthSm = seedKit.WidthSm; dto.HeightSm = seedKit.HeightSm; dto.WidthStitches = seedKit.WidthStitches; dto.HeightStitches = seedKit.HeightStitches; var threadManufacturer = _dbContext.ThreadManufacturers.Local.FirstOrDefault(m => m.Name.ToLowerInvariant() == seedKit.ThreadManufacturer.ToLowerInvariant()); if (threadManufacturer == null) { threadManufacturer = new ThreadManufacturer(_lazyLoader) { Name = seedKit.ThreadManufacturer }; _dbContext.ThreadManufacturers.Add(threadManufacturer); } dto.ThreadManufacturer = threadManufacturer; var fabricItem = _dbContext.FabricItems.Local.FirstOrDefault(f => f.Fabric != null && f.Fabric.Name == seedKit.FabricItem); if (fabricItem == null) { fabricItem = new FabricItem((_lazyLoader)) { Fabric = _dbContext.Fabrics.First(f => f.Name == seedKit.FabricItem), Sku = "KitModel", ColorId = "-", ColorName = "-" }; _dbContext.FabricItems.Add(fabricItem); } dto.FabricItem = fabricItem; dtoKits.Add(dto); } _dbContext.Kits.AddRange(dtoKits); }