| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763 |
- using System.Linq.Expressions;
- using Abp;
- using Abp.Dependency;
- using Abp.Domain.Repositories;
- using Abp.Domain.Uow;
- using Abp.Linq.Expressions;
- using Abp.Linq.Extensions;
- using Abp.Notifications;
- namespace VberZero.Notifications;
- /// <summary>
- /// Implements <see cref="INotificationStore"/> using repositories.
- /// </summary>
- public class NotificationStore : INotificationStore, ITransientDependency
- {
- private readonly IRepository<NotificationInfo, Guid> _notificationRepository;
- private readonly IRepository<TenantNotificationInfo, Guid> _tenantNotificationRepository;
- private readonly IRepository<UserNotificationInfo, Guid> _userNotificationRepository;
- private readonly IRepository<NotificationSubscriptionInfo, Guid> _notificationSubscriptionRepository;
- private readonly IUnitOfWorkManager _unitOfWorkManager;
- /// <summary>
- /// Initializes a new instance of the <see cref="NotificationStore"/> class.
- /// </summary>
- public NotificationStore(
- IRepository<NotificationInfo, Guid> notificationRepository,
- IRepository<TenantNotificationInfo, Guid> tenantNotificationRepository,
- IRepository<UserNotificationInfo, Guid> userNotificationRepository,
- IRepository<NotificationSubscriptionInfo, Guid> notificationSubscriptionRepository,
- IUnitOfWorkManager unitOfWorkManager)
- {
- _notificationRepository = notificationRepository;
- _tenantNotificationRepository = tenantNotificationRepository;
- _userNotificationRepository = userNotificationRepository;
- _notificationSubscriptionRepository = notificationSubscriptionRepository;
- _unitOfWorkManager = unitOfWorkManager;
- }
- public virtual async Task InsertSubscriptionAsync(NotificationSubscriptionInfo subscription)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(subscription.TenantId))
- {
- await _notificationSubscriptionRepository.InsertAsync(subscription);
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void InsertSubscription(NotificationSubscriptionInfo subscription)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(subscription.TenantId))
- {
- _notificationSubscriptionRepository.Insert(subscription);
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task DeleteSubscriptionAsync(
- UserIdentifier user,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- await _notificationSubscriptionRepository.DeleteAsync(s =>
- s.UserId == user.UserId &&
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void DeleteSubscription(
- UserIdentifier user,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- _notificationSubscriptionRepository.Delete(s =>
- s.UserId == user.UserId &&
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task InsertNotificationAsync(NotificationInfo notification)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(null))
- {
- await _notificationRepository.InsertAsync(notification);
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void InsertNotification(NotificationInfo notification)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(null))
- {
- _notificationRepository.Insert(notification);
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task<NotificationInfo> GetNotificationOrNullAsync(Guid notificationId)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(null))
- {
- return await _notificationRepository.FirstOrDefaultAsync(notificationId);
- }
- });
- }
- public virtual NotificationInfo GetNotificationOrNull(Guid notificationId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(null))
- {
- return _notificationRepository.FirstOrDefault(notificationId);
- }
- });
- }
- public virtual async Task InsertUserNotificationAsync(UserNotificationInfo userNotification)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(userNotification.TenantId))
- {
- await _userNotificationRepository.InsertAsync(userNotification);
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void InsertUserNotification(UserNotificationInfo userNotification)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(userNotification.TenantId))
- {
- _userNotificationRepository.Insert(userNotification);
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task<List<NotificationSubscriptionInfo>> GetSubscriptionsAsync(
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
- {
- return await _notificationSubscriptionRepository.GetAllListAsync(s =>
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- }
- });
- }
- public virtual List<NotificationSubscriptionInfo> GetSubscriptions(
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
- {
- return _notificationSubscriptionRepository.GetAllList(s =>
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- }
- });
- }
- public virtual async Task<List<NotificationSubscriptionInfo>> GetSubscriptionsAsync(
- int?[] tenantIds,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- var subscriptions = new List<NotificationSubscriptionInfo>();
- foreach (var tenantId in tenantIds)
- {
- subscriptions.AddRange(await GetSubscriptionsAsync(tenantId, notificationName, entityTypeName,
- entityId));
- }
- return subscriptions;
- });
- }
- public virtual List<NotificationSubscriptionInfo> GetSubscriptions(
- int?[] tenantIds,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- var subscriptions = new List<NotificationSubscriptionInfo>();
- foreach (var tenantId in tenantIds)
- {
- subscriptions.AddRange(GetSubscriptions(tenantId, notificationName, entityTypeName, entityId));
- }
- return subscriptions;
- });
- }
- public virtual async Task<List<NotificationSubscriptionInfo>> GetSubscriptionsAsync(UserIdentifier user)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- return await _notificationSubscriptionRepository.GetAllListAsync(s => s.UserId == user.UserId);
- }
- });
- }
- public virtual List<NotificationSubscriptionInfo> GetSubscriptions(UserIdentifier user)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- return _notificationSubscriptionRepository.GetAllList(s => s.UserId == user.UserId);
- }
- });
- }
- protected virtual async Task<List<NotificationSubscriptionInfo>> GetSubscriptionsAsync(
- int? tenantId,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- return await _notificationSubscriptionRepository.GetAllListAsync(s =>
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- }
- });
- }
- protected virtual List<NotificationSubscriptionInfo> GetSubscriptions(
- int? tenantId,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- return _notificationSubscriptionRepository.GetAllList(s =>
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- );
- }
- });
- }
- public virtual async Task<bool> IsSubscribedAsync(
- UserIdentifier user,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- return await _notificationSubscriptionRepository.CountAsync(s =>
- s.UserId == user.UserId &&
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- ) > 0;
- }
- });
- }
- public virtual bool IsSubscribed(
- UserIdentifier user,
- string notificationName,
- string entityTypeName,
- string entityId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- return _notificationSubscriptionRepository.Count(s =>
- s.UserId == user.UserId &&
- s.NotificationName == notificationName &&
- s.EntityTypeName == entityTypeName &&
- s.EntityId == entityId
- ) > 0;
- }
- });
- }
- public virtual async Task UpdateUserNotificationStateAsync(
- int? tenantId,
- Guid userNotificationId,
- UserNotificationState state)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- var userNotification = await _userNotificationRepository.FirstOrDefaultAsync(userNotificationId);
- if (userNotification == null)
- {
- return;
- }
- userNotification.State = state;
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void UpdateUserNotificationState(
- int? tenantId,
- Guid userNotificationId,
- UserNotificationState state)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- var userNotification = _userNotificationRepository.FirstOrDefault(userNotificationId);
- if (userNotification == null)
- {
- return;
- }
- userNotification.State = state;
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task UpdateAllUserNotificationStatesAsync(UserIdentifier user, UserNotificationState state)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var userNotifications = await _userNotificationRepository.GetAllListAsync(
- un => un.UserId == user.UserId
- );
- foreach (var userNotification in userNotifications)
- {
- userNotification.State = state;
- }
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void UpdateAllUserNotificationStates(UserIdentifier user, UserNotificationState state)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var userNotifications = _userNotificationRepository.GetAllList(
- un => un.UserId == user.UserId
- );
- foreach (var userNotification in userNotifications)
- {
- userNotification.State = state;
- }
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task DeleteUserNotificationAsync(int? tenantId, Guid userNotificationId)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- await _userNotificationRepository.DeleteAsync(userNotificationId);
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void DeleteUserNotification(int? tenantId, Guid userNotificationId)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- _userNotificationRepository.Delete(userNotificationId);
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- public virtual async Task DeleteAllUserNotificationsAsync(
- UserIdentifier user,
- UserNotificationState? state = null,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var predicate = CreateNotificationFilterPredicate(user, state, startDate, endDate);
- await _userNotificationRepository.DeleteAsync(predicate);
- await _unitOfWorkManager.Current.SaveChangesAsync();
- }
- });
- }
- public virtual void DeleteAllUserNotifications(
- UserIdentifier user,
- UserNotificationState? state = null,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var predicate = CreateNotificationFilterPredicate(user, state, startDate, endDate);
- _userNotificationRepository.Delete(predicate);
- _unitOfWorkManager.Current.SaveChanges();
- }
- });
- }
- private Expression<Func<UserNotificationInfo, bool>> CreateNotificationFilterPredicate(
- UserIdentifier user,
- UserNotificationState? state = null,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- var predicate = PredicateBuilder.New<UserNotificationInfo>();
- predicate = predicate.And(p => p.UserId == user.UserId);
- if (startDate.HasValue)
- {
- predicate = predicate.And(p => p.CreationTime >= startDate);
- }
- if (endDate.HasValue)
- {
- predicate = predicate.And(p => p.CreationTime <= endDate);
- }
- if (state.HasValue)
- {
- predicate = predicate.And(p => p.State == state);
- }
- return predicate;
- }
- public virtual async Task<List<UserNotificationInfoWithNotificationInfo>>
- GetUserNotificationsWithNotificationsAsync(
- UserIdentifier user,
- UserNotificationState? state = null,
- int skipCount = 0,
- int maxResultCount = int.MaxValue,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- var result = _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var query = from userNotificationInfo in _userNotificationRepository.GetAll()
- join tenantNotificationInfo in _tenantNotificationRepository.GetAll() on userNotificationInfo
- .TenantNotificationId equals tenantNotificationInfo.Id
- where userNotificationInfo.UserId == user.UserId
- orderby tenantNotificationInfo.CreationTime descending
- select new
- {
- userNotificationInfo,
- tenantNotificationInfo
- };
- if (state.HasValue)
- {
- query = query.Where(x => x.userNotificationInfo.State == state.Value);
- }
- if (startDate.HasValue)
- {
- query = query.Where(x => x.tenantNotificationInfo.CreationTime >= startDate);
- }
- if (endDate.HasValue)
- {
- query = query.Where(x => x.tenantNotificationInfo.CreationTime <= endDate);
- }
- query = query.PageBy(skipCount, maxResultCount);
- var list = query.ToList();
- return list.Select(
- a => new UserNotificationInfoWithNotificationInfo(
- a.userNotificationInfo,
- a.tenantNotificationInfo
- )
- ).ToList();
- }
- });
- return await Task.FromResult(result);
- }
- public virtual List<UserNotificationInfoWithNotificationInfo> GetUserNotificationsWithNotifications(
- UserIdentifier user,
- UserNotificationState? state = null,
- int skipCount = 0,
- int maxResultCount = int.MaxValue,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var query = from userNotificationInfo in _userNotificationRepository.GetAll()
- join tenantNotificationInfo in _tenantNotificationRepository.GetAll() on userNotificationInfo
- .TenantNotificationId equals tenantNotificationInfo.Id
- where userNotificationInfo.UserId == user.UserId
- orderby tenantNotificationInfo.CreationTime descending
- select new
- {
- userNotificationInfo,
- tenantNotificationInfo
- };
- if (state.HasValue)
- {
- query = query.Where(x => x.userNotificationInfo.State == state.Value);
- }
- if (startDate.HasValue)
- {
- query = query.Where(x => x.tenantNotificationInfo.CreationTime >= startDate);
- }
- if (endDate.HasValue)
- {
- query = query.Where(x => x.tenantNotificationInfo.CreationTime <= endDate);
- }
- query = query.PageBy(skipCount, maxResultCount);
- var list = query.ToList();
- return list.Select(
- a => new UserNotificationInfoWithNotificationInfo(
- a.userNotificationInfo,
- a.tenantNotificationInfo
- )
- ).ToList();
- }
- });
- }
- public virtual async Task<int> GetUserNotificationCountAsync(
- UserIdentifier user,
- UserNotificationState? state = null,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var predicate = CreateNotificationFilterPredicate(user, state, startDate, endDate);
- return await _userNotificationRepository.CountAsync(predicate);
- }
- });
- }
- public virtual int GetUserNotificationCount(
- UserIdentifier user,
- UserNotificationState? state = null,
- DateTime? startDate = null,
- DateTime? endDate = null)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(user.TenantId))
- {
- var predicate = CreateNotificationFilterPredicate(user, state, startDate, endDate);
- return _userNotificationRepository.Count(predicate);
- }
- });
- }
- public virtual async Task<UserNotificationInfoWithNotificationInfo>
- GetUserNotificationWithNotificationOrNullAsync(
- int? tenantId,
- Guid userNotificationId)
- {
- var result = _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- var query = from userNotificationInfo in _userNotificationRepository.GetAll()
- join tenantNotificationInfo in _tenantNotificationRepository.GetAll() on userNotificationInfo
- .TenantNotificationId equals tenantNotificationInfo.Id
- where userNotificationInfo.Id == userNotificationId
- select new
- {
- userNotificationInfo,
- tenantNotificationInfo
- };
- var item = query.FirstOrDefault();
- if (item == null)
- {
- return null;
- }
- return new UserNotificationInfoWithNotificationInfo(
- item.userNotificationInfo,
- item.tenantNotificationInfo
- );
- }
- });
- return await Task.FromResult(result);
- }
- public virtual UserNotificationInfoWithNotificationInfo GetUserNotificationWithNotificationOrNull(
- int? tenantId,
- Guid userNotificationId)
- {
- return _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantId))
- {
- var query = from userNotificationInfo in _userNotificationRepository.GetAll()
- join tenantNotificationInfo in _tenantNotificationRepository.GetAll() on userNotificationInfo
- .TenantNotificationId equals tenantNotificationInfo.Id
- where userNotificationInfo.Id == userNotificationId
- select new
- {
- userNotificationInfo,
- tenantNotificationInfo
- };
- var item = query.FirstOrDefault();
- if (item == null)
- {
- return null;
- }
- return new UserNotificationInfoWithNotificationInfo(
- item.userNotificationInfo,
- item.tenantNotificationInfo
- );
- }
- });
- }
- public virtual async Task InsertTenantNotificationAsync(TenantNotificationInfo tenantNotificationInfo)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantNotificationInfo.TenantId))
- {
- await _tenantNotificationRepository.InsertAsync(tenantNotificationInfo);
- }
- });
- }
- public virtual void InsertTenantNotification(TenantNotificationInfo tenantNotificationInfo)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(tenantNotificationInfo.TenantId))
- {
- _tenantNotificationRepository.Insert(tenantNotificationInfo);
- }
- });
- }
- public virtual async Task DeleteNotificationAsync(NotificationInfo notification)
- {
- await _unitOfWorkManager.WithUnitOfWorkAsync(async () => await _notificationRepository.DeleteAsync(notification));
- }
- public virtual void DeleteNotification(NotificationInfo notification)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- _notificationRepository.Delete(notification);
- });
- }
- }
|