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
|
|
|
}
|