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;