Newer
Older
BlazorKafkaSignalR / save-points / 05-checkout-with-validation / BlazingPizza.Client / Pages / Checkout.razor
@Derek Comartin Derek Comartin on 1 Jun 2021 1 KB Init
@page "/checkout"
@inject OrderState OrderState
@inject HttpClient HttpClient
@inject NavigationManager NavigationManager

<div class="main">
    <EditForm Model="OrderState.Order.DeliveryAddress" OnValidSubmit="PlaceOrder">
        <div class="checkout-cols">
            <div class="checkout-order-details">
                <h4>Review order</h4>
                <OrderReview Order="OrderState.Order" />
            </div>

            <div class="checkout-delivery-address">
                <h4>Deliver to...</h4>
                <AddressEditor Address="OrderState.Order.DeliveryAddress" />
            </div>
        </div>

        <button type="submit" class="checkout-button btn btn-warning" disabled="@isSubmitting">
            Place order
        </button>

        <DataAnnotationsValidator />
    </EditForm>
</div>

@code {
    bool isSubmitting;

    async Task PlaceOrder()
    {
        isSubmitting = true;
        var response = await HttpClient.PostAsJsonAsync("orders", OrderState.Order);
        var newOrderId= await response.Content.ReadFromJsonAsync<int>();
        OrderState.ResetOrder();
        NavigationManager.NavigateTo($"myorders/{newOrderId}");
    }
}