aboutsummaryrefslogtreecommitdiffstats
path: root/src/Pages/Status.cshtml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Pages/Status.cshtml.cs')
-rw-r--r--src/Pages/Status.cshtml.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/Pages/Status.cshtml.cs b/src/Pages/Status.cshtml.cs
new file mode 100644
index 0000000..ed15120
--- /dev/null
+++ b/src/Pages/Status.cshtml.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.EntityFrameworkCore;
+using VSH.Data;
+using VSH.Data.Database;
+
+namespace VSH.Pages;
+
+public class Status : PageModel
+{
+ private readonly MainDbContext _context;
+ public Order CurrentOrder { get; private set; }
+ public List<StatusProduct> CurrentOrderProducts { get; }
+
+ public Status(MainDbContext context) {
+ _context = context;
+ CurrentOrderProducts = new List<StatusProduct>();
+ }
+
+ public ActionResult OnGet(string orderReference) {
+ try {
+ CurrentOrder = _context.Orders.SingleOrDefault(o => o.OrderReference == orderReference);
+ if (CurrentOrder == default) return Page();
+
+ foreach (var orderProduct in CurrentOrder.Products) {
+ var dbProduct = _context.Products.Include(c => c.Category)
+ .SingleOrDefault(p => p.Id == orderProduct.Id);
+ if (dbProduct == default) continue;
+ CurrentOrderProducts.Add(new StatusProduct(dbProduct, orderProduct));
+ }
+
+ return Page();
+ } catch (Exception e) {
+ Console.WriteLine(e);
+ }
+
+ return Redirect("/errors/500");
+ }
+
+ public class StatusProduct
+ {
+ public StatusProduct(Product dbProdcut, OrderProduct orderProduct) {
+ DbProdcut = dbProdcut;
+ OrderProduct = orderProduct;
+ }
+
+ public Product DbProdcut { get; }
+ public OrderProduct OrderProduct { get; }
+ }
+} \ No newline at end of file