< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.ViewHelpers.OrderListColumnGate
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/ViewHelpers/OrderListColumnGate.cs
Line coverage
85%
Covered lines: 6
Uncovered lines: 1
Coverable lines: 7
Total lines: 28
Line coverage: 85.7%
Branch coverage
72%
Covered branches: 16
Total branches: 22
Branch coverage: 72.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CanShowOrderColumn(...)72.72%232285.71%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/ViewHelpers/OrderListColumnGate.cs

#LineLine coverage
 1using OzonRepositories.Context.Identity;
 2
 3namespace OzonOrdersWeb.Areas.Studio2.ViewHelpers;
 4
 5/// <summary>
 6/// Видимость колонок списка заказов: сначала профиль (<see cref="AccessProfile"/> / AvailableOrderColumns),
 7/// затем матрица ролей AppField (OrderList) — при отсутствии запрета по полю чтение разрешено.
 8/// </summary>
 9public static class OrderListColumnGate
 10{
 11    public static bool CanShowOrderColumn(
 12        CustomIdentityUser? user,
 13        IReadOnlyDictionary<string, bool>? readAccessByFieldName,
 14        string appFieldName,
 15        string availableOrderProfileKey)
 16    {
 9017        if (user?.AccessProfileId == null)
 18        {
 19            // Для пользователей без AccessProfile опираемся только на матрицу AppField.
 9020            if (readAccessByFieldName == null || readAccessByFieldName.Count == 0) return true;
 3021            return readAccessByFieldName.TryGetValue(appFieldName, out var onlyFieldAccess) ? onlyFieldAccess : true;
 22        }
 3023        var cols = user.AccessProfile?.AvailableOrderColumns;
 5524        if (cols == null || !cols.Contains(availableOrderProfileKey)) return false;
 1025        if (readAccessByFieldName == null || readAccessByFieldName.Count == 0) return true;
 026        return readAccessByFieldName.TryGetValue(appFieldName, out var v) ? v : true;
 27    }
 28}