DocSpace-client/common/ASC.Core.Common/Notify/Telegram/TelegramSenderSink.cs

47 lines
1.5 KiB
C#
Raw Normal View History

2022-03-15 16:59:24 +00:00
namespace ASC.Core.Notify;
2022-02-15 11:52:43 +00:00
class TelegramSenderSink : Sink
{
private readonly string _senderName = Configuration.Constants.NotifyTelegramSenderSysName;
private readonly INotifySender _sender;
private readonly IServiceProvider _serviceProvider;
public TelegramSenderSink(INotifySender sender, IServiceProvider serviceProvider)
{
_sender = sender ?? throw new ArgumentNullException(nameof(sender));
_serviceProvider = serviceProvider;
}
2022-02-15 11:52:43 +00:00
public override SendResponse ProcessMessage(INoticeMessage message)
{
try
{
2022-02-15 11:52:43 +00:00
const SendResult result = SendResult.OK;
var m = new NotifyMessage
{
Reciever = message.Recipient.ID,
2022-02-15 11:52:43 +00:00
Subject = message.Subject,
ContentType = message.ContentType,
Content = message.Body,
SenderType = _senderName,
2022-02-15 11:52:43 +00:00
CreationDate = DateTime.UtcNow.Ticks,
};
2022-02-15 11:52:43 +00:00
using var scope = _serviceProvider.CreateScope();
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
2022-02-15 11:52:43 +00:00
var tenant = tenantManager.GetCurrentTenant(false);
m.TenantId = tenant == null ? Tenant.DefaultTenant : tenant.Id;
2022-02-15 11:52:43 +00:00
_sender.Send(m);
2022-02-15 11:52:43 +00:00
return new SendResponse(message, _senderName, result);
}
catch (Exception ex)
{
return new SendResponse(message, _senderName, ex);
}
}
2022-02-15 11:52:43 +00:00
}