Added order item delete functionality
This commit is contained in:
@@ -128,6 +128,24 @@ public class OrderController : Controller
|
||||
return RedirectToAction("Join", new { code = order.OrderCode });
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> 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<IActionResult> Details(string code)
|
||||
{
|
||||
|
||||
@@ -312,4 +312,13 @@
|
||||
<data name="Dashboard" xml:space="preserve">
|
||||
<value>Dashboard</value>
|
||||
</data>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>Aktionen</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteOrderItem" xml:space="preserve">
|
||||
<value>Sind Sie sicher, dass Sie diesen Bestellartikel löschen möchten?</value>
|
||||
</data>
|
||||
<data name="Delete" xml:space="preserve">
|
||||
<value>Löschen</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -309,4 +309,13 @@
|
||||
<data name="Dashboard" xml:space="preserve">
|
||||
<value>Dashboard</value>
|
||||
</data>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>Actions</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteOrderItem" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this order item?</value>
|
||||
</data>
|
||||
<data name="Delete" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -94,7 +94,7 @@
|
||||
<div class="col-md-6 mb-3">
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">@order.Name</h5>
|
||||
<h5 class="card-title">@order.Name <span class="badge @(order.IsCompleted ? "bg-success" : "bg-warning text-dark")" style="float: right">@Localizer.Get(order.IsClosed ? (order.IsCompleted ? "Completed" : "Closed") : "Open")</span></h5>
|
||||
<p class="card-text">
|
||||
<small class="text-muted">@Localizer.Get("Code"): <strong>@order.OrderCode</strong></small><br>
|
||||
<small class="text-muted">@Localizer.Get("CreatedBy"): @order.CreatorName</small><br>
|
||||
|
||||
@@ -106,7 +106,9 @@
|
||||
<th>@Localizer.Get("Participant")</th>
|
||||
<th>@Localizer.Get("Item")</th>
|
||||
<th>@Localizer.Get("Qty")</th>
|
||||
<th>@Localizer.Get("Comments")</th>
|
||||
<th>@Localizer.Get("Total")</th>
|
||||
<th>@Localizer.Get("Actions")</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -116,7 +118,17 @@
|
||||
<td>@orderItem.ParticipantName</td>
|
||||
<td>@orderItem.MenuItem?.Name</td>
|
||||
<td>@orderItem.Quantity</td>
|
||||
<td>@orderItem.Comments</td>
|
||||
<td>@Localizer["Currency", (orderItem.MenuItem?.Price * orderItem.Quantity ?? 0).ToString("F2")]</td>
|
||||
<td>
|
||||
@if (User.Identity?.Name == orderItem.ParticipantEmail)
|
||||
{
|
||||
<form method="post" action="/order/deleteitem" onsubmit="return confirm('@Localizer.Get("ConfirmDeleteOrderItem")');">
|
||||
<input type="hidden" name="orderItemId" value="@orderItem.Id" />
|
||||
<button type="submit" class="btn btn-sm btn-danger">@Localizer.Get("Delete")</button>
|
||||
</form>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user