public static HotOffer GetRandomOffer(HotOffersRoot hotOffers, string category) { var categoryOffers = hotOffers.offers.FindAll(x => x.category == category); var rnd = new Random().Next(categoryOffers.Count - 1); return(categoryOffers[rnd]); }
private static void SaveJson(HotOffersRoot json, string filename) { var folder = Config.GetConfig().DirectoryPathParsing + @"HotOffers\"; var localFileName = folder + filename; //сохраняем на яндекс.диск файл var textJson = JsonConvert.SerializeObject(json); 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 = "HotOffers" + "/" + filename; Helper.LoadFileToFtp(localFileName, ftpFileName, ftpHost, ftpUser, ftpPass); }
private static void Post3MaxMarginValueHotOffer(HotOffersRoot hotOffers, int start, int stop) { //берем только те офферы где три размера или больше hotOffers.offers = hotOffers.offers.FindAll(x => x.sizes.Count > 3); //сортируем размеры от большой скидки к меншей hotOffers.offers = hotOffers.offers.OrderByDescending(x => x.regular_price - x.our_price).ToList(); //теперь постим в телеграм первые 3 оффера for (int i = start; i <= stop; i++) { var offer = hotOffers.offers[i]; if (offer.images[0].Contains("img.sneaker-icon.ru")) { PostPrivateToTelegram(offer); PostPublicToTelegram(offer); } } SaveJson(hotOffers, "HotOffersMaxMargin.json"); }
private static HotOffersRoot GetHotOffers(AllStockRoot allStock) { /* Как определить лучшее предолжение? Горячий пирожок? Как найти самые большие скидки в нашей базе данных? * Я думаю что для нас выгодными будут предложения, которые с учетом доставки и ват будут на 30% или даже дешевле чем ритейл цена. * Что такое горячий пирожок? Это артикул, у которого есть несколько размеров, удовлетворяющих этому условию * Что мы заносим в пирожок? * - артикул, * - цену себестоимости, * - размеры которые попадают под это условия. * - на каждый размер: * - ссылка на магазин, где можно купить по этой цене данный размер * - ссылки на изображения с нашего сервака (несколько изображений) * - цена этого размера * - максимальную цену среди всех размеров (какие-то размеры дешевле, какие-то дороже * чтобы определить ритейл цену, берем среднюю цену без учета скидки всех размеров всех офферов */ double minMargin = MIN_NEED_MARGIN; //минимальная маржа в долларах с пирожка. То есть минимальная стоимость разницы между ритейл ценой и себест. с доставкой и вычетом ват double minSalePercent = 0.3; //минимальная скидка в процентах var myHotOffers = new HotOffersRoot(); FullCatalogRoot fullCatalog = FullCatalog2.LoadFullCatalogFromFtp(); foreach (var sneaker in allStock.sneakers) { var hOffer = GetHotOfferFromAllStockSneaker(sneaker, fullCatalog, minMargin, minSalePercent); if (hOffer != null) { myHotOffers.offers.Add(hOffer); } } if (myHotOffers.offers.Count > 0) { return(myHotOffers); } else { return(null); } }