@model LittleShop.DTOs.CustomerDto @{ ViewData["Title"] = $"Customer: {Model.TelegramDisplayName}"; var customerOrders = ViewData["CustomerOrders"] as List ?? new List(); }

@Model.TelegramDisplayName @if (Model.IsBlocked) { BLOCKED } else if (!Model.IsActive) { DELETED } else { ACTIVE }

Telegram: @@@Model.TelegramUsername | ID: @Model.TelegramUserId

Customer Information
Display Name: @Model.TelegramDisplayName
Full Name: @if (!string.IsNullOrEmpty(Model.TelegramFirstName) || !string.IsNullOrEmpty(Model.TelegramLastName)) { @Model.TelegramFirstName @Model.TelegramLastName } else { Not provided }
Telegram Username: @@@Model.TelegramUsername
Telegram User ID: @Model.TelegramUserId
Language: @Model.Language.ToUpper()
Timezone: @Model.Timezone
Customer Since: @Model.CreatedAt.ToString("MMMM dd, yyyy")
Last Active: @if (Model.LastActiveAt > DateTime.MinValue) { var daysAgo = (DateTime.UtcNow - Model.LastActiveAt).Days; @Model.LastActiveAt.ToString("MMMM dd, yyyy HH:mm") @if (daysAgo <= 1) { Active today } else if (daysAgo <= 7) { @daysAgo days ago } else if (daysAgo <= 30) { @daysAgo days ago } else { @daysAgo days ago } } else { Never }
Risk Assessment
@{ var riskLevel = Model.RiskScore >= 80 ? "Very High Risk" : Model.RiskScore >= 50 ? "High Risk" : Model.RiskScore >= 30 ? "Medium Risk" : "Low Risk"; var riskClass = Model.RiskScore >= 80 ? "danger" : Model.RiskScore >= 50 ? "warning" : Model.RiskScore >= 30 ? "info" : "success"; }

@Model.RiskScore

@riskLevel


Total Orders: @Model.TotalOrders
Successful Orders: @Model.SuccessfulOrders
Cancelled Orders: @Model.CancelledOrders
Disputed Orders: @Model.DisputedOrders
Success Rate: @if (Model.TotalOrders > 0) { var successRate = (Model.SuccessfulOrders * 100.0) / Model.TotalOrders; @successRate.ToString("F1")% } else { N/A }
@Html.AntiForgeryToken()
Total Spent

£@Model.TotalSpent.ToString("N2")

Average Order Value

£@Model.AverageOrderValue.ToString("N2")

First Order

@if (Model.FirstOrderDate > DateTime.MinValue) { @Model.FirstOrderDate.ToString("MMM dd, yyyy") } else { No orders }

Last Order

@if (Model.LastOrderDate > DateTime.MinValue) { @Model.LastOrderDate.ToString("MMM dd, yyyy") } else { No orders }

Customer Management Actions
@if (Model.IsBlocked) {
Customer is Blocked

Reason: @Model.BlockReason

@Html.AntiForgeryToken()
} else { } @if (!string.IsNullOrEmpty(Model.CustomerNotes)) {
Admin Notes:

@Model.CustomerNotes

}
Order History @customerOrders.Count
@if (customerOrders.Any()) {
@foreach (var order in customerOrders) { }
Order ID Date Status Items Total Actions
@order.Id.ToString().Substring(0, 8) @order.CreatedAt.ToString("MMM dd, yyyy HH:mm") @{ var statusClass = order.Status.ToString() == "Delivered" ? "success" : order.Status.ToString() == "Cancelled" ? "danger" : order.Status.ToString() == "PendingPayment" ? "warning" : "info"; } @order.Status @order.Items.Sum(i => i.Quantity) £@order.TotalAmount.ToString("N2") View
} else {
No orders yet for this customer.
}