< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.GridSettingsController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/GridSettingsController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 12
Coverable lines: 12
Total lines: 47
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%
Save()0%4260%

File(s)

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

#LineLine coverage
 1using System.Security.Claims;
 2using Microsoft.AspNetCore.Authorization;
 3using Microsoft.AspNetCore.Mvc;
 4using OzonOrdersWeb.Authorization;
 5using OzonOrdersWeb.WebServices.BitrixStock;
 6using OzonOrdersWeb.WebServices.Orders.Grid;
 7
 8namespace OzonOrdersWeb.Areas.Studio2.Controllers;
 9
 10/// <summary>
 11/// Сохранение настроек гридов AG Grid текущего пользователя (раскладка колонок, последний вид, общая тема) для всех
 12/// страниц на BsxGrid. Настройки личные и не несут данных страниц, поэтому эндпоинт служебный
 13/// (<see cref="ServiceEndpointAttribute"/>): доступ к конкретной странице не требуется, ключи — whitelist bsx.*/viewPre
 14/// </summary>
 15[Area("Studio2")]
 16[Authorize(Roles = "User,Admin,SuperAdmin")]
 17[Route("Studio2/grid-settings")]
 18public sealed class GridSettingsController : Controller
 19{
 20    private readonly IOrdersGridUserSettingsService _userSettings;
 21
 022    public GridSettingsController(IOrdersGridUserSettingsService userSettings)
 23    {
 024        _userSettings = userSettings;
 025    }
 26
 27    [HttpPost("")]
 28    [ValidateAntiForgeryToken]
 29    [ServiceEndpoint]
 30    public async Task<IActionResult> Save([FromBody] OrdersGridSaveSettingRequest? request, CancellationToken cancellati
 31    {
 032        var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
 033        if (string.IsNullOrEmpty(userId)) return Unauthorized();
 034        if (request is null || !BitrixSyncGridSettings.IsAllowedKey(request.Key))
 035            return BadRequest(new { message = "Неизвестный ключ настройки." });
 36
 37        try
 38        {
 039            var saved = await _userSettings.SaveAsync(userId, request.Key, request.Value, request.Version, cancellationT
 040            return Ok(new { ok = true, stale = !saved });
 41        }
 042        catch (ArgumentException ex)
 43        {
 044            return BadRequest(new { message = ex.Message });
 45        }
 046    }
 47}