< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.Directories.ArmtekController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/ArmtekController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 65
Coverable lines: 65
Total lines: 193
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
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%
Ping()100%210%
GetUserVkorgList()100%210%
GetUserInfo()100%210%
GetBrandList()100%210%
GetStoreList()100%210%
Search()100%210%
AssortmentSearch()100%210%
GetOrder()100%210%
GetOrder2()100%210%
GetRefund()100%210%
GetInvoice()100%210%
GetOrderReportByDate()100%210%
GetOrderPositionsReportByDate()100%210%
GetOrderPositionsReportByDate2()100%210%
ParseBool(...)0%620%
ParseInt(...)0%620%
HandleError(...)0%2040%

File(s)

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

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Services.ApiServices.ArmtekApi;
 4using Services.ApiServices.ApiSupplierRequestLog;
 5
 6namespace OzonOrdersWeb.Areas.Studio2.Controllers.Directories
 7{
 8    /// <summary>
 9    /// Консоль ручных вызовов Armtek Web-Services API — по одному GET-эндпоинту на каждый из
 10    /// 14 read-only методов <see cref="ArmtekDataManager"/>. Используется со страницы Index
 11    /// (AJAX-формы, JSON-результат отображается как есть) для проверки методов вживую без curl.
 12    /// </summary>
 13    [Authorize(Roles = "User,Admin")]
 14    [Area("Studio2")]
 15    [Route("Armtek/[action]")]
 16    public class ArmtekController : Controller
 17    {
 18        private readonly ArmtekDataManager _armtek;
 19        private readonly ApiSupplierRequestLogStore _logs;
 20
 021        public ArmtekController(ArmtekDataManager armtek, ApiSupplierRequestLogStore logs)
 22        {
 023            _armtek = armtek;
 024            _logs = logs;
 025        }
 26
 27        [HttpGet]
 28        [Route("~/Armtek")]
 029        public IActionResult Index() => View();
 30
 31        [HttpGet]
 032        public IActionResult Logs() => Json(_logs.Get("Armtek"));
 33
 34        // ---- ws_ping ----
 35
 36        [HttpGet]
 37        public async Task<IActionResult> Ping()
 38        {
 039            try { return Json(await _armtek.PingAsync()); }
 040            catch (Exception ex) { return HandleError(ex); }
 041        }
 42
 43        // ---- ws_user ----
 44
 45        [HttpGet]
 46        public async Task<IActionResult> GetUserVkorgList()
 47        {
 048            try { return Json(await _armtek.GetUserVkorgListAsync()); }
 049            catch (Exception ex) { return HandleError(ex); }
 050        }
 51
 52        [HttpGet]
 53        public async Task<IActionResult> GetUserInfo(string? vkorg, string? structure)
 54        {
 055            try { return Json(await _armtek.GetUserInfoAsync(vkorg, ParseBool(structure) ?? true)); }
 056            catch (Exception ex) { return HandleError(ex); }
 057        }
 58
 59        [HttpGet]
 60        public async Task<IActionResult> GetBrandList()
 61        {
 062            try { return Json(await _armtek.GetBrandListAsync()); }
 063            catch (Exception ex) { return HandleError(ex); }
 064        }
 65
 66        [HttpGet]
 67        public async Task<IActionResult> GetStoreList(string? vkorg)
 68        {
 069            try { return Json(await _armtek.GetStoreListAsync(vkorg)); }
 070            catch (Exception ex) { return HandleError(ex); }
 071        }
 72
 73        // ---- ws_search ----
 74
 75        [HttpGet]
 76        public async Task<IActionResult> Search(
 77            string kunnrRg, string pin, string? brand, string? vkorg,
 78            string? queryType, string? program, string? kunnrZa, string? incoterms, string? vbeln)
 79        {
 80            try
 81            {
 082                return Json(await _armtek.SearchAsync(
 083                    kunnrRg, pin, brand, vkorg,
 084                    ParseInt(queryType), program, kunnrZa, ParseBool(incoterms), vbeln));
 85            }
 086            catch (Exception ex) { return HandleError(ex); }
 087        }
 88
 89        [HttpGet]
 90        public async Task<IActionResult> AssortmentSearch(string pin, string? vkorg, string? program)
 91        {
 092            try { return Json(await _armtek.AssortmentSearchAsync(pin, vkorg, program)); }
 093            catch (Exception ex) { return HandleError(ex); }
 094        }
 95
 96        // ---- ws_order ----
 97
 98        [HttpGet]
 99        public async Task<IActionResult> GetOrder(string kunrg, string order, string? vkorg, string? edit)
 100        {
 0101            try { return Json(await _armtek.GetOrderAsync(kunrg, order, vkorg, ParseBool(edit))); }
 0102            catch (Exception ex) { return HandleError(ex); }
 0103        }
 104
 105        [HttpGet]
 106        public async Task<IActionResult> GetOrder2(string kunrg, string order, string? vkorg, string? detailedStatus)
 107        {
 0108            try { return Json(await _armtek.GetOrder2Async(kunrg, order, vkorg, ParseBool(detailedStatus) ?? true)); }
 0109            catch (Exception ex) { return HandleError(ex); }
 0110        }
 111
 112        [HttpGet]
 113        public async Task<IActionResult> GetRefund(string kunrg, string returnNumber, string? vkorg)
 114        {
 0115            try { return Json(await _armtek.GetRefundAsync(kunrg, returnNumber, vkorg)); }
 0116            catch (Exception ex) { return HandleError(ex); }
 0117        }
 118
 119        // ---- ws_invoice ----
 120
 121        [HttpGet]
 122        public async Task<IActionResult> GetInvoice(
 123            string kunrg, string? invoice, string? zzsf, string? vkorg, string? refundFlag, string? noCollapse)
 124        {
 125            try
 126            {
 0127                return Json(await _armtek.GetInvoiceAsync(
 0128                    kunrg, invoice, zzsf, vkorg, ParseBool(refundFlag) ?? false, ParseBool(noCollapse)));
 129            }
 0130            catch (Exception ex) { return HandleError(ex); }
 0131        }
 132
 133        // ---- ws_reports ----
 134
 135        [HttpGet]
 136        public async Task<IActionResult> GetOrderReportByDate(
 137            string kunnrRg, string? vkorg, DateTime? createdFrom, DateTime? createdTo,
 138            DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns, string? currentL
 139        {
 140            try
 141            {
 0142                return Json(await _armtek.GetOrderReportByDateAsync(
 0143                    kunnrRg, vkorg, createdFrom, createdTo, deliveryFrom, deliveryTo,
 0144                    ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly)));
 145            }
 0146            catch (Exception ex) { return HandleError(ex); }
 0147        }
 148
 149        [HttpGet]
 150        public async Task<IActionResult> GetOrderPositionsReportByDate(
 151            string kunnrRg, string? vkorg, DateTime? createdFrom, DateTime? createdTo,
 152            DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns, string? currentL
 153        {
 154            try
 155            {
 0156                return Json(await _armtek.GetOrderPositionsReportByDateAsync(
 0157                    kunnrRg, vkorg, createdFrom, createdTo, deliveryFrom, deliveryTo,
 0158                    ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly)));
 159            }
 0160            catch (Exception ex) { return HandleError(ex); }
 0161        }
 162
 163        [HttpGet]
 164        public async Task<IActionResult> GetOrderPositionsReportByDate2(
 165            string kunnrRg, string? vkorg, DateTime? createdFrom, DateTime? createdTo,
 166            DateTime? deliveryFrom, DateTime? deliveryTo, string? includeSales, string? includeReturns,
 167            string? currentLoginOnly, string? rejectedOnly)
 168        {
 169            try
 170            {
 0171                return Json(await _armtek.GetOrderPositionsReportByDate2Async(
 0172                    kunnrRg, vkorg, createdFrom, createdTo, deliveryFrom, deliveryTo,
 0173                    ParseBool(includeSales), ParseBool(includeReturns), ParseBool(currentLoginOnly), ParseBool(rejectedO
 174            }
 0175            catch (Exception ex) { return HandleError(ex); }
 0176        }
 177
 178        // ---- helpers ----
 179
 180        private static bool? ParseBool(string? value)
 0181            => string.IsNullOrEmpty(value) ? null : value == "true";
 182
 183        private static int? ParseInt(string? value)
 0184            => int.TryParse(value, out var result) ? result : null;
 185
 0186        private IActionResult HandleError(Exception ex) => ex switch
 0187        {
 0188            ArgumentException argEx => BadRequest(new { error = true, message = argEx.Message }),
 0189            ArmtekApiException apiEx => StatusCode(502, new { error = true, message = apiEx.Message, requestUri = apiEx.
 0190            _ => StatusCode(500, new { error = true, message = ex.Message })
 0191        };
 192    }
 193}