public void Scan() // и переписать на новый паттерн матчинг { var sw = Stopwatch.StartNew(); var random = new Random(); var randomTimeRange = random.Next(500, 2500); using var db = new ApplicationContext(); var users = db.Users.Include(p => p.Products).ToList(); foreach (var user in users) { foreach (var product in user.Products) { var transferProduct = parsingDriver.CheckProduct(product.Artikul); var send = string.Empty; if (CheckErrorСost(transferProduct) || CheckErrorSite(transferProduct)) { continue; } if (product.PricePreviousBYN != transferProduct.CostBYN && transferProduct.CostBYN != 0) { db.PriceHistories.Add(new PriceHistory(product.ProductId, DateTime.Now, transferProduct.CostBYN, transferProduct.CostRUS)); } if (transferProduct.CostRUS == 0 && transferProduct.CostBYN == 0 && product.ProductIsNow) //товар пропал из продажи { send = Disappeared(user, product, transferProduct); continue; } if (transferProduct.CostBYN > 0 && product.ProductIsNow == false) //товар появился в продаже (по минимальной и ) { send = Poyavilsya(user, product, transferProduct); continue; } if (transferProduct.CostBYN == product.PriceMinBYN && transferProduct.CostBYN < product.PricePreviousBYN && transferProduct.CostBYN != 0) //цена снизилась снова до минимальной { send = CenaSnizilas(user, product, transferProduct); continue; } if (transferProduct.CostBYN < product.PriceMinBYN && transferProduct.CostBYN != 0) //цена снизилась до минимальной { send = CenaUvelichilas(user, product, transferProduct); continue; } if (transferProduct.CostRUS != 0 && transferProduct.CostBYN != 0) { Other(product, transferProduct); } Thread.Sleep(RandomTimeSleep(randomTimeRange)); } db.SaveChanges(); } var count = (int)0; foreach (var user in users) { count += user.Products.Count; } if (count == 0) { count = 1; } sw.Stop(); var massegeStop = $"Выполнено cканирование {DateTime.Now}, \n" + $"отсканировано {count} товара \n" + $"за время {sw.Elapsed.ToString(@"mm\:ss")} \n" + $"среднее {(sw.Elapsed.Divide(count)).ToString(@"s\.f")} с"; Logging.LogToConsole(massegeStop); }
public void CheckProductAndSendMessage(Telegram.Bot.Args.MessageEventArgs e) //сильно отрефакторить много проблем // не должно быть пустого ответа // сразу после рефакторинга удалить проверку на базовом классе // каждый кейс должен вызывать метод клоторые делает все сам { if (CheckUser(e)) { var response = String.Empty; var allComman = "Список всех команд бота: \n" + "/all - все отслеживаемые товары одним списком. \n" + "/available - все отслеживаемые которые в наличии. \n" + "/not_available - все отслеживаемые которых нет в наличии. \n" + "/start - информация о боте. \n" + "(Артикул из цифр) - добавляет данный товар в отслеживание."; var allCommanShort = "/all - все отслеживаемые товары одним списком. \n" + "/available - все отслеживаемые которые в наличии. \n" + "/not_available - все отслеживаемые которых нет в наличии. \n"; var urlImage = string.Empty; if (e.Message.Text != null) { switch (e.Message.Text.ToLower()) { case "/help": response = allComman; break; case "/all": response = Answer(e, Available.all); break; case "/available": response = Answer(e, Available.available); break; case "/not_available": response = Answer(e, Available.not_available); break; case "/start": response = "Бот, который умеет отслеживать изменения цен товаров на wildberries \n" + "Для получения списка команд введите /help"; break; default: if (CheckOnComman(e.Message.Text, 'D')) { DeleteProduct(e); } else if (CheckOnComman(e.Message.Text, 'I')) { Info(e); } else if (CheckOnComman(e.Message.Text, 'H')) { HistoryPrice(e); } else if (CheckOnArticul(e.Message.Text)) { var backCheckProduct = parsingDriver.CheckProduct(e.Message.Text); if (backCheckProduct.Name != string.Empty) { urlImage = $"{Config.MainURL}/catalog/{e.Message.Text}/detail.aspx"; } response = OperanionOnProduct(e, backCheckProduct); } else { response = $"{e.Message.Text} - ошибка ввода данных. \n" + allCommanShort; } break; } if (urlImage.Length != 0) { SendTextAndPhotoToBot(e.Message.Chat.Id, urlImage, response); } else { SendTextAndPhotoToBot(e.Message.Chat.Id, "", response); } } } }