< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_Studio2_Views_ToCancellationTransaction_CreateToCancellationTransaction
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/ToCancellationTransaction/CreateToCancellationTransaction.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 14
Coverable lines: 14
Total lines: 228
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 30
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%600240%
<ExecuteAsync()0%4260%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/ToCancellationTransaction/CreateToCancellationTransaction.cshtml

#LineLine coverage
 1@using OzonOrdersWeb.ViewModels.OrderViewModels
 2
 3@model MultiplayEditOrderViewModel
 4
 5@{
 06    var orders = Model?.Orders ?? new List<OzonDomains.Models.Order>();
 07    var ordersCount = orders.Count;
 08    var hasOrders = ordersCount > 0;
 09    var userName = User?.Identity?.Name ?? string.Empty;
 010    var redirectPage = Model?.RedirectPage ?? 1;
 011    ViewData["Title"] = $"Отмена заказа ({ordersCount} заказов)";
 012    Layout = "~/Views/Shared/_Layout.cshtml";
 13}
 14
 15<partial name="~/Areas/Studio2/Views/Partials/Transaction/_TransactionPageStyles.cshtml"/>
 16<script src="~/js/Studio2/Orders/CreateOrderToSupplierTransactionV2/generateInfoRow.js"></script>
 17
 18<div id="loadingSpinner" class="spinner-overlay" style="display: none; background-color: inherit;">
 19    <div class="spinner-border text-primary" role="status">
 20        <span class="sr-only"></span>
 21    </div>
 22</div>
 23
 24<div id="messageContainer" class="position-fixed top-0 end-0 p-3" style="z-index: 1050;">
 25    <div id="flashMessage" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
 26        <div class="toast-header">
 27            <strong class="me-auto">Сообщение</strong>
 28            <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
 29        </div>
 30        <div class="toast-body">
 31            <span id="flashMessageText"></span>
 32        </div>
 33    </div>
 34</div>
 35
 36<div class="modal fade" id="cartModal" tabindex="-1" aria-labelledby="cartModalLabel" aria-hidden="true">
 37    <div class="modal-dialog modal-lg modal-dialog-scrollable">
 38        <div class="modal-content rounded-3 shadow">
 39            <div class="modal-header">
 40                <h5 class="modal-title" id="cartModalLabel">Корзина</h5>
 41                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
 42            </div>
 43            <div class="modal-body" id="cartModalBody">
 44                <!-- Контент корзины будет вставлен сюда -->
 45            </div>
 46            <div class="modal-footer">
 47                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
 48            </div>
 49        </div>
 50    </div>
 51</div>
 52
 053@if (hasOrders)
 54{
 55    <form asp-area="Studio2" asp-controller="ToCancellationTransaction" asp-action="CreateToCancellationTransaction"
 56          id="createOrderForm" novalidate>
 57        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
 58        <input type="hidden" asp-for="RedirectPage"/>
 59        <input type="hidden" asp-for="TrackingKey"/>
 60
 061        @await Html.PartialAsync("_TransactionTable", Model)
 62
 63        <div class="tx-page-footer">
 64            <div class="input-group">
 65                <span class="input-group-btn">
 66                    <input type="submit" value="Сохранить" class="btn btn-primary"
 67                           data-bs-target="#staticBackdrop"/>
 68                </span>
 69            </div>
 70        </div>
 71    </form>
 72}
 73else
 74{
 075    @await Html.PartialAsync("_TransactionErrorPanel")
 76}
 77
 78<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
 79     aria-labelledby="staticBackdropLabel" aria-hidden="true">
 80    <div class="modal-dialog">
 81        <div class="modal-content orders-modal orders-modal--primary">
 82            <div class="modal-header">
 83                <h5 class="modal-title" id="staticBackdropLabel">Создание журнала документов</h5>
 84                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
 85            </div>
 86            <div class="modal-body">
 87                <div class="d-flex justify-content-center">
 88                    <div class="spinner-border text-primary" role="status">
 89                        <span class="sr-only">.</span>
 90                    </div>
 91                </div>
 92            </div>
 93        </div>
 94    </div>
 95</div>
 96
 97<div>
 98    <a asp-action="Index" class="tx-page-back-link">← К списку заказов</a>
 99</div>
 100
 101<!-- Модальное окно для отображения увеличенного изображения -->
 102<div class="modal fade" id="imageModal" tabindex="-1" aria-labelledby="imageModalLabel" aria-hidden="true">
 103    <div class="modal-dialog modal-dialog-centered">
 104        <div class="modal-content">
 105            <div class="modal-header">
 106                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
 107            </div>
 108            <div class="modal-body text-center">
 109                <img id="modalImage" src="" alt="Full Image" class="img-fluid rounded border">
 110            </div>
 111        </div>
 112    </div>
 113</div>
 114
 115<input type="hidden" id="deletedOrders" name="deletedOrders"/>
 116@* Скрипты таблицы нужны только когда она отрисована; на панели ошибки они падали на пустом DOM *@
 0117@if (hasOrders)
 118{
 0119@await Html.PartialAsync("_TransactionScript", Model)
 120
 121<style>
 122    #createOrderForm .locked-field {
 123        pointer-events: none;
 124        background-color: #f8f9fa !important;
 125        border-color: #ced4da !important;
 126        box-shadow: none !important;
 127        background-image: none !important;
 128    }
 129
 130    #createOrderForm .purchase-price-field.highlight-error,
 131    #createOrderForm .purchase-price-field.is-invalid,
 132    #createOrderForm .supplier-select.highlight-error,
 133    #createOrderForm .supplier-select.is-invalid,
 134    #createOrderForm .supplier-select.input-validation-error {
 135        border-color: #ced4da !important;
 136        box-shadow: none !important;
 137        background-image: none !important;
 138        padding-right: 0.75rem !important;
 139    }
 140</style>
 141
 142<script>
 143    document.addEventListener('DOMContentLoaded', function () {
 144        var table = document.getElementById('shipmentTable');
 145
 146        document.querySelectorAll('.purchase-price-field').forEach(function (field) {
 147            field.classList.remove('highlight-error', 'is-invalid', 'input-validation-error');
 148            ['input', 'change'].forEach(function (eventName) {
 149                field.addEventListener(eventName, function () {
 150                    field.classList.remove('highlight-error', 'is-invalid', 'input-validation-error');
 151                });
 152            });
 153        });
 154
 155        document.querySelectorAll('.supplier-select').forEach(function (field) {
 156            field.classList.remove('highlight-error', 'is-invalid', 'input-validation-error');
 157            field.removeAttribute('required');
 158            field.removeAttribute('data-val-required');
 159            field.addEventListener('change', function () {
 160                field.classList.remove('highlight-error', 'is-invalid', 'input-validation-error');
 161            });
 162        });
 163
 164        if (!table) {
 165            return;
 166        }
 167
 168        var fields = table.querySelectorAll('input, select, textarea');
 169
 170        fields.forEach(function (field) {
 171            if (field.type === 'hidden' || field.classList.contains('orderNumberToSupplie-field')) {
 172                return;
 173            }
 174
 175            field.classList.remove('highlight-error', 'is-invalid', 'input-validation-error');
 176            field.classList.add('locked-field');
 177
 178            var tag = field.tagName.toLowerCase();
 179
 180            if (tag === 'input' || tag === 'textarea') {
 181                field.readOnly = true;
 182            }
 183
 184            if (tag === 'select') {
 185                ['mousedown', 'click', 'keydown', 'focus'].forEach(function (eventName) {
 186                    field.addEventListener(eventName, function (event) {
 187                        event.preventDefault();
 188                        field.blur();
 189                    }, { capture: true });
 190                });
 191            }
 192        });
 193    });
 194</script>
 195
 196<script>
 197    $('#createOrderForm').on('submit', function (e) {
 198        e.preventDefault();
 199
 200        if (!validateOzonCancelSelections()) {
 201            return;
 202        }
 203
 204        $('#staticBackdrop').modal('show');
 205        var formData = $(this).serialize();
 206
 0207        formData += '&userName=' + '@userName' + '&comment=' + encodeURIComponent(txGetCommentFieldValue()) + '&page=' +
 208
 209        $.ajax({
 0210            url: '@Url.Action("CreateToCancellationTransaction", "ToCancellationTransaction")',
 211            type: 'POST',
 212            data: formData,
 213            success: function (result) {
 214                if (result.redirectTo) {
 215                    window.location.href = result.redirectTo;
 216                } else {
 217                    $('#staticBackdrop').modal('hide');
 218                    alert('Произошла ошибка: не удалось получить URL для перенаправления.');
 219                }
 220            },
 221            error: function (xhr, status, error) {
 222                $('#staticBackdrop').modal('hide');
 223                showFriendlyRequestError(xhr, status, error, 'Ошибка при отправке формы');
 224            }
 225        });
 226    });
 227</script>
 228}

Methods/Properties

ExecuteAsync()
<ExecuteAsync()