diff --git a/src/BackOffice/BackOffice.csproj b/src/BackOffice/BackOffice.csproj index 32ce305..f626858 100644 --- a/src/BackOffice/BackOffice.csproj +++ b/src/BackOffice/BackOffice.csproj @@ -138,7 +138,7 @@ - + diff --git a/src/BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor b/src/BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor index dd34aeb..0d357d3 100644 --- a/src/BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor +++ b/src/BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor @@ -1,4 +1,5 @@ @using CMSMicroservice.Protobuf.Protos.ManualPayment +@using CMSMicroservice.Protobuf.Protos.Package @using BackOffice.Pages.Payment.Components @using BackOffice.Pages.AutoComplete @using Microsoft.AspNetCore.Components.Forms @@ -13,15 +14,28 @@ - + + @foreach (var pkg in _packages) + { + + @pkg.Title — @pkg.Price.ToString("N0") تومان + + } + + + @if (_selectedPackagePrice.HasValue) + { + + مبلغ پکیج: @_selectedPackagePrice.Value.ToString("N0") تومان — این مبلغ به کیف‌پول کاربر اضافه می‌شود. + + } _packages = new(); + // Type and Description private int _selectedType = 1; // Default: CashDeposit private string _description = "عضویت دستی باشگاه مشتریان"; @@ -48,6 +53,46 @@ public partial class ManualPaymentDialog private bool _isSubmitting; + protected override async Task OnInitializedAsync() + { + await LoadPackages(); + } + + private async Task LoadPackages() + { + try + { + var request = new GetAllPackageByFilterRequest + { + PaginationState = new() { PageNumber = 1, PageSize = 100 }, + Filter = new() + }; + + var result = await PackageClient.GetAllPackageByFilterAsync(request); + _packages = result.Models?.OrderBy(p => p.SortOrder).ToList() + ?? new List(); + + // اگر پکیج پایه وجود دارد، پیش‌فرض انتخاب کن + var basePackage = _packages.FirstOrDefault(p => p.IsBasePackage); + if (basePackage != null) + { + _selectedPackageId = basePackage.Id; + _selectedPackagePrice = basePackage.Price; + } + } + catch + { + _packages = new List(); + } + } + + private void OnPackageChanged(long? packageId) + { + _selectedPackageId = packageId; + var pkg = _packages.FirstOrDefault(p => p.Id == packageId); + _selectedPackagePrice = pkg?.Price; + } + private async Task OnImageFileSelected(IBrowserFile? file) { if (file == null) @@ -81,6 +126,12 @@ public partial class ManualPaymentDialog return; } + if (!_selectedPackageId.HasValue || _selectedPackageId.Value <= 0) + { + Snackbar.Add("لطفاً پکیج را انتخاب کنید.", Severity.Warning); + return; + } + if (_selectedType <= 0) { Snackbar.Add("لطفاً نوع پرداخت را انتخاب کنید.", Severity.Warning); @@ -101,7 +152,8 @@ public partial class ManualPaymentDialog var request = new CreateManualPaymentRequest { UserId = _selectedUserId.Value, - Amount = _createModel.Amount, + Amount = 0, // deprecated — مبلغ از پکیج خوانده می‌شود + PackageId = _selectedPackageId.Value, Type = (ManualPaymentType)_selectedType, Description = _description };