From c243b59113444c423cf0d1316053eb8bcdd85a1e Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Tue, 25 Aug 2026 21:40:38 +0330 Subject: [PATCH] feat(address): enhance address management in checkout and summary components - Updated the Checkout and CheckoutSummary components to allow users to add new addresses directly from the interface, improving accessibility and user experience. - Introduced dialog functionality for adding and editing addresses, streamlining the address management process. - Removed the calculation of order PV from the OrderDetail component, simplifying the order details view and improving performance. These changes enhance the usability of the checkout process by making address management more intuitive and efficient. --- docs/CUSTOMER-SERVICES.md | 1 - .../Pages/DiscountStore/Checkout.razor | 26 +++++++++++++----- .../Pages/DiscountStore/Checkout.razor.cs | 27 +++++++++++++++++++ .../Pages/Store/CheckoutSummary.razor | 26 +++++++++++++----- .../Pages/Store/CheckoutSummary.razor.cs | 27 +++++++++++++++++++ .../Pages/Store/OrderDetail.razor | 24 ----------------- .../Pages/Store/OrderDetail.razor.cs | 6 ----- .../Utilities/OrderService.cs | 18 ------------- 8 files changed, 94 insertions(+), 61 deletions(-) diff --git a/docs/CUSTOMER-SERVICES.md b/docs/CUSTOMER-SERVICES.md index 05ff8bd..41a173e 100644 --- a/docs/CUSTOMER-SERVICES.md +++ b/docs/CUSTOMER-SERVICES.md @@ -101,7 +101,6 @@ | 6.6 | `UserOrderContract.SubmitShopBuyOrder` | `UserOrderContract` | `/checkout-summary` | ثبت سفارش و پرداخت از کیف پول | | 6.7 | `OrderService.GetOrdersAsync` | `UserOrderContract.GetCustomerOrders` | `/orders` | لیست سفارش‌های کاربر | | 6.8 | `OrderService.GetOrderAsync` | `UserOrderContract.GetCustomerOrder` | `/order/{id}`, `/order-tracking/{id}` | جزئیات یک سفارش | -| 6.9 | `OrderService.CalculateOrderPVAsync` | `UserOrderContract.CalculateOrderPV` | `/order/{id}` | محاسبه PV سفارش | | 6.10 | `VATService.GetRateAsync` | `UserOrderContract` (via scope) | Store/Discount صفحات قیمت | نرخ مالیات بر ارزش افزوده (کش روزانه) | | 6.11 | `WalletService.GetBalancesAsync` | `UserWalletContract` | `/checkout-summary` | بررسی موجودی برای پرداخت سفارش | diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor index beba9e2..c455966 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor +++ b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor @@ -22,9 +22,11 @@ else if (_addresses.Count == 0) { - هیچ آدرسی ثبت نشده است. لطفاً از بخش پروفایل آدرس خود را اضافه کنید. + هیچ آدرسی ثبت نشده است. می‌توانید همین‌جا آدرس جدید اضافه کنید. - افزودن آدرس + افزودن آدرس } else { @@ -41,13 +43,25 @@ @address.Title @address.Address - @if (address.IsDefault) - { - پیش‌فرض - } + + @if (address.IsDefault) + { + پیش‌فرض + } + + + + } + افزودن آدرس جدید } diff --git a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs index 1185e0b..3068fb4 100644 --- a/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs +++ b/src/FrontOffice.Main/Pages/DiscountStore/Checkout.razor.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Components; using CMSMicroservice.Protobuf.Protos.UserAddress; +using FrontOffice.Main.Pages.Profile.Components; using FrontOffice.Main.Utilities; using MudBlazor; @@ -61,12 +62,14 @@ public partial class Checkout else { _addresses = new(); + _selectedAddress = null; } } catch (Exception ex) { Snackbar.Add($"خطا در بارگذاری آدرس‌ها: {ex.Message}", Severity.Error); _addresses = new(); + _selectedAddress = null; } finally { @@ -75,6 +78,30 @@ public partial class Checkout } } + private async Task OpenAddAddressDialog() + { + var dialog = await DialogService.ShowAsync("افزودن آدرس جدید"); + var result = await dialog.Result; + if (result is { Canceled: false }) + { + await AuthService.RefreshTokenAsync(); + await LoadAddresses(); + } + } + + private async Task OpenEditAddressDialog(CustomerAddressModel address) + { + var dialog = await DialogService.ShowAsync("ویرایش آدرس", new DialogParameters + { + { x => x.Model, address } + }); + var result = await dialog.Result; + if (result is { Canceled: false }) + { + await LoadAddresses(); + } + } + private async Task PlaceOrder() { if (!CanPlaceOrder || _selectedAddress is null) diff --git a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor index b894fb3..9fcf078 100644 --- a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor +++ b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor @@ -21,9 +21,11 @@ else if (_addresses.Count == 0) { - هیچ آدرسی ثبت نشده است. لطفاً از بخش پروفایل آدرس خود را اضافه کنید. + هیچ آدرسی ثبت نشده است. می‌توانید همین‌جا آدرس جدید اضافه کنید. - افزودن آدرس + افزودن آدرس } else { @@ -40,13 +42,25 @@ @address.Title @address.Address - @if (address.IsDefault) - { - پیش‌فرض - } + + @if (address.IsDefault) + { + پیش‌فرض + } + + + + } + افزودن آدرس جدید } diff --git a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs index 0c8aedf..479c633 100644 --- a/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs +++ b/src/FrontOffice.Main/Pages/Store/CheckoutSummary.razor.cs @@ -1,5 +1,6 @@ using CMSMicroservice.Protobuf.Protos.UserAddress; using CMSMicroservice.Protobuf.Protos.UserOrder; +using FrontOffice.Main.Pages.Profile.Components; using FrontOffice.Main.Shared; using FrontOffice.Main.Utilities; using Microsoft.AspNetCore.Components; @@ -72,12 +73,14 @@ public partial class CheckoutSummary : ComponentBase else { _addresses = new(); + _selectedAddress = null; } } catch (Exception ex) { Snackbar.Add($"خطا در بارگذاری آدرس‌ها: {ex.Message}", Severity.Error); _addresses = new(); + _selectedAddress = null; } finally { @@ -86,6 +89,30 @@ public partial class CheckoutSummary : ComponentBase } } + private async Task OpenAddAddressDialog() + { + var dialog = await DialogService.ShowAsync("افزودن آدرس جدید"); + var result = await dialog.Result; + if (result is { Canceled: false }) + { + await AuthService.RefreshTokenAsync(); + await LoadAddresses(); + } + } + + private async Task OpenEditAddressDialog(CustomerAddressModel address) + { + var dialog = await DialogService.ShowAsync("ویرایش آدرس", new DialogParameters + { + { x => x.Model, address } + }); + var result = await dialog.Result; + if (result is { Canceled: false }) + { + await LoadAddresses(); + } + } + private async Task PlaceOrder() { if (!CanPlaceOrder || _selectedAddress is null) diff --git a/src/FrontOffice.Main/Pages/Store/OrderDetail.razor b/src/FrontOffice.Main/Pages/Store/OrderDetail.razor index abfd053..d94751d 100644 --- a/src/FrontOffice.Main/Pages/Store/OrderDetail.razor +++ b/src/FrontOffice.Main/Pages/Store/OrderDetail.razor @@ -112,30 +112,6 @@ else } - - @* نمایش PV سفارش *@ - @if (_pvData != null && _pvData.TotalPv > 0) - { - - - - - امتیاز فروش (PV) - - @foreach (var product in _pvData.Products) - { - - @product.ProductTitle × @product.Quantity - @string.Format("{0:N0}", product.TotalPv) PV - - } - - - جمع PV: - @string.Format("{0:N0}", _pvData.TotalPv) PV - - - } diff --git a/src/FrontOffice.Main/Pages/Store/OrderDetail.razor.cs b/src/FrontOffice.Main/Pages/Store/OrderDetail.razor.cs index a8ed6fa..ec8abbf 100644 --- a/src/FrontOffice.Main/Pages/Store/OrderDetail.razor.cs +++ b/src/FrontOffice.Main/Pages/Store/OrderDetail.razor.cs @@ -12,17 +12,12 @@ public partial class OrderDetail : ComponentBase [Parameter] public long id { get; set; } private GetUserOrderResponse? _order; - private CalculateOrderPVResponse? _pvData; private bool _loading; protected override async Task OnParametersSetAsync() { _loading = true; _order = await OrderService.GetOrderAsync(id); - if (_order != null) - { - _pvData = await OrderService.CalculateOrderPVAsync(id); - } _loading = false; } @@ -52,4 +47,3 @@ public partial class OrderDetail : ComponentBase private static string GetProductImageUrl(string? imageUrl) => string.IsNullOrWhiteSpace(imageUrl) ? "/images/product-placeholder.svg" : imageUrl.TrimStart('/'); } - diff --git a/src/FrontOffice.Main/Utilities/OrderService.cs b/src/FrontOffice.Main/Utilities/OrderService.cs index 39d9cfb..5f3ca8f 100644 --- a/src/FrontOffice.Main/Utilities/OrderService.cs +++ b/src/FrontOffice.Main/Utilities/OrderService.cs @@ -97,22 +97,4 @@ public class OrderService return 0.10; } } - - /// - /// محاسبه PV سفارش - /// - public async Task CalculateOrderPVAsync(long orderId) - { - try - { - return await _userOrderContractClient.CalculateOrderPVAsync(new CalculateOrderPVRequest - { - OrderId = orderId - }); - } - catch - { - return null; - } - } } \ No newline at end of file