/
d.alekseev
/
SmartMenuBot
Обзор
Документация
Войти
/
d.alekseev
/
SmartMenuBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ConsoleBot/BackgroundTasks/TodayBackgroundTask.cs
39 строк
1 KB
d.alekseev
feat: нотификации и фоновые задачи доставки уведомлений
26 фев 2026, 10:55
26 фев 2026, 10:55
4338916
Код
Авторство
О чём код?
using SmartMenuBot.Core.DataAccess; using SmartMenuBot.Core.Services.Interfaces; namespace SmartMenuBot.BackgroundTasks { public class TodayBackgroundTask( INotificationService notificationService, IUserRepository userRepository, IToDoRepository toDoRepository) : BackgroundTask(TimeSpan.FromDays(1), nameof(TodayBackgroundTask)) { protected override async Task Execute(CancellationToken ct) { var now = DateTime.UtcNow; var from = now.Date; var to = from.AddDays(1); var users = await userRepository.GetUsers(ct); foreach (var user in users) { var tasks = await toDoRepository.GetActiveWithDeadline(user.UserId, from, to, ct); if (tasks.Count == 0) continue; var lines = tasks .OrderBy(task => task.Deadline) .Select(task => $"- {task.Name}"); var text = "Задачи на сегодня:\n" + string.Join('\n', lines); await notificationService.ScheduleNotification( user.UserId, $"Today_{DateOnly.FromDateTime(now)}", text, now, ct); } } } }