using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Abp.Notifications
{
///
/// Used to manage user notifications.
///
public interface IUserNotificationManager
{
///
/// Gets notifications for a user.
///
/// User.
/// State
/// Skip count.
/// Maximum result count.
Task> GetUserNotificationsAsync(UserIdentifier user, UserNotificationState? state = null, int skipCount = 0, int maxResultCount = int.MaxValue);
///
/// Gets user notification count.
///
/// User.
/// State.
Task GetUserNotificationCountAsync(UserIdentifier user, UserNotificationState? state = null);
///
/// Gets a user notification by given id.
///
/// Tenant Id
/// The user notification id.
Task GetUserNotificationAsync(int? tenantId, Guid userNotificationId);
///
/// Updates a user notification state.
///
/// Tenant Id.
/// The user notification id.
/// New state.
Task UpdateUserNotificationStateAsync(int? tenantId, Guid userNotificationId, UserNotificationState state);
///
/// Updates all notification states for a user.
///
/// User.
/// New state.
Task UpdateAllUserNotificationStatesAsync(UserIdentifier user, UserNotificationState state);
///
/// Deletes a user notification.
///
/// Tenant Id.
/// The user notification id.
Task DeleteUserNotificationAsync(int? tenantId, Guid userNotificationId);
///
/// Deletes all notifications of a user.
///
/// User.
Task DeleteAllUserNotificationsAsync(UserIdentifier user);
}
}