DocSpace-buildtools/common/ASC.Core.Common/Notify/Engine/SingleRecipientInterceptor.cs

36 lines
968 B
C#
Raw Normal View History

2022-02-15 11:52:43 +00:00
namespace ASC.Notify.Engine;
class SingleRecipientInterceptor : ISendInterceptor
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
private const string Prefix = "__singlerecipientinterceptor";
private readonly List<IRecipient> _sendedTo = new List<IRecipient>(10);
2019-05-15 14:56:09 +00:00
2022-02-15 11:52:43 +00:00
public string Name { get; private set; }
public InterceptorPlace PreventPlace => InterceptorPlace.GroupSend | InterceptorPlace.DirectSend;
public InterceptorLifetime Lifetime => InterceptorLifetime.Call;
2019-05-15 14:56:09 +00:00
2022-02-15 11:52:43 +00:00
internal SingleRecipientInterceptor(string name)
{
if (string.IsNullOrEmpty(name))
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
throw new ArgumentException(nameof(name));
2019-05-15 14:56:09 +00:00
}
2022-02-15 11:52:43 +00:00
Name = name;
}
2022-02-15 11:52:43 +00:00
public bool PreventSend(NotifyRequest request, InterceptorPlace place, IServiceScope serviceScope)
{
var sendTo = request.Recipient;
if (!_sendedTo.Exists(rec => Equals(rec, sendTo)))
{
_sendedTo.Add(sendTo);
2022-02-15 11:52:43 +00:00
return false;
2019-05-15 14:56:09 +00:00
}
2022-02-15 11:52:43 +00:00
return true;
2019-05-15 14:56:09 +00:00
}
2022-02-15 11:52:43 +00:00
}