diff --git a/Controllers/OrderController.cs b/Controllers/OrderController.cs index 88da2a3..36190bb 100644 --- a/Controllers/OrderController.cs +++ b/Controllers/OrderController.cs @@ -128,6 +128,24 @@ public class OrderController : Controller return RedirectToAction("Join", new { code = order.OrderCode }); } + [HttpPost] + public async Task DeleteItem(int orderItemId) + { + var orderItem = await _context.OrderItems + .Include(oi => oi.Order) + .FirstOrDefaultAsync(oi => oi.Id == orderItemId); + if (orderItem == null) + return NotFound("Order item not found"); + + if (orderItem.Order?.CreatorName != User.Identity?.Name && orderItem.ParticipantEmail != User.Identity?.Name) + return Forbid("Only the order creator or the participant who added the item can delete it"); + + _context.OrderItems.Remove(orderItem); + await _context.SaveChangesAsync(); + + return RedirectToAction("Details", new { code = orderItem.Order?.OrderCode }); + } + // GET: Order/Details/{code} public async Task Details(string code) { diff --git a/Resources/SharedResources.de.resx b/Resources/SharedResources.de.resx index 6d59c1e..71b7310 100644 --- a/Resources/SharedResources.de.resx +++ b/Resources/SharedResources.de.resx @@ -312,4 +312,13 @@ Dashboard + + Aktionen + + + Sind Sie sicher, dass Sie diesen Bestellartikel löschen möchten? + + + Löschen + \ No newline at end of file diff --git a/Resources/SharedResources.en.resx b/Resources/SharedResources.en.resx index f8d2b55..e33285d 100644 --- a/Resources/SharedResources.en.resx +++ b/Resources/SharedResources.en.resx @@ -309,4 +309,13 @@ Dashboard + + Actions + + + Are you sure you want to delete this order item? + + + Delete + \ No newline at end of file diff --git a/Views/Home/Dashboard.cshtml b/Views/Home/Dashboard.cshtml index 13e5ab6..246d479 100644 --- a/Views/Home/Dashboard.cshtml +++ b/Views/Home/Dashboard.cshtml @@ -94,7 +94,7 @@
-
@order.Name
+
@order.Name @Localizer.Get(order.IsClosed ? (order.IsCompleted ? "Completed" : "Closed") : "Open")

@Localizer.Get("Code"): @order.OrderCode
@Localizer.Get("CreatedBy"): @order.CreatorName
diff --git a/Views/Order/Details.cshtml b/Views/Order/Details.cshtml index 1bfde08..a3b5d25 100644 --- a/Views/Order/Details.cshtml +++ b/Views/Order/Details.cshtml @@ -106,7 +106,9 @@ @Localizer.Get("Participant") @Localizer.Get("Item") @Localizer.Get("Qty") + @Localizer.Get("Comments") @Localizer.Get("Total") + @Localizer.Get("Actions") @@ -116,7 +118,17 @@ @orderItem.ParticipantName @orderItem.MenuItem?.Name @orderItem.Quantity + @orderItem.Comments @Localizer["Currency", (orderItem.MenuItem?.Price * orderItem.Quantity ?? 0).ToString("F2")] + + @if (User.Identity?.Name == orderItem.ParticipantEmail) + { +

+ + +
+ } + }