< Summary

Information
Class: Services.ApiServices.ForumAutoApi.ForumAutoDataManager
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ApiServices/ForumAutoApi/ForumAutoDataManager.cs
Line coverage
92%
Covered lines: 24
Uncovered lines: 2
Coverable lines: 26
Total lines: 61
Line coverage: 92.3%
Branch coverage
80%
Covered branches: 8
Total branches: 10
Branch coverage: 80%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetClientInfoAsync(...)100%210%
GetBrandsAsync(...)100%210%
ListGoodsAsync(...)50%22100%
AddGoodsToOrderAsync(...)75%44100%
ListOrdersAsync(...)100%44100%
CancelOrderAsync(...)100%11100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/ApiServices/ForumAutoApi/ForumAutoDataManager.cs

#LineLine coverage
 1using System.Globalization;
 2using Newtonsoft.Json.Linq;
 3
 4namespace Services.ApiServices.ForumAutoApi;
 5
 6/// <summary>Операции Forum-Auto API: read-only справочники/проценка и оформление заказа
 7/// (addGoodsToOrder/listOrders/cancelOrder). У Forum-Auto нет тестового/dry-run эндпоинта —
 8/// addGoodsToOrder сразу мутирует заказ у поставщика.</summary>
 9public class ForumAutoDataManager
 10{
 11    private readonly ForumAutoHttpClient _client;
 14812    public ForumAutoDataManager(ForumAutoHttpClient client) => _client = client;
 13
 014    public Task<JToken> GetClientInfoAsync(CancellationToken ct = default) => _client.GetAsync("clientinfo", ct: ct);
 15
 016    public Task<JToken> GetBrandsAsync(CancellationToken ct = default) => _client.GetAsync("listbrands", ct: ct);
 17
 18    public Task<JToken> ListGoodsAsync(string art, string? brand, bool cross, string? gid = null, CancellationToken ct =
 19    {
 620        var query = new Dictionary<string, string?>
 621        {
 622            ["art"] = art,
 623            ["cross"] = cross ? "1" : "0",
 624            ["br"] = brand,
 625            ["gid"] = gid
 626        };
 627        return _client.GetAsync("listgoods", query, ct);
 28    }
 29
 30    /// <summary>Добавляет/изменяет позицию заказа. eid не передан — Forum-Auto сгенерит сам.
 31    /// eoid — наш ID заказа (придумываем сами); первый ответ содержит реальный did поставщика.
 32    /// num=0 при заданных tid+eid — удаление позиции.</summary>
 33    public Task<JToken> AddGoodsToOrderAsync(string tid, int num, int? eid = null, long? eoid = null, CancellationToken 
 34    {
 835        var query = new Dictionary<string, string?>
 836        {
 837            ["tid"] = tid,
 838            ["num"] = num.ToString(CultureInfo.InvariantCulture),
 839            ["eid"] = eid?.ToString(CultureInfo.InvariantCulture),
 840            ["eoid"] = eoid?.ToString(CultureInfo.InvariantCulture)
 841        };
 842        return _client.GetAsync("addgoodstoorder", query, ct);
 43    }
 44
 45    /// <summary>Заказ(ы) с товарным составом. did не задан/0 — все активные заказы клиента.</summary>
 46    public Task<JToken> ListOrdersAsync(int? did = null, CancellationToken ct = default)
 47    {
 348        var query = new Dictionary<string, string?>
 349        {
 350            ["did"] = did is > 0 ? did.Value.ToString(CultureInfo.InvariantCulture) : null
 351        };
 352        return _client.GetAsync("listorders", query, ct);
 53    }
 54
 55    /// <summary>Отмена заказа целиком, без возможности восстановления.</summary>
 56    public Task<JToken> CancelOrderAsync(int did, CancellationToken ct = default)
 57    {
 258        var query = new Dictionary<string, string?> { ["did"] = did.ToString(CultureInfo.InvariantCulture) };
 259        return _client.GetAsync("cancelorder", query, ct);
 60    }
 61}