diff --git a/src/FrontOffice.Main/Pages/Profile/AddressDialog.razor b/src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor
similarity index 91%
rename from src/FrontOffice.Main/Pages/Profile/AddressDialog.razor
rename to src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor
index 322077f..260d7cc 100644
--- a/src/FrontOffice.Main/Pages/Profile/AddressDialog.razor
+++ b/src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor
@@ -1,7 +1,7 @@
- @(IsEdit ? "ویرایش آدرس" : "افزودن آدرس جدید")
+ افزودن آدرس جدید
@@ -46,7 +46,7 @@
OnClick="SaveAddress"
Disabled="_isSaving"
FullWidth="true">
- @(IsEdit ? "ویرایش آدرس" : "افزودن آدرس")
+ افزودن آدرس
\ No newline at end of file
diff --git a/src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor.cs b/src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor.cs
new file mode 100644
index 0000000..3807eb3
--- /dev/null
+++ b/src/FrontOffice.Main/Pages/Profile/Components/AddAddressDialog.razor.cs
@@ -0,0 +1,45 @@
+using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
+using FrontOffice.BFF.UserAddress.Protobuf.Validator;
+using Microsoft.AspNetCore.Components;
+using MudBlazor;
+using Severity = MudBlazor.Severity;
+
+namespace FrontOffice.Main.Pages.Profile.Components;
+
+public partial class AddAddressDialog : ComponentBase
+{
+ [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = default!;
+ [Inject] private UserAddressContract.UserAddressContractClient UserAddressContract { get; set; } = default!;
+
+ private MudForm? _form;
+ private readonly CreateNewUserAddressRequestValidator _validator = new();
+ private bool _isSaving;
+ private CreateNewUserAddressRequest _request = new();
+
+ private async Task SaveAddress()
+ {
+ if (_form == null) return;
+
+ await _form.Validate();
+ if (!_form.IsValid) return;
+
+ _isSaving = true;
+ try
+ {
+ var response = await UserAddressContract.CreateNewUserAddressAsync(_request);
+ Snackbar.Add("آدرس با موفقیت اضافه شد.", Severity.Success);
+ MudDialog.Close(DialogResult.Ok(true));
+ }
+ catch (Exception ex)
+ {
+ Snackbar.Add($"خطا: {ex.Message}", Severity.Error);
+ }
+ finally
+ {
+ _isSaving = false;
+ await InvokeAsync(StateHasChanged);
+ }
+ }
+
+ private void Cancel() => MudDialog.Cancel();
+}
\ No newline at end of file
diff --git a/src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor b/src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor
new file mode 100644
index 0000000..40e96b4
--- /dev/null
+++ b/src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor
@@ -0,0 +1,52 @@
+
+
+ ویرایش آدرس
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ لغو
+
+ ذخیره تغییرات
+
+
+
\ No newline at end of file
diff --git a/src/FrontOffice.Main/Pages/Profile/AddressDialog.razor.cs b/src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor.cs
similarity index 63%
rename from src/FrontOffice.Main/Pages/Profile/AddressDialog.razor.cs
rename to src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor.cs
index 414acff..00391d6 100644
--- a/src/FrontOffice.Main/Pages/Profile/AddressDialog.razor.cs
+++ b/src/FrontOffice.Main/Pages/Profile/Components/EditAddressDialog.razor.cs
@@ -5,26 +5,27 @@ using Microsoft.AspNetCore.Components;
using MudBlazor;
using Severity = MudBlazor.Severity;
-namespace FrontOffice.Main.Pages.Profile;
+namespace FrontOffice.Main.Pages.Profile.Components;
-public partial class AddressDialog : ComponentBase
+public partial class EditAddressDialog : ComponentBase
{
[CascadingParameter] private MudDialogInstance MudDialog { get; set; } = default!;
[Inject] private UserAddressContract.UserAddressContractClient UserAddressContract { get; set; } = default!;
[Parameter] public GetAllUserAddressByFilterResponseModel? Model { get; set; }
- [Parameter] public bool IsEdit { get; set; }
private MudForm? _form;
private readonly UpdateUserAddressRequestValidator _validator = new();
private bool _isSaving;
private UpdateUserAddressRequest _request = new();
+
protected override void OnInitialized()
{
base.OnInitialized();
if (Model != null)
_request = Model.Adapt();
}
+
private async Task SaveAddress()
{
if (_form == null) return;
@@ -35,19 +36,9 @@ public partial class AddressDialog : ComponentBase
_isSaving = true;
try
{
- if (IsEdit)
- {
- await UserAddressContract.UpdateUserAddressAsync(_request);
- Snackbar.Add("آدرس با موفقیت ویرایش شد.", Severity.Success);
- MudDialog.Close(DialogResult.Ok(true));
- }
- else
- {
- var createRequest = _request.Adapt();
- var response = await UserAddressContract.CreateNewUserAddressAsync(createRequest);
- Snackbar.Add("آدرس با موفقیت اضافه شد.", Severity.Success);
- MudDialog.Close(DialogResult.Ok(true));
- }
+ await UserAddressContract.UpdateUserAddressAsync(_request);
+ Snackbar.Add("آدرس با موفقیت ویرایش شد.", Severity.Success);
+ MudDialog.Close(DialogResult.Ok(true));
}
catch (Exception ex)
{
diff --git a/src/FrontOffice.Main/Pages/Profile/Index.razor.cs b/src/FrontOffice.Main/Pages/Profile/Index.razor.cs
index e0c05a9..1ea6aba 100644
--- a/src/FrontOffice.Main/Pages/Profile/Index.razor.cs
+++ b/src/FrontOffice.Main/Pages/Profile/Index.razor.cs
@@ -3,6 +3,7 @@ using FrontOffice.BFF.User.Protobuf.Protos.User;
using FrontOffice.BFF.User.Protobuf.Validator;
using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
using FrontOffice.BFF.UserAddress.Protobuf.Validator;
+using FrontOffice.Main.Pages.Profile.Components;
using FrontOffice.Main.Utilities;
using Mapster;
using Microsoft.AspNetCore.Components;
@@ -186,11 +187,7 @@ public partial class Index
private async Task OpenAddAddressDialog()
{
- _newAddressRequest = new CreateNewUserAddressRequest();
- var dialog = await DialogService.ShowAsync("افزودن آدرس جدید", new DialogParameters
- {
- { x => x.IsEdit, false }
- });
+ var dialog = await DialogService.ShowAsync("افزودن آدرس جدید");
var result = await dialog.Result;
if (!result.Canceled)
@@ -201,10 +198,9 @@ public partial class Index
private async Task OpenEditAddressDialog(GetAllUserAddressByFilterResponseModel address)
{
- var dialog = await DialogService.ShowAsync("ویرایش آدرس", new DialogParameters
+ var dialog = await DialogService.ShowAsync("ویرایش آدرس", new DialogParameters
{
- { x => x.Model, address },
- { x => x.IsEdit, true }
+ { x => x.Model, address }
});
var result = await dialog.Result;