< Summary

Information
Class: OzonOrdersWeb.WebServices.Transactions.Grid.Commit.Steps.ZasylExpensesSnapshotStep
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Transactions/Grid/Commit/Steps/ZasylExpensesSnapshotStep.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 17
Coverable lines: 17
Total lines: 40
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
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%2040%

File(s)

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

#LineLine coverage
 1using Services.DataServices;
 2
 3namespace OzonOrdersWeb.WebServices.Transactions.Grid.Commit.Steps;
 4
 5/// <summary>Засыл (OrderExtension), доп. расходы и снимок расчётов — после документа, как в классическом потоке.</summa
 6public sealed class ZasylExpensesSnapshotStep : ITransactionCommitStep
 7{
 8    private readonly OrdersDataServices _orders;
 9    private readonly OrderCalculationSnapshotService? _snapshots;
 10
 011    public ZasylExpensesSnapshotStep(OrdersDataServices orders, OrderCalculationSnapshotService? snapshots = null)
 12    {
 013        _orders = orders;
 014        _snapshots = snapshots;
 015    }
 16
 017    public string Key => TransactionCommitStepKeys.ZasylExpensesSnapshot;
 18
 19    public async Task ExecuteAsync(TransactionCommitContext ctx)
 20    {
 021        var zasylMap = ctx.Edits.Values
 022            .Where(e => e.Changed.Contains("zasyl", StringComparer.OrdinalIgnoreCase))
 023            .ToDictionary(e => e.Id, e => string.IsNullOrWhiteSpace(e.Zasyl) ? null : e.Zasyl!.Trim());
 024        if (zasylMap.Count > 0)
 25        {
 026            await _orders.SetZasylAsync(zasylMap);
 27        }
 28
 29        // Заказы для сохранения расходов — «формы» (с ExtraExpenses), а не БД-копии: как в классическом потоке.
 030        var formOrders = ctx.Orders
 031            .Select(o => ApplyEditsStep.BuildFormOrder(o, ctx.Edits[o.Id], ctx))
 032            .ToList();
 033        await _orders.SaveExtraExpensesForOrders(formOrders);
 34
 035        if (_snapshots != null)
 36        {
 037            await _snapshots.CaptureAsync(ctx.Orders.Select(o => o.Id), Guid.NewGuid(), "Transaction", ctx.User.Name, ct
 38        }
 039    }
 40}