DocSpace-buildtools/common/ASC.Core.Common/Notify/Model/ISubscriptionProvider.cs

48 lines
1.9 KiB
C#
Raw Normal View History

2022-02-15 11:52:43 +00:00
namespace ASC.Notify.Model;
public interface ISubscriptionProvider
2019-05-15 14:56:09 +00:00
{
2022-02-21 09:17:17 +00:00
bool IsUnsubscribe(IDirectRecipient recipient, INotifyAction action, string objectID);
2022-02-15 11:52:43 +00:00
IRecipient[] GetRecipients(INotifyAction action, string objectID);
object GetSubscriptionRecord(INotifyAction action, IRecipient recipient, string objectID);
2022-02-21 09:17:17 +00:00
string[] GetSubscriptionMethod(INotifyAction action, IRecipient recipient);
string[] GetSubscriptions(INotifyAction action, IRecipient recipient, bool checkSubscribe = true);
2022-02-15 11:52:43 +00:00
void Subscribe(INotifyAction action, string objectID, IRecipient recipient);
void UnSubscribe(INotifyAction action);
void UnSubscribe(INotifyAction action, IRecipient recipient);
2022-02-21 09:17:17 +00:00
void UnSubscribe(INotifyAction action, string objectID);
void UnSubscribe(INotifyAction action, string objectID, IRecipient recipient);
2022-02-15 11:52:43 +00:00
void UpdateSubscriptionMethod(INotifyAction action, IRecipient recipient, params string[] senderNames);
}
2019-05-15 14:56:09 +00:00
2022-02-15 11:52:43 +00:00
public static class SubscriptionProviderHelper
{
public static bool IsSubscribed(this ISubscriptionProvider provider, ILog log, INotifyAction action, IRecipient recipient, string objectID)
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
var result = false;
2019-05-15 14:56:09 +00:00
2022-02-15 11:52:43 +00:00
try
{
var subscriptionRecord = provider.GetSubscriptionRecord(action, recipient, objectID);
if (subscriptionRecord != null)
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
var properties = subscriptionRecord.GetType().GetProperties();
if (properties.Length > 0)
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
var property = properties.Single(p => p.Name == "Subscribed");
if (property != null)
2019-05-15 14:56:09 +00:00
{
2022-02-15 11:52:43 +00:00
result = (bool)property.GetValue(subscriptionRecord, null);
2019-05-15 14:56:09 +00:00
}
}
}
}
2022-02-15 11:52:43 +00:00
catch (Exception exception)
{
log.Error(exception);
}
return result;
2019-05-15 14:56:09 +00:00
}
2022-02-15 11:52:43 +00:00
}