< Summary

Information
Class: OzonOrdersWeb.WebServices.Transactions.Grid.Commit.Steps.OzonCancelStep
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Transactions/Grid/Commit/Steps/OzonCancelStep.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 21
Coverable lines: 21
Total lines: 48
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 16
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%
get_Key()100%210%
ExecuteAsync()0%156120%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Transactions/Grid/Commit/Steps/OzonCancelStep.cs

#LineLine coverage
 1using OzonOrdersWeb.Areas.Studio2.Models.Transactions;
 2using Services.ApiServices.OzonApi;
 3
 4namespace OzonOrdersWeb.WebServices.Transactions.Grid.Commit.Steps;
 5
 6/// <summary>Отмена отправлений в Ozon до смены статусов; ошибка API останавливает проведение (как на классических стран
 7public sealed class OzonCancelStep : ITransactionCommitStep
 8{
 9    private readonly OzonOrderCancellationService? _cancellation;
 10
 011    public OzonCancelStep(OzonOrderCancellationService? cancellation = null)
 12    {
 013        _cancellation = cancellation;
 014    }
 15
 016    public string Key => TransactionCommitStepKeys.OzonCancel;
 17
 18    public async Task ExecuteAsync(TransactionCommitContext ctx)
 19    {
 020        if (_cancellation == null || !ctx.Definition.OzonCancelPanel)
 21        {
 022            return;
 23        }
 24
 025        var requests = ctx.Edits.Values
 026            .Where(e => e.CancelInOzon && e.OzonCancelReasonId is > 0)
 027            .Select(e => new OzonCancelFormRequest(e.Id, e.OzonCancelReasonId!.Value, e.OzonCancelReasonMessage, e.OzonC
 028            .ToList();
 029        if (requests.Count == 0)
 30        {
 031            return;
 32        }
 33
 034        await ctx.StageAsync("ozon-cancel", "Отменяем отправления в Ozon", requests.Count == 1 ? "1 отправление" : $"отп
 035        var result = await _cancellation.CancelOrdersAsync(requests, ctx.Orders.ToDictionary(o => o.Id));
 036        if (result.Errors.Count > 0)
 37        {
 038            ctx.Fail(TransactionErrorCode.Unknown, string.Join("<br/>", result.Errors));
 039            return;
 40        }
 41
 042        var html = OzonOrderCancellationService.BuildSuccessHtml(result.SuccessEntries);
 043        if (!string.IsNullOrWhiteSpace(html))
 44        {
 045            ctx.SummaryBlocks.Add(html);
 46        }
 047    }
 48}