< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.Directories.ArmtekByController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/ArmtekByController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 36
Coverable lines: 36
Total lines: 105
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
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%
Index()100%210%
Logs()100%210%
ParseBool(...)0%620%
ExecuteAsync()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/ArmtekByController.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Services.ApiServices.ApiSupplierRequestLog;
 4using Services.ApiServices.ArmtekApi;
 5
 6namespace OzonOrdersWeb.Areas.Studio2.Controllers.Directories;
 7
 8[Area("Studio2")]
 9[Authorize(Roles = "User,Admin")]
 10[Route("ArmtekBy/[action]")]
 11public sealed class ArmtekByController : Controller
 12{
 13    private readonly ArmtekByDataManager _armtek;
 14    private readonly ApiSupplierRequestLogStore _logs;
 15
 016    public ArmtekByController(ArmtekByDataManager armtek, ApiSupplierRequestLogStore logs)
 17    {
 018        _armtek = armtek;
 019        _logs = logs;
 020    }
 21
 22    [HttpGet, Route("~/ArmtekBy")]
 23    public IActionResult Index()
 24    {
 025        ViewData["Title"] = "Армтек BY — API";
 026        ViewData["ConsoleTitle"] = "Армтек BY — API";
 027        ViewData["ConsoleSubtitle"] = "Консоль ручных read-only вызовов беларусского аккаунта: проценка, заказы, фактуры
 028        ViewData["ConsoleNote"] = "Каждая карточка — реальный вызов к ws.armtek.ru под беларусскими учётными данными. VK
 029        ViewData["ConsoleLogUrl"] = "/ArmtekBy/Logs";
 030        ViewData["ArmtekConsolePrefix"] = "/ArmtekBy";
 031        ViewData["ArmtekConsoleDefaultVkorg"] = "2000";
 032        return View("~/Areas/Studio2/Views/Armtek/Index.cshtml");
 33    }
 34
 35    [HttpGet]
 036    public IActionResult Logs() => Json(_logs.Get("ArmtekBy"));
 37
 38    [HttpGet]
 039    public async Task<IActionResult> Ping() => await ExecuteAsync(() => _armtek.PingAsync());
 40
 41    [HttpGet]
 042    public async Task<IActionResult> GetUserVkorgList() => await ExecuteAsync(() => _armtek.GetUserVkorgListAsync());
 43
 44    [HttpGet]
 45    public async Task<IActionResult> GetUserInfo(string? vkorg, string? structure) =>
 046        await ExecuteAsync(() => _armtek.GetUserInfoAsync(vkorg, structure != "false"));
 47
 48    [HttpGet]
 049    public async Task<IActionResult> GetBrandList() => await ExecuteAsync(() => _armtek.GetBrandListAsync());
 50
 51    [HttpGet]
 052    public async Task<IActionResult> GetStoreList(string? vkorg) => await ExecuteAsync(() => _armtek.GetStoreListAsync(v
 53
 54    [HttpGet]
 55    public async Task<IActionResult> Search(string kunnrRg, string pin, string? brand, string? vkorg, string? queryType)
 056        await ExecuteAsync(() => _armtek.SearchAsync(kunnrRg, pin, brand, vkorg,
 057            int.TryParse(queryType, out var parsed) ? parsed : null));
 58
 59    [HttpGet]
 60    public async Task<IActionResult> AssortmentSearch(string pin, string? vkorg, string? program) =>
 061        await ExecuteAsync(() => _armtek.AssortmentSearchAsync(pin, vkorg, program));
 62
 63    [HttpGet]
 64    public async Task<IActionResult> GetOrder(string kunrg, string order, string? vkorg, string? edit) =>
 065        await ExecuteAsync(() => _armtek.GetOrderAsync(kunrg, order, vkorg, edit == "true"));
 66
 67    [HttpGet]
 68    public async Task<IActionResult> GetOrder2(string kunrg, string order, string? vkorg, string? detailedStatus) =>
 069        await ExecuteAsync(() => _armtek.GetOrder2Async(kunrg, order, vkorg, detailedStatus != "false"));
 70
 71    [HttpGet]
 72    public async Task<IActionResult> GetRefund(string kunrg, string returnNumber, string? vkorg) =>
 073        await ExecuteAsync(() => _armtek.GetRefundAsync(kunrg, returnNumber, vkorg));
 74
 75    [HttpGet]
 76    public async Task<IActionResult> GetInvoice(string kunrg, string? invoice, string? zzsf, string? vkorg) =>
 077        await ExecuteAsync(() => _armtek.GetInvoiceAsync(kunrg, invoice, zzsf, vkorg));
 78
 79    [HttpGet]
 80    public async Task<IActionResult> GetOrderReportByDate(string kunnrRg, string? vkorg, DateTime? createdFrom, DateTime
 81        DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns, string? currentLogin
 082        await ExecuteAsync(() => _armtek.GetOrderReportByDateAsync(kunnrRg, vkorg, createdFrom, createdTo, deliveryFrom,
 083            ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly)));
 84
 85    [HttpGet]
 86    public async Task<IActionResult> GetOrderPositionsReportByDate(string kunnrRg, string? vkorg, DateTime? createdFrom,
 87        DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns, string? currentLogin
 088        await ExecuteAsync(() => _armtek.GetOrderPositionsReportByDateAsync(kunnrRg, vkorg, createdFrom, createdTo, deli
 089            ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly)));
 90
 91    [HttpGet]
 92    public async Task<IActionResult> GetOrderPositionsReportByDate2(string kunnrRg, string? vkorg, DateTime? createdFrom
 93        DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns, string? currentLogin
 094        await ExecuteAsync(() => _armtek.GetOrderPositionsReportByDate2Async(kunnrRg, vkorg, createdFrom, createdTo, del
 095            ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly), ParseBool(rejectedOnly)));
 96
 097    private static bool? ParseBool(string? value) => string.IsNullOrEmpty(value) ? null : value == "true";
 98
 99    private async Task<IActionResult> ExecuteAsync<T>(Func<Task<T>> operation)
 100    {
 0101        try { return Json(await operation()); }
 0102        catch (ArmtekApiException exception) { return StatusCode(502, new { error = true, message = exception.Message })
 0103        catch (ArgumentException exception) { return BadRequest(new { error = true, message = exception.Message }); }
 0104    }
 105}