From dbeebd370a7d50163acfcfc465fd10d05e9fbcc4 Mon Sep 17 00:00:00 2001 From: syneffort Date: Fri, 8 Mar 2024 17:38:48 +0900 Subject: [PATCH] order detail page --- .../Controllers/OrdersController.cs | 15 +++ .../BlazingPizza/Pages/Checkout.razor | 2 +- .../BlazingPizza/Pages/MyOrders.razor | 4 +- .../BlazingPizza/Pages/OrderDetail.razor | 86 ++++++++++++++++++ MyFirstBlazor/BlazingPizza/pizza.db-wal | Bin 148352 -> 234872 bytes 5 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 MyFirstBlazor/BlazingPizza/Pages/OrderDetail.razor diff --git a/MyFirstBlazor/BlazingPizza/Controllers/OrdersController.cs b/MyFirstBlazor/BlazingPizza/Controllers/OrdersController.cs index 077bbd2..f4ca599 100644 --- a/MyFirstBlazor/BlazingPizza/Controllers/OrdersController.cs +++ b/MyFirstBlazor/BlazingPizza/Controllers/OrdersController.cs @@ -27,6 +27,21 @@ namespace BlazingPizza.Controllers return orders.Select(o => OrderWithStatus.FromOrder(o)).ToList(); } + [HttpGet("{orderId}")] + public async Task> GetOrderWithStatus(int orderId) + { + var order = await _db.Orders + .Where(o => o.OrderId == orderId) + .Include(o => o.Pizzas).ThenInclude(p => p.Special) + .Include(o => o.Pizzas).ThenInclude(p => p.Toppings).ThenInclude(t => t.Topping) + .SingleOrDefaultAsync(); + + if (order == null) + return NotFound(); + + return OrderWithStatus.FromOrder(order); + } + [HttpPost] public async Task> PlaceOrder(Order order) { diff --git a/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor b/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor index 164480d..3b67888 100644 --- a/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor +++ b/MyFirstBlazor/BlazingPizza/Pages/Checkout.razor @@ -60,6 +60,6 @@ var newOrderId = await response.Content.ReadFromJsonAsync(); OrderState.ResetOrder(); - NavigationManager.NavigateTo("/"); + NavigationManager.NavigateTo($"myorders/{newOrderId}"); } } diff --git a/MyFirstBlazor/BlazingPizza/Pages/MyOrders.razor b/MyFirstBlazor/BlazingPizza/Pages/MyOrders.razor index da619f8..6fd8e27 100644 --- a/MyFirstBlazor/BlazingPizza/Pages/MyOrders.razor +++ b/MyFirstBlazor/BlazingPizza/Pages/MyOrders.razor @@ -11,7 +11,7 @@
Get Pizza
- +
My orders
@@ -46,7 +46,7 @@ @if (item.StatusText != "Delivered") { diff --git a/MyFirstBlazor/BlazingPizza/Pages/OrderDetail.razor b/MyFirstBlazor/BlazingPizza/Pages/OrderDetail.razor new file mode 100644 index 0000000..3e56224 --- /dev/null +++ b/MyFirstBlazor/BlazingPizza/Pages/OrderDetail.razor @@ -0,0 +1,86 @@ +@page "/myorders/{orderId:int}" +@inject HttpClient HttpClient +@inject NavigationManager NavigationManager + +
+ + + + +
Get Pizza
+
+ + +
My orders
+
+
+ +
+ @if (_invalidOrder) + { +

Order not found

+

We're sorry but this order no longer exists.

+ } + else if (_orderWithStatus == null) + { +
+
+

+ Loading... +

+

+ ... +

+
+
+ } + else + { +
+
+

+ Order placed @_orderWithStatus.Order.CreatedTime.ToLongDateString() +

+

+ Status: @_orderWithStatus.StatusText +

+
+
+
+ @foreach (var pizza in _orderWithStatus.Order.Pizzas) + { +

+ + @(pizza.Size)' + @pizza.Special.Name + (£@pizza.GetFormattedTotalPrice()) + +

+ } +
+
+
+ } +
+ +@code { + [Parameter] public int OrderId { get; set; } + + OrderWithStatus _orderWithStatus; + bool _invalidOrder = false; + + protected override async Task OnParametersSetAsync() + { + try + { + _orderWithStatus = await HttpClient.GetFromJsonAsync($"{NavigationManager.BaseUri}orders/{OrderId}"); + } + catch (Exception ex) + { + _invalidOrder = true; + Console.Error.WriteLine(ex); + } + } +} diff --git a/MyFirstBlazor/BlazingPizza/pizza.db-wal b/MyFirstBlazor/BlazingPizza/pizza.db-wal index 6f5d03e95fb708add5c2c87f143cf68397bd182a..4c3b1f75261ef95f47c6e48b0e786b738b21c31c 100644 GIT binary patch delta 1534 zcmb`GYe*DP7=~wN=S<`1?znovTJlvor6#flMjlaR_N zi-;y7`cV*c6RD-7w2LfVw%W=dEX=|TD!UqGWmMT^!yMXgI82UM+#rGq^fE`g+g~GCKQIs7ltYn2Yqcmiu#d({D|ZXEv9uIy4_{+ zD>-!FEcT$1@)sh*BNC1);B$OAxnq6mSYI&RAIMX4^KydOs-^~gK~>Zn1!0x<>ck?c zw(@En!zehwp%<_41nszkC@$a>j^O}BZiFH$gyVT$6q59=K|*E7)nqiTZ?l&_*cePT(UQEbvDM*6AY)^PL8Zz+e(S;g`6QA}s$ zW2%SP<*((bf$V@^)%<>q{B1><4{m>ouGl`lmd$da#v}&>@tj&okmfFxaB1C zNmk@U^GU={HKyJ;+SDCN+Hr=3Owbjt5nYtlYUE4?5aOWCn{8%JpAvaE@BHo>w!?`= z+cpuwIW$tjZj&(B$p|FL_)auvX33c&N+)}lj`{M@q=oxS#xt~1{obPu*Ad2J^x+Jp z?X=S9?bxXdnpK3fLSbr$S%Vki6s1!TWRY`Ji`x88c@o*mC#{v3mudkHUGsf zNiwvsN|rU|^5?ma*0nrjTU|Ku2gz`PqUuaks^l_Izq2iCZTL;Xw9=&`O>DirZS`^A NwwS)9Sg1DEeFwGYk`w>{ delta 13 Ucmeydim#!av!R7?3sZwL04ekZKL7v#