private static BonanzaRoot CreateBonanzaRecords_MultiListing(AllStockRoot allstock, FullCatalogRoot fullCatalog) { BonanzaRoot bonanza = new BonanzaRoot(); foreach (var asSneaker in allstock.sneakers) { Model.BonanzaModel.BonanzaRecord bRecord = GetBonanzaRecord_MultiListing(asSneaker, fullCatalog); if (bRecord != null) { bonanza.Records.Add(bRecord); } } return(bonanza); }
private BonanzaRoot CreateBonanzaRecords() { BonanzaRoot bonanza = new BonanzaRoot(); foreach (var dbSneaker in Db.Sneakers) { foreach (var dbSize in dbSneaker.Sizes) { Model.BonanzaModel.BonanzaRecord bRecord = GetBonanzaRecord(dbSneaker, dbSize); if (bRecord != null) { bonanza.Records.Add(bRecord); } } } return(bonanza); }
private static BonanzaRoot CreateBonanzaRecords(AllStockRoot allstock, FullCatalogRoot fullCatalog) { ShopCatalogRoot shopCatalog = ShopCatalogController.LoadShopCatalogFromFtp(); BonanzaRoot bonanza = new BonanzaRoot(); foreach (var asSneaker in allstock.sneakers) { foreach (var asSize in asSneaker.sizes) { Model.BonanzaModel.BonanzaRecord bRecord = GetBonanzaRecord(asSize, asSneaker, fullCatalog, shopCatalog); if (bRecord != null) { bonanza.Records.Add(bRecord); } } } return(bonanza); }
private static bool GetImages(FullCatalogRecord fcSneaker, Model.BonanzaModel.BonanzaRecord bRecord) { if (fcSneaker.images.Count == 0) { _logger.Warn("Нет изображений. sku2:" + fcSneaker.sku); return(false); } bRecord.image1 = fcSneaker.images[0]; if (fcSneaker.images.Count > 1) { bRecord.image2 = fcSneaker.images[1]; } if (fcSneaker.images.Count > 2) { bRecord.image3 = fcSneaker.images[2]; } if (fcSneaker.images.Count > 3) { bRecord.image4 = fcSneaker.images[3]; } return(true); }
private static Model.BonanzaModel.BonanzaRecord GetBonanzaRecord(AllStockSize asSize, AllStockSneaker asSneaker, FullCatalogRoot fullCatalog, ShopCatalogRoot shopCatalog) { var fcSneaker = fullCatalog.records.Find(x => x.sku == asSneaker.sku); if (fcSneaker == null) { _logger.Warn("Артикул не найден в фулкаталоге. sku:" + asSneaker.sku); return(null); } var bRecord = new Model.BonanzaModel.BonanzaRecord(); //standart data bRecord.quantity = 5; bRecord.condition = "New with box"; bRecord.force_update = "true"; bRecord.brand = fcSneaker.brand; //shipping bRecord.shipping_price = 29; bRecord.shipping_type = "flat"; bRecord.shipping_carrier = "usps"; bRecord.shipping_service = "EconomyShipping"; bRecord.shipping_package = "normal"; //bRecord.worldwide_shipping_type = "flat"; //bRecord.worldwide_shipping_price = 29; bRecord.id = asSize.sku2; bRecord.description = GetBonanzaRecordDescription(asSize, asSneaker, fullCatalog); if (bRecord.description == null) { _logger.Warn("Пустое описание. sku2:" + bRecord.id); return(null); } bRecord.category = GetBonanzaCategory(asSneaker.category, fcSneaker.sex); bRecord.width = GetBonanzaWidth(asSneaker.category); bRecord.title = GetTitle(asSneaker.brand, asSize.us, asSneaker.sku, asSneaker.title); //price var offer = GetFirstActiveOffer(asSize, shopCatalog); //var offer = GetNonRussianOffer(asSize); //отфильтруем русские магазы if (offer == null) { return(null); } bRecord.price = GetPrice(offer); //double priceWithMargin = offer.price_usd_with_delivery_to_usa_and_minus_vat + MARGIN_USD; //double priceWithFeeMinusBonanzaDelivery = (priceWithMargin * 1.18) - 29; //priceWithFeeMinusBonanzaDelivery = Math.Round(priceWithFeeMinusBonanzaDelivery, 2); //bRecord.price = priceWithFeeMinusBonanzaDelivery.ToString("F", System.Globalization.CultureInfo.CreateSpecificCulture("en-US")); //images if (fcSneaker.images.Count == 0) { _logger.Warn("Нет изображений. sku2:" + bRecord.id); return(null); } bRecord.image1 = fcSneaker.images[0]; if (fcSneaker.images.Count > 1) { bRecord.image2 = fcSneaker.images[1]; } if (fcSneaker.images.Count > 2) { bRecord.image3 = fcSneaker.images[2]; } if (fcSneaker.images.Count > 3) { bRecord.image4 = fcSneaker.images[3]; } bRecord.size = asSize.us; bRecord.traits = "[[US Size:" + asSize.us + "]] "; bRecord.upc = asSize.upc; bRecord.MPN = fcSneaker.sku; //это вроде не работает bRecord.traits += "[[MPN:" + fcSneaker.sku + "]] "; return(bRecord); }
private static Model.BonanzaModel.BonanzaRecord GetBonanzaRecord_MultiListing(AllStockSneaker asSneaker, FullCatalogRoot fullCatalog) { //валидации //sizes if (asSneaker.sizes.Count == 0) { return(null); } //description var description = GetBonanzaRecordDescription_MultiListing(asSneaker, fullCatalog); if (description == null) { _logger.Warn("Пустое описание. sku:" + asSneaker.sku); return(null); } //инициализация var fcSneaker = fullCatalog.records.Find(x => x.sku == asSneaker.sku); var bRecord = new Model.BonanzaModel.BonanzaRecord(); //standart data bRecord.quantity = 5; //нужно доработать, кол-во равно 5*кол-во размеров bRecord.condition = "New with box"; bRecord.force_update = "true"; bRecord.brand = fcSneaker.brand; bRecord.MPN = fcSneaker.sku; //это вроде не работает bRecord.traits = "[[MPN:" + fcSneaker.sku + "]] "; //color (русские цвета добавляются, пока убрал) //if (!string.IsNullOrWhiteSpace(fcSneaker.color)) // bRecord.traits += "[[Color:" + fcSneaker.color + "]] "; //shipping bRecord.shipping_price = 29; bRecord.shipping_type = "flat"; bRecord.shipping_carrier = "usps"; bRecord.shipping_service = "EconomyShipping"; bRecord.shipping_package = "normal"; //bRecord.worldwide_shipping_type = "flat"; //bRecord.worldwide_shipping_price = 29; //main bRecord.id = fcSneaker.sku; bRecord.category = GetBonanzaCategory(asSneaker.category, fcSneaker.sex); bRecord.width = GetBonanzaWidth(asSneaker.category); bRecord.title = GetTitle_MultiListing(asSneaker.brand, asSneaker.sku, asSneaker.title); bRecord.description = description; //images bool hasImages = GetImages(fcSneaker, bRecord); if (!hasImages) { return(null); } //делаем вариации //все предложения из русских магазов уже удалены bRecord.price = String.Empty; foreach (var size in asSneaker.sizes) { if (size.offers.Count > 0) { var price = GetPrice(size.offers[0]); bRecord.traits += "[[US Size:" + size.us + "][quantity:" + 5 + "][price:" + price + "]]"; if (bRecord.price == String.Empty) { bRecord.price = price; } if (Double.Parse(bRecord.price.Replace(".", ",")) > Double.Parse(price.Replace(".", ","))) { bRecord.price = price; } } } if (bRecord.price == String.Empty) { _logger.Warn("Цена бонанза рекорд пустая. Sku: " + asSneaker.sku); var offer = asSneaker.sizes.Find(x => x.offers.Count > 0); return(null); } //price //var offer = GetNonRussianOffer_MultiListing(asSneaker); //отфильтруем русские магазы //if (offer == null) // return null; //bRecord.price = GetPrice(offer); //bRecord.size = asSize.us; //bRecord.traits = "[[US Size:" + asSize.us + "]] "; //bRecord.upc = asSize.upc; return(bRecord); }
private BonanzaRecord GetBonanzaRecord(DbSneaker dbSneaker, DbSize dbSize) { var bRecord = new Model.BonanzaModel.BonanzaRecord(); //standart data bRecord.quantity = 5; bRecord.condition = "New with box"; bRecord.force_update = "true"; bRecord.brand = dbSneaker.Brand; //shipping bRecord.shipping_price = 29; bRecord.shipping_type = "flat"; bRecord.shipping_carrier = "usps"; bRecord.shipping_service = "EconomyShipping"; bRecord.shipping_package = "normal"; //bRecord.worldwide_shipping_type = "flat"; //bRecord.worldwide_shipping_price = 29; bRecord.id = dbSneaker.Sku + "-" + dbSize.Us; bRecord.description = GetBonanzaRecordDescription(dbSize, dbSneaker); if (bRecord.description == null) { _logger.Warn("Пустое описание. sku2:" + bRecord.id); return(null); } //todo поправить метод, так как пола теперь нет, только категория bRecord.category = GetBonanzaCategory(dbSneaker.Category, dbSneaker.Category); bRecord.width = GetBonanzaWidth(dbSneaker.Category); bRecord.title = GetTitle(dbSneaker.Brand, dbSize.Us, dbSneaker.Sku, dbSneaker.Titles[0], dbSneaker.Category); //price var offer = GetNonRussianOffer(dbSize); //отфильтруем русские магазы и берем самый дешевый оффер if (offer == null) { return(null); } bRecord.price = GetPrice(offer.price_usd_with_delivery_to_usa_and_minus_vat); //images List <string> images = GetImages(dbSneaker); if (images == null) { _logger.Warn("Нет изображений. sku2:" + bRecord.id); return(null); } if (images.Count == 0) { _logger.Warn("Нет изображений. sku2:" + bRecord.id); return(null); } bRecord.image1 = images[0]; if (images.Count > 1) { bRecord.image2 = images[1]; } if (images.Count > 2) { bRecord.image3 = images[2]; } if (images.Count > 3) { bRecord.image4 = images[3]; } bRecord.size = dbSize.Us; bRecord.traits = "[[US Size:" + dbSize.Us + "]] "; bRecord.upc = dbSize.Upc; bRecord.MPN = dbSneaker.Sku; //это вроде не работает bRecord.traits += "[[MPN:" + dbSneaker.Sku + "]] "; return(bRecord); }