NotificationDistributionJob.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Abp.BackgroundJobs;
  2. using Abp.Dependency;
  3. using Abp.Threading;
  4. namespace Abp.Notifications
  5. {
  6. /// <summary>
  7. /// This background job distributes notifications to users.
  8. /// </summary>
  9. public class NotificationDistributionJob : BackgroundJob<NotificationDistributionJobArgs>, ITransientDependency
  10. {
  11. private readonly INotificationConfiguration _notificationConfiguration;
  12. private readonly IIocResolver _iocResolver;
  13. /// <summary>
  14. /// Initializes a new instance of the <see cref="NotificationDistributionJob"/> class.
  15. /// </summary>
  16. public NotificationDistributionJob(
  17. INotificationConfiguration notificationConfiguration,
  18. IIocResolver iocResolver)
  19. {
  20. _notificationConfiguration = notificationConfiguration;
  21. _iocResolver = iocResolver;
  22. }
  23. public override void Execute(NotificationDistributionJobArgs args)
  24. {
  25. foreach (var notificationDistributorType in _notificationConfiguration.Distributers)
  26. {
  27. using (var notificationDistributer = _iocResolver.ResolveAsDisposable<INotificationDistributer>(notificationDistributorType))
  28. {
  29. AsyncHelper.RunSync(() => notificationDistributer.Object.DistributeAsync(args.NotificationId));
  30. }
  31. }
  32. }
  33. }
  34. }