< Summary

Information
Class: Services.BitrixStockServices.BitrixStockAutoFilterFactory
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BitrixStockServices/BitrixStockAutoFilterFactory.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 31
Coverable lines: 31
Total lines: 87
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 28
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ResolveForSchedule(...)0%4260%
BuildForSave(...)0%4260%
DescribeFilter(...)0%272160%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BitrixStockServices/BitrixStockAutoFilterFactory.cs

#LineLine coverage
 1using OzonDomains.Models;
 2using OzonOrdersWeb.Areas.Studio2.ViewModels.Bitrix;
 3
 4namespace Services.BitrixStockServices;
 5
 6public static class BitrixStockAutoFilterFactory
 7{
 8    public static RemainingStockFilter ResolveForSchedule(
 9        BitrixStockAutoSchedule schedule,
 10        IReadOnlyCollection<string>? activeStores = null)
 11    {
 012        var stored = BitrixStockInventoryService.DeserializeFilter(schedule.FilterJson);
 013        IReadOnlyList<string>? stores = stored.SelectedStoreTitles is { Count: > 0 }
 014            ? stored.SelectedStoreTitles
 015            : null;
 16
 017        if (string.Equals(schedule.ActionType, BitrixStockAutoActionTypes.Clear, StringComparison.OrdinalIgnoreCase))
 18        {
 019            return BitrixStockClearFilterTemplate.BuildFilter(schedule.OzonClientId, stores);
 20        }
 21
 022        return BitrixStockPushFilterTemplate.BuildFilter(schedule.OzonClientId, stores);
 23    }
 24
 25    public static RemainingStockFilter BuildForSave(
 26        string actionType,
 27        int ozonClientId,
 28        IReadOnlyCollection<string>? activeStores,
 29        IReadOnlyList<string>? selectedStoreTitles,
 30        RemainingStockFilter? userExtras = null)
 31    {
 032        var stores = selectedStoreTitles is { Count: > 0 }
 033            ? selectedStoreTitles
 034            : BitrixStockClearFilterTemplate.StoreTitles;
 35
 036        if (string.Equals(actionType, BitrixStockAutoActionTypes.Clear, StringComparison.OrdinalIgnoreCase))
 37        {
 038            return BitrixStockClearFilterTemplate.BuildFilter(ozonClientId, stores);
 39        }
 40
 041        return BitrixStockPushFilterTemplate.BuildFilter(ozonClientId, stores);
 42    }
 43
 44    public static string DescribeFilter(RemainingStockFilter filter, string actionType)
 45    {
 046        var parts = new List<string>();
 047        if (string.Equals(actionType, BitrixStockAutoActionTypes.Clear, StringComparison.OrdinalIgnoreCase))
 48        {
 049            parts.Add("OnlyInactive (как на странице остатков)");
 050            if (filter.OnlyInactive)
 51            {
 052                parts.Add("Active=N");
 053                parts.Add("Ozon ≥ 1");
 54            }
 55        }
 56        else
 57        {
 058            parts.Add("OnlyActive (как на странице остатков)");
 059            if (filter.OnlyActive)
 60            {
 061                parts.Add("Active=Y");
 62            }
 63
 064            if (filter.DiffOzonWarehouses)
 65            {
 066                parts.Add("расхождение Ozon / Bitrix");
 67            }
 68
 069            if (filter.OzonAmountFrom.HasValue)
 70            {
 071                parts.Add($"Ozon ≥ {filter.OzonAmountFrom.Value}");
 72            }
 73        }
 74
 075        if (filter.SelectedStoreTitles?.Count > 0)
 76        {
 077            parts.Add("склады: " + string.Join(", ", filter.SelectedStoreTitles));
 78        }
 79
 080        if (filter.SelectedClientId.HasValue)
 81        {
 082            parts.Add("клиент Ozon ID " + filter.SelectedClientId);
 83        }
 84
 085        return string.Join("; ", parts);
 86    }
 87}