Files
BackOffice/src/BackOffice/Shared/AppBreadcrumb.razor
T
masoodafar-web b53d9facc9
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
feat(transactions): add ledger transactions feature and update related components
- Introduced new ledger transactions page in NavMenu.razor and AppBreadcrumb.razor.
- Enhanced ReportLabels.cs with transaction status and type labels.
- Updated ConfigureService.cs to include TransactionsContractClient for gRPC.
- Bumped Foursat.CMSMicroservice.Protobuf version to 0.0.203 for compatibility with new features.
- Added deployment notes for June 1405 regarding read-only reports and proto updates.
2026-06-26 16:38:58 +03:30

160 lines
5.0 KiB
Plaintext

@using Microsoft.AspNetCore.Components.Routing
<MudBreadcrumbs Items="_items" Class="pa-0 mb-2">
<SeparatorTemplate>
<MudIcon Icon="@Icons.Material.Filled.ChevronLeft" Size="Size.Small" />
</SeparatorTemplate>
</MudBreadcrumbs>
@code {
[Inject] private NavigationManager Nav { get; set; } = default!;
private List<BreadcrumbItem> _items = new();
protected override void OnParametersSet()
{
BuildBreadcrumbs();
}
private void BuildBreadcrumbs()
{
var uri = new Uri(Nav.Uri);
var path = uri.AbsolutePath.TrimStart('/').TrimEnd('/');
_items = new List<BreadcrumbItem>
{
new("خانه", "/", icon: Icons.Material.Filled.Home)
};
if (string.IsNullOrEmpty(path)) return;
var segments = path.Split('/');
var accumulated = "";
foreach (var segment in segments)
{
accumulated += $"/{segment}";
var title = GetPersianTitle(segment, accumulated);
if (!string.IsNullOrEmpty(title))
{
_items.Add(new BreadcrumbItem(title, accumulated));
}
}
// Mark last item as disabled (current page)
if (_items.Count > 1)
{
var last = _items[^1];
_items[^1] = new BreadcrumbItem(last.Text, href: null, disabled: true);
}
}
private static string GetPersianTitle(string segment, string fullPath)
{
// Map URL segments to Persian titles
return segment.ToLowerInvariant() switch
{
// Dashboard
"dashboard" => "داشبورد",
"system-overview" => "نمای کلی",
// Users
"users" => "کاربران",
"user" => "کاربران",
"user-address" => "آدرس‌ها",
"user-role" => "نقش‌های کاربر",
// Products
"products" => "محصولات",
"product-categories" => "دسته‌بندی محصول",
"bulk-edit" => "ویرایش گروهی",
// Categories
"categories" => "دسته‌بندی‌ها",
"category" => "دسته‌بندی‌ها",
"category-products" => "محصولات دسته‌بندی",
// Orders
"orders" => "سفارش‌ها",
"user-order" => "سفارش‌ها",
// Packages
"packages" => "پکیج‌ها",
"package" => "پکیج‌ها",
// Roles
"roles" => "نقش‌ها",
"role" => "نقش‌ها",
// Commission
"commission" => "کمیسیون",
"withdrawals" => "درخواست‌های برداشت",
"withdrawal-reports" => "گزارش برداشت‌ها",
"weekly-reports" => "گزارش هفتگی",
"payouts" => "واریزی‌ها",
// Payment
"payment" => "پرداخت",
"transactions" => "تراکنش‌ها",
"ledger-transactions" => "دفتر تراکنش‌های مالی",
"manual-payments" => "پرداخت دستی",
// Network
"network" => "شبکه",
"tree" => "درخت شبکه",
"balances" => "مانده‌ها",
"statistics" => "آمار",
"user-network" => "شبکه کاربر",
// Club
"club" => "باشگاه",
"members" => "اعضا",
"features" => "فیچرها",
// Wallet
"wallets" => "کیف‌پول کاربران",
// Contracts
"contracts" => "قراردادها",
// Blog
"blog" => "بلاگ",
"posts" => "پست‌ها",
// Content
"content" => "محتوا",
"pages" => "صفحات سایت",
"public-messages" => "پیام‌های عمومی",
// Discount Shop
"discount" => "فروشگاه تخفیفی",
"discount-products" => "محصولات تخفیفی",
"discount-categories" => "دسته‌بندی تخفیفی",
"discount-orders" => "سفارش‌های تخفیفی",
"sales-reports" => "گزارش فروش",
// Inventory
"inventory" => "انبار",
"warehouses" => "انبارها",
"movements" => "جابه‌جایی‌ها",
"low-stock" => "کمبود موجودی",
// System
"system" => "سیستم",
"configuration" => "تنظیمات",
"health" => "سلامت سیستم",
"worker-control" => "کنترل وظایف",
"alerts" => "هشدارها",
"app-versions" => "نسخه‌های اپ",
// Settings
"settings" => "تنظیمات",
"tags" => "تگ‌ها",
// Numeric IDs - skip
_ when long.TryParse(segment, out _) => "",
_ => ""
};
}
}