using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Abp.Notifications { /// /// Used to store (persist) notifications. /// public interface INotificationStore { /// /// Inserts a notification subscription. /// Task InsertSubscriptionAsync(NotificationSubscriptionInfo subscription); /// /// Deletes a notification subscription. /// Task DeleteSubscriptionAsync(UserIdentifier user, string notificationName, string entityTypeName, string entityId); /// /// Inserts a notification. /// Task InsertNotificationAsync(NotificationInfo notification); /// /// Gets a notification by Id, or returns null if not found. /// Task GetNotificationOrNullAsync(Guid notificationId); /// /// Inserts a user notification. /// Task InsertUserNotificationAsync(UserNotificationInfo userNotification); /// /// Gets subscriptions for a notification. /// Task> GetSubscriptionsAsync(string notificationName, string entityTypeName, string entityId); /// /// Gets subscriptions for a notification for specified tenant(s). /// Task> GetSubscriptionsAsync(int?[] tenantIds, string notificationName, string entityTypeName, string entityId); /// /// Gets subscriptions for a user. /// Task> GetSubscriptionsAsync(UserIdentifier user); /// /// Checks if a user subscribed for a notification /// Task IsSubscribedAsync(UserIdentifier user, string notificationName, string entityTypeName, string entityId); /// /// Updates a user notification state. /// Task UpdateUserNotificationStateAsync(int? tenantId, Guid userNotificationId, UserNotificationState state); /// /// Updates all notification states for a user. /// Task UpdateAllUserNotificationStatesAsync(UserIdentifier user, UserNotificationState state); /// /// Deletes a user notification. /// Task DeleteUserNotificationAsync(int? tenantId, Guid userNotificationId); /// /// Deletes all notifications of a user. /// Task DeleteAllUserNotificationsAsync(UserIdentifier user); /// /// Gets notifications of a user. /// /// User. /// Skip count. /// Maximum result count. /// State Task> GetUserNotificationsWithNotificationsAsync(UserIdentifier user, UserNotificationState? state = null, int skipCount = 0, int maxResultCount = int.MaxValue); /// /// Gets user notification count. /// /// User. /// The state. Task GetUserNotificationCountAsync(UserIdentifier user, UserNotificationState? state = null); /// /// Gets a user notification. /// /// Tenant Id /// Skip count. Task GetUserNotificationWithNotificationOrNullAsync(int? tenantId, Guid userNotificationId); /// /// Inserts notification for a tenant. /// Task InsertTenantNotificationAsync(TenantNotificationInfo tenantNotificationInfo); /// /// Deletes the notification. /// /// The notification. Task DeleteNotificationAsync(NotificationInfo notification); } }