< Summary

Information
Class: OzonOrdersWeb.WebServices.DailySummary.DailyWorkSummaryJob
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/DailySummary/DailyWorkSummaryJob.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 10
Coverable lines: 10
Total lines: 30
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
ExecuteAsync()0%4260%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/DailySummary/DailyWorkSummaryJob.cs

#LineLine coverage
 1using Hangfire;
 2using Services.ApiServices.TelegramBotApi;
 3using Services.DailyWorkSummaryServices;
 4using Services.HangfireService;
 5
 6namespace OzonOrdersWeb.WebServices.DailySummary;
 7
 8/// <summary>Вечерняя сводка дня в Telegram (20:00 по Москве): что сделано за сутки по данным БД.</summary>
 09public sealed class DailyWorkSummaryJob(IDailyWorkSummaryService summary, ITelegramNotifier telegram, TelegramBotConfig 
 010    ILogger<DailyWorkSummaryJob> logger)
 11{
 12    public const string JobId = "daily-work-summary";
 13    public const string DefaultCron = "0 20 * * *";
 14
 15    [Queue(HangfireQueueNames.Main)]
 16    [DisableConcurrentExecution(0)]
 17    [AutomaticRetry(Attempts = 0)]
 18    public async Task<string> ExecuteAsync()
 19    {
 020        if (!telegram.IsConfigured) return "Telegram не настроен";
 21
 022        var data = await summary.BuildAsync();
 023        var sent = 0;
 024        foreach (var message in TelegramMessageFactory.DailySummary(data, config.SiteBaseUrl))
 025            if (await telegram.SendAsync(message)) sent++;
 26
 027        logger.LogInformation("Сводка дня отправлена: сообщений {Sent}, новых заказов {Orders}", sent, data.NewOrders);
 028        return $"Отправлено сообщений: {sent}";
 029    }
 30}