@{ ViewData["Title"] = "Order Management"; var orders = ViewData["Orders"] as IEnumerable ?? new List(); var currentTab = ViewData["CurrentTab"] as string ?? "accept"; var tabTitle = ViewData["TabTitle"] as string ?? "Orders"; var pendingCount = (int)(ViewData["PendingCount"] ?? 0); var acceptCount = (int)(ViewData["AcceptCount"] ?? 0); var packingCount = (int)(ViewData["PackingCount"] ?? 0); var dispatchedCount = (int)(ViewData["DispatchedCount"] ?? 0); var onHoldCount = (int)(ViewData["OnHoldCount"] ?? 0); }

Order ManagementOrders

Workflow-focused order fulfillment system

@tabTitle (@orders.Count())
@if (orders.Any()) {
@foreach (var order in orders) { }
Order ID Customer Items Total Status Timeline Actions
#@order.Id.ToString().Substring(0, 8)
@order.CreatedAt.ToString("MMM dd, HH:mm")
@if (order.Customer != null) { @order.Customer.DisplayName
@order.Customer.CustomerType } else { @order.ShippingName
Anonymous }
@foreach (var item in order.Items.Take(2)) {
@item.Quantityร— @item.ProductName
@if (!string.IsNullOrEmpty(item.ProductMultiBuyName)) { (@item.ProductMultiBuyName) } } @if (order.Items.Count > 2) { +@(order.Items.Count - 2) more... }
ยฃ@order.TotalAmount
@order.Currency
@{ var statusClass = order.Status switch { LittleShop.Enums.OrderStatus.PendingPayment => "bg-warning", LittleShop.Enums.OrderStatus.PaymentReceived => "bg-info", LittleShop.Enums.OrderStatus.Accepted => "bg-primary", LittleShop.Enums.OrderStatus.Packing => "bg-warning", LittleShop.Enums.OrderStatus.Dispatched => "bg-info", LittleShop.Enums.OrderStatus.Delivered => "bg-success", LittleShop.Enums.OrderStatus.OnHold => "bg-secondary", LittleShop.Enums.OrderStatus.Cancelled => "bg-danger", _ => "bg-light" }; } @order.Status @if (!string.IsNullOrEmpty(order.TrackingNumber)) {
@order.TrackingNumber }
@if (order.AcceptedAt.HasValue) {
โœ… Accepted @order.AcceptedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.PackingStartedAt.HasValue) {
๐Ÿ“ฆ Packing @order.PackingStartedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.DispatchedAt.HasValue) {
๐Ÿšš Dispatched @order.DispatchedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.ExpectedDeliveryDate.HasValue) {
๐Ÿ“… Expected @order.ExpectedDeliveryDate.Value.ToString("MMM dd")
} @if (order.OnHoldAt.HasValue) {
โธ๏ธ On Hold: @order.OnHoldReason
}
@* Workflow-specific actions *@ @if (order.Status == LittleShop.Enums.OrderStatus.PaymentReceived) {
@Html.AntiForgeryToken()
} @if (order.Status == LittleShop.Enums.OrderStatus.Accepted) {
@Html.AntiForgeryToken()
} @if (order.Status == LittleShop.Enums.OrderStatus.Packing) { } @if (order.Status != LittleShop.Enums.OrderStatus.OnHold && order.Status != LittleShop.Enums.OrderStatus.Delivered && order.Status != LittleShop.Enums.OrderStatus.Cancelled) { }
@foreach (var order in orders) {
"border-primary", LittleShop.Enums.OrderStatus.Packing => "border-info", LittleShop.Enums.OrderStatus.Dispatched => "border-success", LittleShop.Enums.OrderStatus.OnHold => "border-secondary", _ => "border-light" })">
#@order.Id.ToString().Substring(0, 8) "bg-info", LittleShop.Enums.OrderStatus.Accepted => "bg-primary", LittleShop.Enums.OrderStatus.Packing => "bg-warning", LittleShop.Enums.OrderStatus.Dispatched => "bg-info", LittleShop.Enums.OrderStatus.Delivered => "bg-success", LittleShop.Enums.OrderStatus.OnHold => "bg-secondary", LittleShop.Enums.OrderStatus.Cancelled => "bg-danger", _ => "bg-light" }) ms-2">@order.Status
@if (order.Customer != null) { @order.Customer.DisplayName - @order.Customer.CustomerType } else { @order.ShippingName - Anonymous }
ยฃ@order.TotalAmount @if (order.Items.Any()) { var firstItem = order.Items.First(); - @firstItem.Quantity x @firstItem.ProductName @if (!string.IsNullOrEmpty(firstItem.ProductMultiBuyName)) { (@firstItem.ProductMultiBuyName) } @if (order.Items.Count > 1) { +@(order.Items.Count - 1) more } }
@if (!string.IsNullOrEmpty(order.TrackingNumber)) {
๐Ÿ“ฆ @order.TrackingNumber
}
@if (order.AcceptedAt.HasValue) {
โœ… @order.AcceptedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.PackingStartedAt.HasValue) {
๐Ÿ“ฆ @order.PackingStartedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.DispatchedAt.HasValue) {
๐Ÿšš @order.DispatchedAt.Value.ToString("MMM dd, HH:mm")
} @if (order.ExpectedDeliveryDate.HasValue) {
๐Ÿ“… Expected @order.ExpectedDeliveryDate.Value.ToString("MMM dd")
} @if (order.OnHoldAt.HasValue) {
โธ๏ธ On Hold: @order.OnHoldReason
}
View @if (order.Status == LittleShop.Enums.OrderStatus.PaymentReceived) {
@Html.AntiForgeryToken()
} @if (order.Status == LittleShop.Enums.OrderStatus.Accepted) {
@Html.AntiForgeryToken()
} @if (order.Status == LittleShop.Enums.OrderStatus.Packing) { } @if (order.Status != LittleShop.Enums.OrderStatus.OnHold && order.Status != LittleShop.Enums.OrderStatus.Delivered && order.Status != LittleShop.Enums.OrderStatus.Cancelled) { }
}
} else {

No orders found in this category.

@if (currentTab == "accept") {

Orders will appear here when payment is received.

}
}
@* Dispatch Modals for Packing orders *@ @foreach (var order in orders.Where(o => o.Status == LittleShop.Enums.OrderStatus.Packing)) { } @* Hold Modals for each order *@ @foreach (var order in orders.Where(o => o.Status != LittleShop.Enums.OrderStatus.OnHold && o.Status != LittleShop.Enums.OrderStatus.Delivered && o.Status != LittleShop.Enums.OrderStatus.Cancelled)) { }