< Summary

Information
Class: OzonOrdersWeb.WebServices.Transactions.Grid.Settings.TransactionGridSettingsMapper
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Transactions/Grid/Settings/TransactionGridSettingsMapper.cs
Line coverage
94%
Covered lines: 16
Uncovered lines: 1
Coverable lines: 17
Total lines: 65
Line coverage: 94.1%
Branch coverage
92%
Covered branches: 13
Total branches: 14
Branch coverage: 92.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
ToStorageKey(...)100%44100%
BuildClientSettings(...)90%101090%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Transactions/Grid/Settings/TransactionGridSettingsMapper.cs

#LineLine coverage
 1namespace OzonOrdersWeb.WebServices.Transactions.Grid.Settings;
 2
 3/// <summary>
 4/// Слой настроек грида транзакций поверх OrdersGrid: <c>viewPrefs</c> (тема, плотность, шрифт, одна/две строки)
 5/// и вычисляемые столбцы — общие с OrdersGrid и пишутся в тот же ключ; раскладка колонок и группы — едины для
 6/// всех типов транзакций: <c>tx.columnState</c>, <c>tx.columnStateTwoLine</c>, <c>tx.columnLayout</c>,
 7/// раскладка таблицы предложений поставщиков — <c>tx.offersColumnState</c>.
 8/// Клиент работает с обычными ключами OrdersGrid, сервер ремапит их при загрузке и сохранении.
 9/// </summary>
 10public static class TransactionGridSettingsMapper
 11{
 112    private static readonly string[] TransactionSharedKeys = { "columnState", "columnStateTwoLine", "columnLayout", "off
 13
 14    /// <summary>Общие с OrdersGrid ключи: включённый там двухстрочный вид/тема действуют и на странице транзакций.</sum
 115    private static readonly string[] SharedKeys = { "viewPrefs" };
 16
 17    /// <summary>Ключ хранения для клиентского ключа; null — ключ не сохраняется (lastView, presets).</summary>
 18    public static string? ToStorageKey(string clientKey, string slug)
 19    {
 720        if (TransactionSharedKeys.Contains(clientKey, StringComparer.Ordinal))
 21        {
 322            return $"tx.{clientKey}";
 23        }
 24
 425        if (SharedKeys.Contains(clientKey, StringComparer.Ordinal))
 26        {
 127            return clientKey;
 28        }
 29
 30        // computedColumns/presets/lastView — общие с OrdersGrid и правятся только там.
 331        return null;
 32    }
 33
 34    /// <summary>
 35    /// Словарь для клиента: общие ключи транзакций → прежние ключи конкретного типа → базовые OrdersGrid.
 36    /// Раскладка OrdersGrid не наследуется, поскольку набор колонок другой. Прежние ключи читаются лишь как
 37    /// безопасный fallback до первого сохранения новой общей раскладки.
 38    /// </summary>
 39    public static Dictionary<string, string> BuildClientSettings(IReadOnlyDictionary<string, string> stored, string slug
 40    {
 141        var result = new Dictionary<string, string>(StringComparer.Ordinal);
 42
 643        foreach (var key in new[] { "computedColumns" }.Concat(SharedKeys))
 44        {
 245            if (stored.TryGetValue(key, out var v))
 46            {
 247                result[key] = v;
 48            }
 49        }
 50
 1051        foreach (var key in TransactionSharedKeys)
 52        {
 453            if (stored.TryGetValue($"tx.{key}", out var v))
 54            {
 255                result[key] = v;
 56            }
 257            else if (stored.TryGetValue($"tx.{key}.{slug}", out var legacyValue))
 58            {
 059                result[key] = legacyValue;
 60            }
 61        }
 62
 163        return result;
 64    }
 65}