From 53f56636b3e572adeaa61b23ee241f8d497f3ac3 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Mon, 5 Jan 2026 01:23:49 +0330 Subject: [PATCH] feat: add image and thumbnail upload support in DiscountProduct forms and services --- libs/BackOffice.BFF.Common.Protobuf.dll | Bin 17408 -> 17408 bytes ...ackOffice.BFF.DiscountProduct.Protobuf.dll | Bin 88064 -> 105472 bytes .../Components/ProductFormDialog.razor | 316 ++++++++++-------- .../DiscountProductsMainPage.razor | 19 +- .../DiscountProduct/DiscountProductService.cs | 67 ++++ .../IDiscountProductService.cs | 17 + 6 files changed, 277 insertions(+), 142 deletions(-) diff --git a/libs/BackOffice.BFF.Common.Protobuf.dll b/libs/BackOffice.BFF.Common.Protobuf.dll index c58dbc96fa4d7d4ed8c0d911237afc32a445ef0e..9be5fc3b5683cec8f769dabef1d8c5f129219b39 100644 GIT binary patch delta 238 zcmZqZU~K4MoY29No;vx`#vUFMfv8K3ulC%Rao8a8Rr1y<(|{7@DVFAGX%?HiEUFk;oUMB{Oy;l(5b)hmvF$|h z9@kdxN&6?1nJG`su$r#`6});BDhN_7{31WyW%C&U`}@1+Y*x2UW$`y;NMT4~NM*2K zFl0z$NCZQ3AUl=894KQ16iZ^TWH11VfYc=dS!qC4G7zRgb%4}a0#&C0p~dFg_NpuZ DvCB=z delta 238 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 literal 88064 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 p2)d2#L3)$i6yYJB`saWDWE6N - - - - + + + @if (!string.IsNullOrWhiteSpace(_mainImagePreview)) + { + + } + else if (!string.IsNullOrEmpty(Model.ImagePath)) + { + + } + else + { + + تصویری انتخاب نشده است + + } - - - + + + + انتخاب تصویر اصلی + + + + @if (context != null) + { + + + @context.Name + + + } + else + { + فایلی انتخاب نشده + } + + + - - - - - - - - - - - - - - - - - - - @foreach (var category in _categories) - { - @GetCategoryPath(category) - } - - - - - - - - - - - - @if (!string.IsNullOrEmpty(Model.ThumbnailPath)) - { - - + + + - } + + + + - - - - + + + + + + + + + + + + + + + + + دسته‌بندی‌ها + + @if (_selectedCategoryIds?.Count > 0) + { + + تعداد دسته‌بندی‌های انتخاب‌شده: @_selectedCategoryIds.Count + + } + + + + تصویر بندانگشتی + + + + انتخاب تصویر بندانگشتی (اختیاری) + + + + + + + - انصراف + انصراف - @if (_loading) - { - - } - else - { - @(IsEditMode ? "ذخیره تغییرات" : "ایجاد محصول") - } - + Disabled="@(!_isValid || _loading)">ثبت @@ -128,56 +162,35 @@ private MudForm? _form; private bool _isValid; private bool _loading; - private List _categories = new(); - private IEnumerable _selectedCategoryIds = new List(); + private IBrowserFile? _mainImageFile; + private IBrowserFile? _thumbnailImageFile; + private readonly long _maxAllowedSize = (1024 * 1024) * 5; + private string? _mainImagePreview; + private List _selectedCategoryIds = new(); protected override async Task OnInitializedAsync() { - await LoadCategories(); - if (Model.CategoryIds?.Any() == true) { _selectedCategoryIds = Model.CategoryIds; } } - private async Task LoadCategories() + private async Task OnMainImageSelected(IBrowserFile? file) { - try + _mainImageFile = file; + if (file != null) { - var tree = await CategoryService.GetCategoriesAsync(isActive: true); - _categories = FlattenCategories(tree); - } - catch (Exception ex) - { - Snackbar.Add($"خطا در بارگذاری دسته‌بندی‌ها: {ex.Message}", Severity.Error); + var buffer = new byte[file.Size]; + await file.OpenReadStream(_maxAllowedSize).ReadAsync(buffer); + _mainImagePreview = $"data:{file.ContentType};base64," + Convert.ToBase64String(buffer); + StateHasChanged(); } } - private List FlattenCategories(List categories, string prefix = "") + private async Task OnThumbnailSelected(IBrowserFile? file) { - 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; + _thumbnailImageFile = file; } private async Task Submit() @@ -193,6 +206,26 @@ // Update CategoryIds from selected values Model.CategoryIds = _selectedCategoryIds.ToList(); + // Handle main image upload + if (_mainImageFile != null) + { + var buffer = new byte[_mainImageFile.Size]; + await _mainImageFile.OpenReadStream(_maxAllowedSize).ReadAsync(buffer); + Model.ImageFile = buffer; + Model.ImageMime = _mainImageFile.ContentType; + Model.ImageFileName = Path.GetFileNameWithoutExtension(_mainImageFile.Name); + } + + // Handle thumbnail upload + if (_thumbnailImageFile != null) + { + var buffer = new byte[_thumbnailImageFile.Size]; + await _thumbnailImageFile.OpenReadStream(_maxAllowedSize).ReadAsync(buffer); + Model.ThumbnailFile = buffer; + Model.ThumbnailMime = _thumbnailImageFile.ContentType; + Model.ThumbnailFileName = Path.GetFileNameWithoutExtension(_thumbnailImageFile.Name); + } + MudDialog.Close(DialogResult.Ok(Model)); _loading = false; } @@ -211,9 +244,16 @@ public string? ThumbnailPath { get; set; } public long Price { get; set; } public int MaxDiscountPercent { get; set; } - public int InitialCount { get; set; } public int SortOrder { get; set; } public bool IsActive { get; set; } = true; public List? CategoryIds { get; set; } + + // Image upload properties + public byte[]? ImageFile { get; set; } + public string? ImageMime { get; set; } + public string? ImageFileName { get; set; } + public byte[]? ThumbnailFile { get; set; } + public string? ThumbnailMime { get; set; } + public string? ThumbnailFileName { get; set; } } } diff --git a/src/BackOffice/Pages/DiscountShop/DiscountProductsMainPage.razor b/src/BackOffice/Pages/DiscountShop/DiscountProductsMainPage.razor index 9ab4344..f723dcd 100644 --- a/src/BackOffice/Pages/DiscountShop/DiscountProductsMainPage.razor +++ b/src/BackOffice/Pages/DiscountShop/DiscountProductsMainPage.razor @@ -232,10 +232,16 @@ ThumbnailPath = formData.ThumbnailPath, Price = formData.Price, MaxDiscountPercent = formData.MaxDiscountPercent, - InitialCount = formData.InitialCount, + InitialCount = 0, // Always 0 - must use inventory management SortOrder = formData.SortOrder, IsActive = formData.IsActive, - CategoryIds = formData.CategoryIds + CategoryIds = formData.CategoryIds, + ImageFile = formData.ImageFile, + ImageMime = formData.ImageMime, + ImageFileName = formData.ImageFileName, + ThumbnailFile = formData.ThumbnailFile, + ThumbnailMime = formData.ThumbnailMime, + ThumbnailFileName = formData.ThumbnailFileName }; await DiscountProductService.CreateAsync(dto); @@ -269,7 +275,6 @@ ThumbnailPath = product.ThumbnailPath, Price = product.Price, MaxDiscountPercent = product.MaxDiscountPercent, - InitialCount = product.RemainingCount, SortOrder = product.SortOrder, IsActive = product.IsActive, CategoryIds = product.Categories?.Select(c => c.Id).ToList() ?? new() @@ -298,7 +303,13 @@ MaxDiscountPercent = formData.MaxDiscountPercent, SortOrder = formData.SortOrder, IsActive = formData.IsActive, - CategoryIds = formData.CategoryIds + CategoryIds = formData.CategoryIds, + ImageFile = formData.ImageFile, + ImageMime = formData.ImageMime, + ImageFileName = formData.ImageFileName, + ThumbnailFile = formData.ThumbnailFile, + ThumbnailMime = formData.ThumbnailMime, + ThumbnailFileName = formData.ThumbnailFileName }; await DiscountProductService.UpdateAsync(productId, dto); diff --git a/src/BackOffice/Services/DiscountProduct/DiscountProductService.cs b/src/BackOffice/Services/DiscountProduct/DiscountProductService.cs index 06b6a86..7f2b711 100644 --- a/src/BackOffice/Services/DiscountProduct/DiscountProductService.cs +++ b/src/BackOffice/Services/DiscountProduct/DiscountProductService.cs @@ -1,4 +1,5 @@ using BackOffice.BFF.DiscountProduct.Protobuf.Protos.DiscountProduct; +using Google.Protobuf; using Google.Protobuf.WellKnownTypes; namespace BackOffice.Services.DiscountProduct; @@ -115,6 +116,28 @@ public class DiscountProductService : IDiscountProductService request.CategoryIds.AddRange(dto.CategoryIds); } + // Add image file if provided + if (dto.ImageFile != null && !string.IsNullOrEmpty(dto.ImageMime) && !string.IsNullOrEmpty(dto.ImageFileName)) + { + request.ImageFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ImageFile), + Mime = dto.ImageMime, + FileName = dto.ImageFileName + }; + } + + // Add thumbnail file if provided + if (dto.ThumbnailFile != null && !string.IsNullOrEmpty(dto.ThumbnailMime) && !string.IsNullOrEmpty(dto.ThumbnailFileName)) + { + request.ThumbnailFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ThumbnailFile), + Mime = dto.ThumbnailMime, + FileName = dto.ThumbnailFileName + }; + } + var response = await _client.CreateDiscountProductAsync(request); return response.ProductId; } @@ -140,6 +163,50 @@ public class DiscountProductService : IDiscountProductService request.CategoryIds.AddRange(dto.CategoryIds); } + // Handle image file upload + if (dto.ImageFile != null) + { + request.ImageFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ImageFile), + Mime = dto.ImageMime ?? string.Empty, + FileName = dto.ImageFileName ?? string.Empty + }; + } + + // Handle thumbnail file upload + if (dto.ThumbnailFile != null) + { + request.ThumbnailFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ThumbnailFile), + Mime = dto.ThumbnailMime ?? string.Empty, + FileName = dto.ThumbnailFileName ?? string.Empty + }; + } + + // Add image file if provided + if (dto.ImageFile != null && !string.IsNullOrEmpty(dto.ImageMime) && !string.IsNullOrEmpty(dto.ImageFileName)) + { + request.ImageFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ImageFile), + Mime = dto.ImageMime, + FileName = dto.ImageFileName + }; + } + + // Add thumbnail file if provided + if (dto.ThumbnailFile != null && !string.IsNullOrEmpty(dto.ThumbnailMime) && !string.IsNullOrEmpty(dto.ThumbnailFileName)) + { + request.ThumbnailFile = new ImageFileModel + { + File = ByteString.CopyFrom(dto.ThumbnailFile), + Mime = dto.ThumbnailMime, + FileName = dto.ThumbnailFileName + }; + } + await _client.UpdateDiscountProductAsync(request); } diff --git a/src/BackOffice/Services/DiscountProduct/IDiscountProductService.cs b/src/BackOffice/Services/DiscountProduct/IDiscountProductService.cs index 6600a2b..c9a3b23 100644 --- a/src/BackOffice/Services/DiscountProduct/IDiscountProductService.cs +++ b/src/BackOffice/Services/DiscountProduct/IDiscountProductService.cs @@ -74,6 +74,14 @@ public class CreateDiscountProductDto public int SortOrder { get; set; } public bool IsActive { get; set; } = true; public List? CategoryIds { get; set; } + + // Image upload support + public byte[]? ImageFile { get; set; } + public string? ImageMime { get; set; } + public string? ImageFileName { get; set; } + public byte[]? ThumbnailFile { get; set; } + public string? ThumbnailMime { get; set; } + public string? ThumbnailFileName { get; set; } } public class UpdateDiscountProductDto @@ -88,4 +96,13 @@ public class UpdateDiscountProductDto public int SortOrder { get; set; } public bool IsActive { get; set; } public List? CategoryIds { get; set; } + + // Image upload support + public byte[]? ImageFile { get; set; } + public string? ImageMime { get; set; } + public string? ImageFileName { get; set; } + public byte[]? ThumbnailFile { get; set; } + public string? ThumbnailMime { get; set; } + public string? ThumbnailFileName { get; set; } } +