/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/csharp/lab-211-007/main.cs
37 строк
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
public class OverdueNotificationService : BackgroundService { private readonly IServiceProvider _serviceProvider; private readonly ILogger<OverdueNotificationService> _logger; public OverdueNotificationService(IServiceProvider serviceProvider, ILogger<OverdueNotificationService> logger) { _serviceProvider = serviceProvider; _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { using var scope = _serviceProvider.CreateScope(); var context = scope.ServiceProvider.GetRequiredService<LibraryContext>(); var notificationService = scope.ServiceProvider.GetRequiredService<INotificationService>(); var overdueLoans = await context.Loans .Where(l => !l.IsReturned && l.IssueDate.AddDays(14) < DateTime.UtcNow) .Include(l => l.Reader) .ToListAsync(stoppingToken); foreach (var loan in overdueLoans) { await notificationService.SendEmailAsync( loan.Reader.Email, "Напоминание о возврате книги", $"Уважаемый {loan.Reader.FullName}, пожалуйста, верните книгу "{loan.Book.Title}"." ); } await Task.Delay(TimeSpan.FromHours(24), stoppingToken); } } }