gehgassi_backend/gehGassi.Web/Views/Shop/_CheckoutOrder.cshtml

208 lines
12 KiB
Plaintext

@using Microsoft.AspNetCore.Mvc.Localization
@using System.Threading
@using gehGassi.Web.Controllers
@using gehGassi.Web.Helper
@using gehGassi.Web.Models
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@inject IViewLocalizer Localizer
@model CheckoutOrderVm
@{
IStringLocalizer annotationsLocalizer = ViewBag.AnnotationsLocalizer;
CartListVm cartModel = ViewBag.CartModel;
List<string> validationList = ViewBag.ValidationList;
RecalculationResult recalculationResult = ViewBag.RecalculationResult;
CheckoutAddressVm checkoutAddress = ViewBag.AddressModel;
CheckoutPaymentVm checkoutPayment = ViewBag.PaymentModel;
var termsLink = Url.Action("TermsAndConditions", "Shop");
var gdrpLink = Url.Action("Privacy", "Shop");
var termsTag = $"<a href='{termsLink}' target='_blank'>{Localizer["Common_TermsAndconditions"].Value}</a>";
var gdprTag = $"<a href='{gdrpLink}' target='_blank'>{Localizer["Common_Gdpr"].Value}</a>";
var termsText = string.Format(Localizer["Shop_TermsAndConditions"].Value, termsTag);
var gdprText = string.Format(Localizer["Shop_Gdpr"].Value, gdprTag);
}
<section id="checkoutOrderContainer">
<div id="pageTitleAdd" style="display: none;"></div>
<div id="paymentSelection">
<div class="form">
@await Html.PartialAsync("_CheckoutHeader", new CheckoutHeaderVm() { Step = 4 })
<h3 class="text-uppercase text-center">@Localizer["Checkout_Step_4"]</h3>
<form cb-preventsubmit id="frmCheckoutOrder" asp-controller="Shop" asp-action="CheckoutOrder" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#checkoutOrderContainer">
<div asp-validation-summary="ModelOnly"></div>
<input type="hidden" asp-for="CustomerUniqueId"/>
<div class="row mb-2 mt-4">
<div class="col-12 col-lg-6">
@foreach (var cartItem in cartModel.CartItems)
{
var quantityInfo = "";
if (cartItem.Quantity >= cartItem.OrderMaximumQuantity)
{
quantityInfo = string.Format(Localizer["Cart_QuantityInfo"].Value, cartItem.OrderMaximumQuantity);
}
<div class="row mb-4">
<div class="col-4 col-md-3">
<img class="img-fluid mb-2" src="@GetImage(cartItem)" alt="@cartItem.ProductName" style="border: 1px solid #aaaaaa;" />
</div>
<div class="col-8 col-md-9">
<div class="fw-bold">@cartItem.ProductSku @cartItem.ProductName</div>
@if (!string.IsNullOrWhiteSpace(cartItem.ProductSpecialInfo))
{
<div>@cartItem.ProductSpecialInfo</div>
}
<div><span class="text-primary fw-bold fs-5">€ @cartItem.TotalGross.ToString("N2")</span> <span class="cart-quantityInfo"> @quantityInfo</span></div>
<div><span class="fw-bold">Stück: </span><span class="text-secondary fw-bold fs-5">@cartItem.Quantity</span></div>
</div>
</div>
}
<hr class="d-lg-none" />
</div>
<div class="col-12 col-lg-6">
<div class="row mb-4">
<div class="col-12">
<div class="payment-box">
<h5 class="text-uppercase">
@if (checkoutAddress.DeliveryAddressIsBilling)
{
@Localizer["Checkout_Address_Both"]
}
else
{
@Localizer["Checkout_Address_Billing"]
}
</h5>
<div>@checkoutAddress.Company</div>
<div>
@if (!string.IsNullOrWhiteSpace(checkoutAddress.Title))
{
<span>@checkoutAddress.Title </span>
}
<span>@checkoutAddress.FirstName @checkoutAddress.LastName</span>
</div>
<div>@checkoutAddress.BillingAddress.AddressLine1</div>
@if (!string.IsNullOrWhiteSpace(checkoutAddress.BillingAddress.AddressLine2))
{
<div>@checkoutAddress.BillingAddress.AddressLine2</div>
}
<div>@checkoutAddress.BillingAddress.Zip @checkoutAddress.BillingAddress.City</div>
<div>@checkoutAddress.BillingCountryName</div>
</div>
@if (!checkoutAddress.DeliveryAddressIsBilling)
{
<div class="col-12 col-md-6 mt-2">
<h5 class="text-uppercase">@Localizer["Checkout_Address_Delivery"]</h5>
<div>@checkoutAddress.DeliveryCompany</div>
<div>
@if (!string.IsNullOrWhiteSpace(checkoutAddress.DeliveryTitle))
{
<span>@checkoutAddress.DeliveryTitle </span>
}
<span>@checkoutAddress.DeliveryFirstName @checkoutAddress.DeliveryLastName</span>
</div>
<div>@checkoutAddress.DeliveryAddress.AddressLine1</div>
@if (!string.IsNullOrWhiteSpace(checkoutAddress.DeliveryAddress.AddressLine2))
{
<div>@checkoutAddress.DeliveryAddress.AddressLine2</div>
}
<div>@checkoutAddress.DeliveryAddress.Zip @checkoutAddress.DeliveryAddress.City</div>
<div>@checkoutAddress.DeliveryCountryName</div>
</div>
}
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<div class="payment-box">
<h5 class="text-uppercase">@Localizer["Checkout_Step_3"]</h5>
<div>@checkoutPayment.PaymentType.GetDisplayName(annotationsLocalizer)</div>
</div>
</div>
</div>
<div class="row mb-2">
<div class="col-12">
<div class="table-cart-container">
<table class="table table-borderless table-cart">
<tr>
<td class="fw-bold">@Localizer["Cart_Subtotal"]:</td>
<td class="text-end">€ @cartModel.TotalGross.ToString("N2")</td>
</tr>
<tr>
<td>@Localizer["Cart_ShipmentCost"]:</td>
<td class="text-end">€ @cartModel.ShipmentGross.ToString("N2")</td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>
<tr>
<td class="fw-bold">@Localizer["Cart_Total"]:</td>
<td class="text-end fw-bold">€ @((cartModel.TotalGross + cartModel.ShipmentGross).ToString("N2"))</td>
</tr>
@if (cartModel.TaxRates.Any())
{
foreach (var modelTaxRate in cartModel.TaxRates)
{
<tr>
<td>@Localizer["Cart_Tax"] @modelTaxRate.Key%:</td>
<td class="text-end">€ @modelTaxRate.Value.ToString("N2")</td>
</tr>
}
}
<tr>
<td colspan="2"><hr /></td>
</tr>
<tr>
<td colspan="2">
<div class="form-check mb-2">
<input type="checkbox" asp-for="AcceptTermsAndConditions" class="form-check-input checkout-checkbox" />
@*<label asp-for="AcceptTermsAndConditions" class="form-check-label ms-2"></label>*@
<label for="AcceptTermsAndConditions" class="form-check-label ms-2">@Html.Raw(termsText)</label>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="form-check">
<input type="checkbox" asp-for="AcceptGdpr" class="form-check-input checkout-checkbox" />
@*<label asp-for="AcceptGdpr" class="form-check-label ms-2"></label>*@
<label for="AcceptGdpr" class="form-check-label ms-2">@Html.Raw(gdprText)</label>
</div>
</td>
</tr>
</table>
<hr />
<div class="text-center mt-2">
<button id="btnOrder" type="button" class="btn btn-success text-uppercase">@Localizer["Button_OrderNow"] <i class="fa fa-shopping-cart"></i></button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-row button-row">
<div class="col-12">
<div class="">
<button type="button" id="btnBack" class="btn btn-primary"><i class="fa fa-fw fa-arrow-left"></i> @Localizer["Button_Back"]</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div id="klarnaContainer" style="display: none;"></div>
<system-js url="~/scripts/Views/Shop/checkoutOrder.js" fresh-import="true"></system-js>
</section>
@functions
{
string GetImage(CartItemListVm model)
{
if (!string.IsNullOrWhiteSpace(model.ProductImage))
return $"/file/documents/thumbnails/200/{model.ProductImage}";
return "/images/product_generic_200.png";
}
}