Reviewed-on: #6 Co-authored-by: Sergey Nazarov <insight.appdev@gmail.com> Co-committed-by: Sergey Nazarov <insight.appdev@gmail.com>
40 lines
1.6 KiB
C#
40 lines
1.6 KiB
C#
using Insight.Localizer;
|
|
using Insight.TelegramBot;
|
|
using Insight.TelegramBot.Handling.Handlers;
|
|
using Microsoft.Extensions.Logging;
|
|
using Nocr.TelegramClient.AppServices.Bots.MessageDispatcher;
|
|
using Nocr.TelegramClient.AppServices.Handlers.BaseHandlers;
|
|
using Nocr.TelegramClient.AppServices.Users;
|
|
using Nocr.TextMatcher.Api.Contracts.TextMatches;
|
|
using Telegram.Bot.Types;
|
|
|
|
namespace Nocr.TelegramClient.AppServices.Handlers.Messages.SubscriptionsMessage;
|
|
|
|
public class SubscriptionsMessageHandler : ViewSubscriptionHandlerBase,
|
|
IMatchingUpdateHandler<SubscriptionsMessageMatcher>
|
|
{
|
|
private readonly IUsersService _usersService;
|
|
|
|
public SubscriptionsMessageHandler(
|
|
ILogger<SubscriptionsMessageHandler> logger,
|
|
ILocalizer localizer,
|
|
IMessageDispatcherQueue messageQueue,
|
|
IUsersService usersService,
|
|
IBot bot,
|
|
ITextSubscriptionsController subscriptionsController)
|
|
: base(logger, localizer, messageQueue, bot, subscriptionsController)
|
|
{
|
|
_usersService = usersService ?? throw new ArgumentNullException(nameof(usersService));
|
|
}
|
|
|
|
public async Task Handle(Update update, CancellationToken cancellationToken = default)
|
|
{
|
|
var telegramId = update.Message.From.Id;
|
|
var user = await _usersService.GetOrCreate(telegramId, update.Message.From.Username, cancellationToken);
|
|
|
|
var subscriptions = await SubscriptionsController.GetByUserId(user.Id, cancellationToken);
|
|
var subscription = subscriptions.MinBy(x => x.Id);
|
|
|
|
await SendSubscriptionMessage(telegramId, subscription, CancellationToken.None);
|
|
}
|
|
} |