diff --git a/src/BackOffice/Pages/DiscountShop/Components/ProductFormDialog.razor b/src/BackOffice/Pages/DiscountShop/Components/ProductFormDialog.razor index 6dc8770..3603d68 100644 --- a/src/BackOffice/Pages/DiscountShop/Components/ProductFormDialog.razor +++ b/src/BackOffice/Pages/DiscountShop/Components/ProductFormDialog.razor @@ -3,7 +3,6 @@ @using Microsoft.AspNetCore.Components.Forms @using Tizzani.MudBlazor.HtmlEditor @using BackOffice.Common.BaseComponents -@using BackOffice.Pages.AutoComplete @inject ISnackbar Snackbar @@ -112,13 +111,22 @@ دسته‌بندی‌ها - - @if (_selectedCategoryIds?.Count > 0) + + @foreach (var category in _categories) + { + @category.Title + } + + @if (_selectedCategoryIds?.Any() == true) { - تعداد دسته‌بندی‌های انتخاب‌شده: @_selectedCategoryIds.Count + تعداد دسته‌بندی‌های انتخاب‌شده: @_selectedCategoryIds.Count() } @@ -166,16 +174,58 @@ private IBrowserFile? _thumbnailImageFile; private readonly long _maxAllowedSize = (1024 * 1024) * 5; private string? _mainImagePreview; - private List _selectedCategoryIds = new(); + private IEnumerable _selectedCategoryIds = new List(); + private List _categories = new(); protected override async Task OnInitializedAsync() { + await LoadCategories(); + if (Model.CategoryIds?.Any() == true) { _selectedCategoryIds = Model.CategoryIds; } } + private async Task LoadCategories() + { + try + { + var tree = await CategoryService.GetCategoriesAsync(isActive: true); + _categories = FlattenCategories(tree); + } + catch (Exception ex) + { + Snackbar.Add($"خطا در بارگذاری دسته‌بندی‌ها: {ex.Message}", Severity.Error); + } + } + + private List FlattenCategories(List categories, string prefix = "") + { + var result = new List(); + foreach (var category in categories) + { + var catCopy = new DiscountCategoryDto + { + Id = category.Id, + Title = prefix + category.Title, + ParentCategoryId = category.ParentCategoryId + }; + result.Add(catCopy); + + if (category.Children.Any()) + { + result.AddRange(FlattenCategories(category.Children.ToList(), prefix + " ")); + } + } + return result; + } + + private string GetCategoryPath(DiscountCategoryDto category) + { + return category.Title; + } + private async Task OnMainImageSelected(IBrowserFile? file) { _mainImageFile = file;