< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_Studio2_Views_ClientStatus_Index
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/ClientStatus/Index.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 21
Coverable lines: 21
Total lines: 77
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 16
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%7280%
<ExecuteAsync()0%620%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/ClientStatus/Index.cshtml

#LineLine coverage
 1@using OzonDomains
 2@using OzonDomains.Models
 3@using OzonOrdersWeb.Areas.Studio2.ViewModels.Grid
 4@model List<ClientStatus>
 5@{
 06    ViewData["Title"] = $"Статусы клиентов ({Model.Count})";
 07    Layout = "~/Views/Shared/_Layout.cshtml";
 08    var rows = Model.Select(s => new
 09    {
 010        id = s.Id,
 011        name = s.Name,
 012        clientType = s.ClientType switch { ClientType.OZON => "Ozon", ClientType.YANDEX => "Yandex", _ => "" },
 013        isFinal = s.IsFinal,
 014        color = s.StatusColor?.ColorCode
 015    });
 16}
 17
 018@await Html.PartialAsync("_BsxGridShell")
 19
 20<div class="container-fluid py-3 bsx-surface">
 21    <div class="app-section-hero app-section-hero--import d-flex flex-wrap justify-content-between align-items-start gap
 22        <div>
 23            <h1><i class="fas fa-user-tag me-2 text-primary"></i>Статусы клиентов</h1>
 24            <div class="subtitle">Статусы отправлений в кабинетах Ozon и Yandex и их цвета</div>
 25            <div class="app-section-hero__quick-links">
 26                <a asp-area="Studio2" asp-controller="OzonClients" asp-action="Index"><i class="fas fa-store"></i>Клиент
 27                <a asp-area="Studio2" asp-controller="AppStatus" asp-action="Index"><i class="fas fa-tags"></i>Статусы з
 28                <a asp-area="Studio2" asp-controller="SupplierStatus" asp-action="Index"><i class="fas fa-dolly"></i>Ста
 29            </div>
 30        </div>
 31        <div class="d-flex flex-wrap gap-2 align-items-center">
 32            <div class="bsx-dir-stats">
 033                <span class="bsx-dir-stat">Всего <b>@Model.Count</b></span>
 034                <span class="bsx-dir-stat">Ozon <b>@Model.Count(s => s.ClientType == ClientType.OZON)</b></span>
 035                <span class="bsx-dir-stat">Yandex <b>@Model.Count(s => s.ClientType == ClientType.YANDEX)</b></span>
 36            </div>
 37            <a asp-action="Create" class="btn btn-primary btn-sm"><i class="fas fa-plus me-1"></i>Создать статус</a>
 38        </div>
 39    </div>
 40
 041    @await Html.PartialAsync("_BsxDirectoryGrid", new BsxDirectoryGridViewModel("clientStatus", "Статусы клиентов", "fa-
 042        "Цвет сохраняется сразу. Двойной клик — страница изменения."))
 43</div>
 44
 45@section Scripts {
 46<script src="~/js/Studio2/Grid/bsx-directory.js" asp-append-version="true"></script>
 47<script>
 48    (function () {
 49        const D = window.BsxDirectory;
 050        const editUrl = id => '@Url.Action("Edit", "ClientStatus", new { area = "Studio2" })/' + id;
 51        const TYPE_TONE = { Ozon: ['accent', 'fa-shopping-bag'], Yandex: ['danger', 'fa-shopping-cart'] };
 52
 53        D.grid({
 54            key: 'dirClientStatus',
 55            prefix: 'clientStatus',
 056            rows: @Json.Serialize(rows),
 57            rowUrl: r => editUrl(r.id),
 58            columnDefs: [
 59                { field: 'name', headerName: 'Статус клиента', flex: 1, minWidth: 240, sort: 'asc',
 60                  cellRenderer: p => D.colorPill(p.value, p.data.color, p.data.isFinal ? ' ' + D.tone('конечный', 'warni
 61                D.setCol({ field: 'clientType', headerName: 'Тип клиента', width: 160, filterParams: { labels: { '': 'Не
 62                  cellRenderer: p => p.value ? D.tone(p.value, TYPE_TONE[p.value][0], TYPE_TONE[p.value][1]) : D.tone('Н
 63                D.boolCol({ field: 'isFinal', headerName: 'Конечный', width: 120 }),
 64                D.colorCol({
 065                    updateUrl: '@Url.Action("UpdateStatusColor", "ClientStatus", new { area = "Studio2" })',
 066                    resetUrl: '@Url.Action("ResetStatusColor", "ClientStatus", new { area = "Studio2" })'
 67                }),
 68                D.actionsCol(r => [
 69                    { icon: 'fa-pencil-alt', title: 'Изменить статус', href: editUrl(r.id) },
 070                    { icon: 'fa-trash', title: 'Удалить статус', kind: 'danger', href: '@Url.Action("Delete", "ClientSta
 71                      confirm: 'Удалить статус «' + r.name + '»?' }
 72                ], { width: 100 })
 73            ]
 74        });
 75    })();
 76</script>
 77}

Methods/Properties

ExecuteAsync()
<ExecuteAsync()