< Summary

Information
Class: Services.OzonReturnsServices.NullReturnsLoadProgress
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/OzonReturnsServices/IReturnsLoadProgress.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 7
Coverable lines: 7
Total lines: 59
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
.ctor()100%210%
LogAsync(...)100%210%
ProgressAsync(...)100%210%
CompleteAsync(...)100%210%
ErrorAsync(...)100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/OzonReturnsServices/IReturnsLoadProgress.cs

#LineLine coverage
 1using Microsoft.AspNetCore.SignalR;
 2using Services.SignalRServices;
 3
 4namespace Services.OzonReturnsServices;
 5
 6/// <summary>
 7/// Канал прогресса загрузки возвратов. Отделяет логику загрузки от SignalR: recurring-прогону
 8/// докладывать некому, а ручной запуск слушает страница /Studio2/OrderReturns.
 9/// </summary>
 10public interface IReturnsLoadProgress
 11{
 12    Task LogAsync(string message);
 13    Task ProgressAsync(int current, int total, string statusText);
 14    Task CompleteAsync(bool success, string report);
 15    Task ErrorAsync(string message);
 16}
 17
 18/// <summary>Прогресс в никуда — для запусков по расписанию.</summary>
 19public sealed class NullReturnsLoadProgress : IReturnsLoadProgress
 20{
 021    public static readonly NullReturnsLoadProgress Instance = new();
 22
 023    private NullReturnsLoadProgress()
 24    {
 025    }
 26
 027    public Task LogAsync(string message) => Task.CompletedTask;
 28
 029    public Task ProgressAsync(int current, int total, string statusText) => Task.CompletedTask;
 30
 031    public Task CompleteAsync(bool success, string report) => Task.CompletedTask;
 32
 033    public Task ErrorAsync(string message) => Task.CompletedTask;
 34}
 35
 36/// <summary>Прогресс в группу SignalR по идентификатору задачи — как его слушает order-returns-index.js.</summary>
 37public sealed class SignalRReturnsLoadProgress : IReturnsLoadProgress
 38{
 39    private readonly IHubContext<JobProgressHub> _hub;
 40    private readonly string _jobId;
 41
 42    public SignalRReturnsLoadProgress(IHubContext<JobProgressHub> hub, string jobId)
 43    {
 44        _hub = hub;
 45        _jobId = jobId;
 46    }
 47
 48    public Task LogAsync(string message) =>
 49        _hub.Clients.Group(_jobId).SendAsync("Log", message);
 50
 51    public Task ProgressAsync(int current, int total, string statusText) =>
 52        _hub.Clients.Group(_jobId).SendAsync("Progress", current, total, statusText ?? "");
 53
 54    public Task CompleteAsync(bool success, string report) =>
 55        _hub.Clients.Group(_jobId).SendAsync("Complete", success, report ?? "");
 56
 57    public Task ErrorAsync(string message) =>
 58        _hub.Clients.Group(_jobId).SendAsync("Error", message);
 59}