PIAPS_CW/WebApp/Pages/Cart.cshtml

124 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@page
@model WebApp.Pages.CartModel
@{
ViewData["Title"] = "Cart";
}
<div class="container my-5">
<h1>Корзина</h1>
@if (Model.cartItemsView == null! || Model.cartItemsView.Count == 0)
{
<p>Ваша корзина пуста.</p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Товар</th>
<th>Цена</th>
<th>Количество</th>
<th>Итого</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.cartItemsView)
{
<tr>
<td>
<div class="d-flex align-items-center">
<a asp-page="ProductPage" asp-route-id="@item.ProductId">@Model.GetProduct(item.Id).Name</a>
</div>
</td>
<td>@Model.GetProduct(item.Id).ActualPrice</td>
<td>
<span>@item.Count</span>
</td>
<td>@(item.Count * @Model.GetProduct(item.Id).ActualPrice)</td>
<td>
<form asp-page-handler="DeleteCartItem" method="post">
<input type="hidden" name="Id" value="@item.Id">
<button type="submit" class="btn btn-danger">Удалить</button>
</form>
</td>
</tr>
}
</tbody>
</table>
<div class="d-flex justify-content-end">
<h3>Сумма заказа: <span id="totalCost"></span> руб.</h3>
</div>
<div class="d-flex justify-content-end">
<form asp-page-handler="GoToPayment">
<input type="hidden" id="ProductCount" name="ProductCount" value="0" />
<input type="hidden" id="Cost" name="Cost" value="0.00" />
<input type="hidden" id="UserId" name="UserId" value="@Model.GetUserId()" />
<button type="submit" class="btn btn-primary">Перейти к оформлению</button>
</form>
</div>
}
</div>
<script>
window.onload = function () {
calculateTotalCost();
calculateCount();
};
function calculateTotalCost() {
var totalCost = 0;
var totalCells = document.querySelectorAll('tbody td:nth-child(4)');
totalCells.forEach(function (cell) {
var costText = cell.innerText.trim(); // Убираем пробелы вокруг текста
var cost = parseFloat(costText);
// Проверяем, является ли cost числом
if (!isNaN(cost)) {
totalCost += cost;
} else {
console.warn(`Не удалось преобразовать значение "${costText}" в число.`);
}
});
// Обновляем элемент totalCost
var totalCostElement = document.getElementById('totalCost');
var Cost = document.getElementById('Cost');
totalCostElement.textContent = Number(totalCost.toFixed(2)); // Преобразуем обратно в число перед отображением
Cost.value = Number(totalCost.toFixed(2));
}
function calculateCount() {
var totalCount = 0;
var totalCells = document.querySelectorAll('tbody td:nth-child(3)');
totalCells.forEach(function (cell) {
var countText = cell.innerText.trim(); // Убираем пробелы вокруг текста
var count = parseInt(countText);
// Проверяем, является ли count числом
if (!isNaN(count)) {
totalCount += count;
} else {
console.warn(`Не удалось преобразовать значение "${countText}" в число.`);
}
});
// Обновляем элемент totalCount
var ProductCount = document.getElementById('ProductCount');
ProductCount.value = Number(totalCount); // Преобразуем обратно в число перед отображением
}
</script>