< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.AvdBasketController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/AvdBasketController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 34
Coverable lines: 34
Total lines: 89
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
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%
Orders()100%210%
Add()0%2040%
Update()0%620%
Remove()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/AvdBasketController.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Microsoft.Extensions.Caching.Memory;
 4using OzonOrdersWeb.Areas.Studio2.ViewModels.SupplierCart;
 5using Services.ApiServices.AvdApi;
 6
 7namespace OzonOrdersWeb.Areas.Studio2.Controllers;
 8
 9[Area("Studio2")]
 10[Authorize(Roles = "User,Admin")]
 11public sealed class AvdBasketController : Controller
 12{
 13    private readonly AvdDataManager _avd;
 14    private readonly IMemoryCache _cache;
 15
 016    public AvdBasketController(AvdDataManager avd, IMemoryCache cache)
 17    {
 018        _avd = avd;
 019        _cache = cache;
 020    }
 21
 22    [HttpGet]
 23    public async Task<IActionResult> Index(CancellationToken ct)
 24    {
 25        try
 26        {
 027            return View(await _avd.GetBasketItemsAsync(ct));
 28        }
 029        catch (AvdApiException ex)
 30        {
 031            TempData["ErrorMessage"] = ex.Message;
 032            return View(Array.Empty<AvdBasketItem>());
 33        }
 034    }
 35
 36    [HttpGet]
 37    public async Task<IActionResult> Orders(string? dateBegin, string? dateEnd, int status = 0, string? number = null, C
 38    {
 39        try
 40        {
 041            return View(await _avd.GetOrdersParsedAsync(dateBegin, dateEnd, status, number, ct));
 42        }
 043        catch (AvdApiException ex)
 44        {
 045            TempData["ErrorMessage"] = ex.Message;
 046            return View(Array.Empty<AvdOrder>());
 47        }
 048    }
 49
 50    /// <summary>Вызывается кнопкой «В корзину АВД» со страницы транзакции (проценка).</summary>
 51    [HttpPost, ValidateAntiForgeryToken]
 52    public async Task<IActionResult> Add(string hash, decimal quantity, string? comment, CancellationToken ct)
 53    {
 054        if (string.IsNullOrWhiteSpace(hash)) return BadRequest(new { error = "Не передан hash предложения АВД." });
 055        if (quantity <= 0) return BadRequest(new { error = "Количество должно быть больше нуля." });
 56        try
 57        {
 058            await _avd.InsertToBasketAsync(hash, quantity, comment, onlyThis: false, ct);
 059            _cache.Remove(SupplierCartCacheKeys.AvdBasketCount);
 060            return Ok(new { success = true });
 61        }
 062        catch (AvdApiException ex) { return BadRequest(new { error = ex.Message }); }
 063    }
 64
 65    [HttpPost, ValidateAntiForgeryToken]
 66    public async Task<IActionResult> Update(string idBasketItem, decimal quantity, string? comment, CancellationToken ct
 67    {
 68        try
 69        {
 070            if (quantity <= 0) await _avd.DeleteItemInBasketAsync(idBasketItem, ct);
 071            else await _avd.EditItemInBasketAsync(idBasketItem, quantity, comment, onlyThis: false, ct);
 072            _cache.Remove(SupplierCartCacheKeys.AvdBasketCount);
 073        }
 074        catch (AvdApiException ex) { TempData["ErrorMessage"] = ex.Message; }
 075        return RedirectToAction(nameof(Index));
 076    }
 77
 78    [HttpPost, ValidateAntiForgeryToken]
 79    public async Task<IActionResult> Remove(string idBasketItem, CancellationToken ct)
 80    {
 81        try
 82        {
 083            await _avd.DeleteItemInBasketAsync(idBasketItem, ct);
 084            _cache.Remove(SupplierCartCacheKeys.AvdBasketCount);
 085        }
 086        catch (AvdApiException ex) { TempData["ErrorMessage"] = ex.Message; }
 087        return RedirectToAction(nameof(Index));
 088    }
 89}