示例#1
0
        private async Task CheckPriceAsync(Advert advert, ApplicationContext context)
        {
            var grabber = _grabbers.First(x => advert.Url.Contains(x.Url));

            var freshAdvert = await grabber.ParseAdvert(advert.Url);

            if (freshAdvert.LowPrice != default && freshAdvert.LowPrice != advert.LowPrice)
            {
                await NotifyUserOfPriceCut(advert, freshAdvert, DateTime.Now);

                advert.LowPrice      = freshAdvert.LowPrice;
                advert.LastCheckDate = DateTime.Now;

                context.Attach(advert);
                context.Entry(advert).State = EntityState.Modified;

                var priceHistory = new AdvertPriceHistory
                {
                    AdvertId   = advert.Id,
                    Price      = advert.LowPrice,
                    ChangeDate = advert.LastCheckDate
                };

                await context.AdvertPriceHistories.AddAsync(priceHistory);

                await context.SaveChangesAsync();
            }
        }
示例#2
0
        public override async Task ExecuteAsync(Message msg)
        {
            var url = msg.Text.Trim();

            if (await _context.Adverts.AnyAsync(x => x.UserId == _chatService.Chats[msg.Chat.Id].Id && x.Url == url))
            {
                await _client.SendTextMessageAsync(msg.Chat.Id, "У вас уже есть данное объявление", replyMarkup : GetDefaultReplyButtons());
            }
            else
            {
                var grabber = _grabbers.FirstOrDefault(x => url.Contains(x.Url))
                              ?? throw new TelegramException("Пожалуйста, введите коректную ссылку", msg.Chat.Id);

                var advert = await grabber.ParseAdvert(msg.Text);

                advert.UserId        = _chatService.Chats[msg.Chat.Id].Id;
                advert.IsActual      = true;
                advert.Complete      = false;
                advert.CreateDate    = DateTime.Now;
                advert.LastCheckDate = DateTime.Now;

                await _context.Adverts.AddAsync(advert);

                await _context.SaveChangesAsync();

                var priceHistory = new AdvertPriceHistory
                {
                    AdvertId   = advert.Id,
                    Price      = advert.LowPrice,
                    ChangeDate = advert.LastCheckDate
                };

                await _context.AdvertPriceHistories.AddAsync(priceHistory);

                await _context.SaveChangesAsync();

                var message = $"Название: {advert.Name}\nМинимальная цена: {advert.LowPrice}\nДобавлено: {advert.CreateDate}";
                await _client.SendTextMessageAsync(msg.Chat.Id, message, replyMarkup : GetDefaultReplyButtons());
            }
        }