private async Task CreateAlertIfNeeded(Subscriber subscriber, ActiveTaskInfo activeTaskInfo, ILogger log)
        {
            var now = DateTime.UtcNow.TimeOfDay;

            if (now > subscriber.StartWorkingHoursUtc && now < subscriber.EndWorkingHoursUtc && IsWeekDay())
            {
                log.LogInformation($"It's working hours for {subscriber.Name}");
                if (!activeTaskInfo.HasActiveTasks)
                {
                    log.LogWarning($"No active tasks during working hours.");
                    await _notifier.NoActiveTasksDuringWorkingHours(subscriber);
                }
            }
            else
            {
                log.LogInformation($"It's not working hours for {subscriber.Name}");
                if (activeTaskInfo.HasActiveTasks)
                {
                    log.LogWarning($"There is an active task outside of working hours.");
                    await _notifier.ActiveTaskOutsideOfWorkingHours(subscriber);
                }
            }

            if (activeTaskInfo.ActiveTaskCount > 1)
            {
                log.LogWarning(
                    $"{activeTaskInfo.ActiveTaskCount} active tasks at the same time.");
                await _notifier.MoreThanSingleTaskIsActive(subscriber);
            }
        }
        private async Task CreateAlertIfNeeded(Subscriber subscriber, ActiveTasksInfo activeTasksInfo, ILogger log)
        {
            if (subscriber.SnoozeAlertsUntil.GetValueOrDefault(DateTime.MinValue) > DateTime.UtcNow)
            {
                log.LogInformation($"Alert checks snoozed for subscriber {subscriber.Email} til {subscriber.SnoozeAlertsUntil:G}");
                return;
            }

            var now = DateTime.UtcNow.TimeOfDay;

            if (now > subscriber.StartWorkingHoursUtc && now < subscriber.EndWorkingHoursUtc &&
                IsWeekDay())
            {
                log.LogInformation($"It's working hours for {subscriber.Email}");
                if (!activeTasksInfo.HasActiveTasks)
                {
                    log.LogInformation($"No active tasks during working hours.");
                    if (DateTime.UtcNow - subscriber.LastNoActiveTasksAlert >= PauseBetweenAlerts)
                    {
                        subscriber.LastNoActiveTasksAlert = DateTime.UtcNow;
                        await _notifier.NoActiveTasksDuringWorkingHours(subscriber);
                    }
                }
            }
            else
            {
                log.LogInformation($"It's not working hours for {subscriber.Email}");
                if (activeTasksInfo.HasActiveTasks &&
                    DateTime.UtcNow - subscriber.LastActiveTaskOutsideOfWorkingHoursAlert >= PauseBetweenAlerts)
                {
                    log.LogWarning($"There is an active task outside of working hours.");
                    subscriber.LastActiveTaskOutsideOfWorkingHoursAlert = DateTime.UtcNow;
                    await _notifier.ActiveTaskOutsideOfWorkingHours(subscriber, activeTasksInfo);
                }
            }

            if (activeTasksInfo.ActiveTaskCount > 1 &&
                DateTime.UtcNow - subscriber.LastMoreThanSingleTaskIsActiveAlert >= PauseBetweenAlerts)
            {
                log.LogInformation(
                    $"{activeTasksInfo.ActiveTaskCount} active tasks at the same time.");
                subscriber.LastMoreThanSingleTaskIsActiveAlert = DateTime.UtcNow;
                await _notifier.MoreThanSingleTaskIsActive(subscriber);
            }

            await _dbAccessor.AddOrUpdateSubscriber(subscriber);
        }