using Abp.BackgroundJobs;
using Abp.Dependency;
using Abp.Threading;
namespace Abp.Notifications
{
///
/// This background job distributes notifications to users.
///
public class NotificationDistributionJob : BackgroundJob, ITransientDependency
{
private readonly INotificationConfiguration _notificationConfiguration;
private readonly IIocResolver _iocResolver;
///
/// Initializes a new instance of the class.
///
public NotificationDistributionJob(
INotificationConfiguration notificationConfiguration,
IIocResolver iocResolver)
{
_notificationConfiguration = notificationConfiguration;
_iocResolver = iocResolver;
}
public override void Execute(NotificationDistributionJobArgs args)
{
foreach (var notificationDistributorType in _notificationConfiguration.Distributers)
{
using (var notificationDistributer = _iocResolver.ResolveAsDisposable(notificationDistributorType))
{
AsyncHelper.RunSync(() => notificationDistributer.Object.DistributeAsync(args.NotificationId));
}
}
}
}
}