< Summary

Information
Class: OzonOrdersWeb.WebServices.Orders.OrderDataScopeQueryApplier
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderDataScopeQueryApplier.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 28
Coverable lines: 28
Total lines: 59
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
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%
ApplyAsync()0%7280%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderDataScopeQueryApplier.cs

#LineLine coverage
 1using System.Security.Claims;
 2using Microsoft.EntityFrameworkCore;
 3using OzonDomains.Models;
 4using OzonRepositories.Context;
 5using Services.Authorization.Services;
 6
 7namespace OzonOrdersWeb.WebServices.Orders;
 8
 9public sealed class OrderDataScopeQueryApplier : IOrderDataScopeQueryApplier
 10{
 11    private readonly IDataScopeService _dataScopeService;
 12    private readonly IScopeFilterValuesService _scopeFilterValuesService;
 13
 014    public OrderDataScopeQueryApplier(
 015        IDataScopeService dataScopeService,
 016        IScopeFilterValuesService scopeFilterValuesService)
 17    {
 018        _dataScopeService = dataScopeService;
 019        _scopeFilterValuesService = scopeFilterValuesService;
 020    }
 21
 22    public async Task<IQueryable<Order>> ApplyAsync(
 23        IQueryable<Order> ordersQuery,
 24        string? userId,
 25        CancellationToken cancellationToken = default)
 26    {
 027        if (string.IsNullOrEmpty(userId))
 28        {
 029            return ordersQuery;
 30        }
 31
 032        var scopedQuery = await _dataScopeService.ApplyDataScopeAsync(
 033            ordersQuery,
 034            userId,
 035            entityName: "Order",
 036            extraParameters: null,
 037            ct: cancellationToken);
 38
 039        var allowed = await _scopeFilterValuesService.GetAllowedValuesAsync(userId, "Order", cancellationToken);
 040        if (allowed.TryGetValue("ShipmentWarehouseId", out var allowedWarehouseIdsRaw) &&
 041            allowedWarehouseIdsRaw.Count > 0)
 42        {
 043            var allowedWarehouseIds = allowedWarehouseIdsRaw
 044                .Select(x => int.TryParse(x, out var id) ? id : (int?)null)
 045                .Where(x => x.HasValue)
 046                .Select(x => x!.Value)
 047                .Distinct()
 048                .ToArray();
 49
 050            if (allowedWarehouseIds.Length > 0)
 51            {
 052                scopedQuery = scopedQuery.Where(o =>
 053                    o.ShipmentWarehouseId.HasValue && allowedWarehouseIds.Contains(o.ShipmentWarehouseId.Value));
 54            }
 55        }
 56
 057        return scopedQuery;
 058    }
 59}