< Summary

Information
Class: OzonOrdersWeb.WebServices.TransactionTimeTracking.TransactionTimeTrackingReportQueryService
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/TransactionTimeTracking/TransactionTimeTrackingReportQueryService.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 32
Coverable lines: 32
Total lines: 63
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
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%
GetAsync()0%620%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/TransactionTimeTracking/TransactionTimeTrackingReportQueryService.cs

#LineLine coverage
 1using OzonOrdersWeb.Areas.Studio2.ViewModels.TransactionTimeTracking;
 2using Services.DataServices;
 3
 4namespace OzonOrdersWeb.WebServices.TransactionTimeTracking;
 5
 6/// <summary>Собирает единый срез трекинга времени для отдельного отчёта и вкладки JobLogs.</summary>
 7public interface ITransactionTimeTrackingReportQueryService
 8{
 9    Task<TransactionTimeTrackingReportViewModel> GetAsync(
 10        DateTime? dateFromUtc,
 11        DateTime? dateToUtc,
 12        string? userName,
 13        string? transactionType,
 14        CancellationToken cancellationToken = default);
 15}
 16
 17public sealed class TransactionTimeTrackingReportQueryService : ITransactionTimeTrackingReportQueryService
 18{
 19    private readonly TransactionTimeTrackingDataServices _dataServices;
 20
 021    public TransactionTimeTrackingReportQueryService(TransactionTimeTrackingDataServices dataServices)
 22    {
 023        _dataServices = dataServices;
 024    }
 25
 26    public async Task<TransactionTimeTrackingReportViewModel> GetAsync(
 27        DateTime? dateFromUtc,
 28        DateTime? dateToUtc,
 29        string? userName,
 30        string? transactionType,
 31        CancellationToken cancellationToken = default)
 32    {
 033        cancellationToken.ThrowIfCancellationRequested();
 034        var normalizedDateTo = dateToUtc?.Date.AddDays(1).AddTicks(-1);
 035        var filterBaseResults = await _dataServices.GetReport(dateFromUtc, normalizedDateTo, null, transactionType);
 036        cancellationToken.ThrowIfCancellationRequested();
 037        var results = await _dataServices.GetReport(dateFromUtc, normalizedDateTo, userName, transactionType);
 38
 039        return new TransactionTimeTrackingReportViewModel
 040        {
 041            DateFromUtc = dateFromUtc,
 042            DateToUtc = dateToUtc,
 043            UserName = userName,
 044            TransactionType = transactionType,
 045            TotalCount = results.Count,
 046            Results = results,
 047            AvailableTransactionTypes = filterBaseResults
 048                .Select(x => x.TransactionType)
 049                .Where(x => !string.IsNullOrWhiteSpace(x))
 050                .Distinct()
 051                .OrderBy(x => x)
 052                .ToList(),
 053            AvailableUsers = filterBaseResults
 054                .Select(x => x.UserName)
 055                .Where(x => !string.IsNullOrWhiteSpace(x))
 056                .Distinct()
 057                .OrderBy(x => x)
 058                .ToList(),
 059            Summary = TransactionTimeTrackingReportBuilder.BuildSummary(results),
 060            ChartData = TransactionTimeTrackingReportBuilder.BuildChartData(results)
 061        };
 062    }
 63}