Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }