fix(CancelOrder)

subProduct
Amir Hossein Khademi 2024-08-06 10:30:01 +03:30
parent 80abffa292
commit 956b0421b2
4 changed files with 76 additions and 48 deletions

View File

@ -199,6 +199,7 @@
<BaseButtonUi class="h-12 w-full rounded-md" IsProcessing="@ViewModel.IsProcessing" <BaseButtonUi class="h-12 w-full rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.RemoveCircle" Icon="@Icons.Material.Outlined.RemoveCircle"
Variant="Variant.Outlined" Color="Color.Error" Variant="Variant.Outlined" Color="Color.Error"
OnClickCallback="ViewModel.CancelAsync"
Content="لغو سفارش" /> Content="لغو سفارش" />
</MudItem> </MudItem>

View File

@ -259,4 +259,41 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
} }
} }
}
public async Task CancelAsync()
{
var reference = await _dialogService.ShowQuestionDialog($"ایا از کنسل کردن سفارش اطمینان دارید ?");
var result = await reference.Result;
if (!result.Canceled)
{
try
{
var token = await _userUtility.GetBearerTokenAsync();
if (token == null)
throw new Exception("Token is null");
IsProcessing = true;
await _restWrapper.OrderRestApi.CancelOrderStepAsync(PageDto.Id, token);
_snackbar.Add($"سفارش {PageDto.FactorCode} کنسل شد", Severity.Warning);
_mudDialog.Close(true);
}
catch (ApiException ex)
{
var exe = await ex.GetContentAsAsync<ApiResult>();
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
_mudDialog.Cancel();
}
catch (Exception e)
{
_snackbar.Add(e.Message, Severity.Error);
_mudDialog.Cancel();
}
finally
{
IsProcessing = false;
}
}
}
}

View File

@ -2,14 +2,17 @@
namespace Netina.AdminPanel.PWA.Pages; namespace Netina.AdminPanel.PWA.Pages;
public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductSDto>> public class ProductsPageViewModel(
NavigationManager navigationManager,
ISnackbar snackbar,
IUserUtility userUtility,
IRestWrapper restWrapper,
IDialogService dialogService,
IBrowserViewportService browserViewportService)
: BaseViewModel<ObservableCollection<ProductSDto>>(userUtility)
{ {
private readonly NavigationManager _navigationManager; private readonly NavigationManager _navigationManager = navigationManager;
private readonly ISnackbar _snackbar; private readonly IUserUtility _userUtility = userUtility;
private readonly IUserUtility _userUtility;
private readonly IDialogService _dialogService;
private readonly IBrowserViewportService _browserViewportService;
private readonly IRestWrapper _restWrapper;
public string? Search = string.Empty; public string? Search = string.Empty;
public int CurrentPage = 0; public int CurrentPage = 0;
@ -18,22 +21,6 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public bool IsXs = false; public bool IsXs = false;
public bool IsEnable { get; set; } = true; public bool IsEnable { get; set; } = true;
public ProductsPageViewModel(NavigationManager navigationManager,
ISnackbar snackbar,
IUserUtility userUtility,
IRestWrapper restWrapper,
IDialogService dialogService,
IBrowserViewportService browserViewportService) : base(userUtility)
{
_navigationManager = navigationManager;
_snackbar = snackbar;
_userUtility = userUtility;
_restWrapper = restWrapper;
_dialogService = dialogService;
_browserViewportService = browserViewportService;
}
public override async Task InitializeAsync() public override async Task InitializeAsync()
{ {
await GetEntitiesAsync(); await GetEntitiesAsync();
@ -50,21 +37,21 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
IsProcessing = true; IsProcessing = true;
PageDto.Clear(); PageDto.Clear();
var search = Search.IsNullOrEmpty() ? null : Search; var search = Search.IsNullOrEmpty() ? null : Search;
var dto = await _restWrapper.ProductRestApi.ReadAll(CurrentPage, search, SelectedCategory?.Id, IsEnable); var dto = await restWrapper.ProductRestApi.ReadAll(CurrentPage, search, SelectedCategory?.Id, IsEnable);
dto.Products.ForEach(d => PageDto.Add(d)); dto.Products.ForEach(d => PageDto.Add(d));
if (PageDto.Count % 20 == 0) if (PageDto.Count % 20 == 0)
PageCount = CurrentPage + 2; PageCount = CurrentPage + 2;
TotalItems = dto.Pager.TotalItems; TotalItems = dto.Pager.TotalItems;
IsXs = (await _browserViewportService.GetCurrentBreakpointAsync()) == Breakpoint.Xs; IsXs = (await browserViewportService.GetCurrentBreakpointAsync()) == Breakpoint.Xs;
} }
catch (ApiException ex) catch (ApiException ex)
{ {
var exe = await ex.GetContentAsAsync<ApiResult>(); var exe = await ex.GetContentAsAsync<ApiResult>();
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
} }
catch (Exception e) catch (Exception e)
{ {
_snackbar.Add(e.Message, Severity.Error); snackbar.Add(e.Message, Severity.Error);
} }
finally finally
{ {
@ -82,10 +69,10 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public async Task AddProductClicked() public async Task AddProductClicked()
{ {
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, DisableBackdropClick = true }; DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, DisableBackdropClick = true };
var breakPoint = await _browserViewportService.GetCurrentBreakpointAsync(); var breakPoint = await browserViewportService.GetCurrentBreakpointAsync();
if (breakPoint == Breakpoint.Xs) if (breakPoint == Breakpoint.Xs)
maxWidth = new DialogOptions { FullScreen = true, CloseButton = true }; maxWidth = new DialogOptions { FullScreen = true, CloseButton = true };
var dialogResult = await _dialogService.ShowAsync<ProductActionDialogBox>("افزودن محصول جدید", maxWidth); var dialogResult = await dialogService.ShowAsync<ProductActionDialogBox>("افزودن محصول جدید", maxWidth);
var result = await dialogResult.Result; var result = await dialogResult.Result;
if (!result.Canceled && result.Data is bool and true) if (!result.Canceled && result.Data is bool and true)
{ {
@ -97,10 +84,10 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public async Task AddFastProductClicked() public async Task AddFastProductClicked()
{ {
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, NoHeader = true, DisableBackdropClick = true, CloseButton = true }; DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, NoHeader = true, DisableBackdropClick = true, CloseButton = true };
var breakPoint = await _browserViewportService.GetCurrentBreakpointAsync(); var breakPoint = await browserViewportService.GetCurrentBreakpointAsync();
if (breakPoint == Breakpoint.Xs) if (breakPoint == Breakpoint.Xs)
maxWidth = new DialogOptions { FullScreen = true, NoHeader = true, CloseButton = true }; maxWidth = new DialogOptions { FullScreen = true, NoHeader = true, CloseButton = true };
var dialogResult = await _dialogService.ShowAsync<FastProductCreateDialogBox>("افزودن محصول جدید", maxWidth); var dialogResult = await dialogService.ShowAsync<FastProductCreateDialogBox>("افزودن محصول جدید", maxWidth);
var result = await dialogResult.Result; var result = await dialogResult.Result;
if (!result.Canceled && result.Data is bool and true) if (!result.Canceled && result.Data is bool and true)
{ {
@ -111,7 +98,7 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
{ {
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true }; DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true };
var dialogResult = await _dialogService.ShowAsync<DigikalaProductActionDialogBox>("افزودن محصول جدید", maxWidth); var dialogResult = await dialogService.ShowAsync<DigikalaProductActionDialogBox>("افزودن محصول جدید", maxWidth);
var result = await dialogResult.Result; var result = await dialogResult.Result;
if (!result.Canceled && result.Data is bool and true) if (!result.Canceled && result.Data is bool and true)
{ {
@ -122,12 +109,12 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public async Task EditProductClicked(ProductSDto product) public async Task EditProductClicked(ProductSDto product)
{ {
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, DisableBackdropClick = true }; DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.Large, FullWidth = true, DisableBackdropClick = true };
var breakPoint = await _browserViewportService.GetCurrentBreakpointAsync(); var breakPoint = await browserViewportService.GetCurrentBreakpointAsync();
if (breakPoint == Breakpoint.Xs) if (breakPoint == Breakpoint.Xs)
maxWidth = new DialogOptions { FullScreen = true, CloseButton = true }; maxWidth = new DialogOptions { FullScreen = true, CloseButton = true };
var parameters = new DialogParameters<ProductActionDialogBox>(); var parameters = new DialogParameters<ProductActionDialogBox>();
parameters.Add(x => x.Product, product); parameters.Add(x => x.Product, product);
var dialogResult = await _dialogService.ShowAsync<ProductActionDialogBox>($"ویرایش محصول {product.PersianName}", parameters, maxWidth); var dialogResult = await dialogService.ShowAsync<ProductActionDialogBox>($"ویرایش محصول {product.PersianName}", parameters, maxWidth);
var result = await dialogResult.Result; var result = await dialogResult.Result;
if (!result.Canceled && result.Data is bool and true) if (!result.Canceled && result.Data is bool and true)
{ {
@ -137,7 +124,7 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
public async Task DeleteProductAsync(Guid selectedCategoryId) public async Task DeleteProductAsync(Guid selectedCategoryId)
{ {
var reference = await _dialogService.ShowQuestionDialog($"آیا از حذف محصول اطمینان دارید ?"); var reference = await dialogService.ShowQuestionDialog($"آیا از حذف محصول اطمینان دارید ?");
var result = await reference.Result; var result = await reference.Result;
if (!result.Canceled) if (!result.Canceled)
{ {
@ -147,20 +134,20 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
IsProcessing = true; IsProcessing = true;
var token = await _userUtility.GetBearerTokenAsync(); var token = await _userUtility.GetBearerTokenAsync();
await _restWrapper.CrudDtoApiRest<Product, ProductSDto, Guid>(Address.ProductController) await restWrapper.CrudDtoApiRest<Product, ProductSDto, Guid>(Address.ProductController)
.Delete(selectedCategoryId, token); .Delete(selectedCategoryId, token);
_snackbar.Add("حذف محصول با موفقیت انجام شد", Severity.Success); snackbar.Add("حذف محصول با موفقیت انجام شد", Severity.Success);
await InitializeAsync(); await InitializeAsync();
} }
catch (ApiException ex) catch (ApiException ex)
{ {
var exe = await ex.GetContentAsAsync<ApiResult>(); var exe = await ex.GetContentAsAsync<ApiResult>();
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
} }
catch (Exception e) catch (Exception e)
{ {
_snackbar.Add(e.Message, Severity.Error); snackbar.Add(e.Message, Severity.Error);
} }
finally finally
{ {
@ -185,22 +172,22 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
try try
{ {
if (category.IsNullOrEmpty()) if (category.IsNullOrEmpty())
_productCategories = await _restWrapper.ProductCategoryRestApi.ReadAll(0); _productCategories = await restWrapper.ProductCategoryRestApi.ReadAll(0);
else else
_productCategories = await _restWrapper.ProductCategoryRestApi.ReadAll(category); _productCategories = await restWrapper.ProductCategoryRestApi.ReadAll(category);
return _productCategories; return _productCategories;
} }
catch (ApiException ex) catch (ApiException ex)
{ {
var exe = await ex.GetContentAsAsync<ApiResult>(); var exe = await ex.GetContentAsAsync<ApiResult>();
if (exe != null) if (exe != null)
_snackbar.Add(exe.Message, Severity.Error); snackbar.Add(exe.Message, Severity.Error);
_snackbar.Add(ex.Content, Severity.Error); snackbar.Add(ex.Content, Severity.Error);
return _productCategories; return _productCategories;
} }
catch (Exception e) catch (Exception e)
{ {
_snackbar.Add(e.Message, Severity.Error); snackbar.Add(e.Message, Severity.Error);
return _productCategories; return _productCategories;
} }
} }
@ -224,16 +211,16 @@ public class ProductsPageViewModel : BaseViewModel<ObservableCollection<ProductS
var token = await _userUtility.GetBearerTokenAsync(); var token = await _userUtility.GetBearerTokenAsync();
if (token == null) if (token == null)
throw new Exception("Token is null"); throw new Exception("Token is null");
await _restWrapper.ProductRestApi.ChangeDisplayedAsync(product.Id, product.BeDisplayed, token); await restWrapper.ProductRestApi.ChangeDisplayedAsync(product.Id, product.BeDisplayed, token);
} }
catch (ApiException ex) catch (ApiException ex)
{ {
var exe = await ex.GetContentAsAsync<ApiResult>(); var exe = await ex.GetContentAsAsync<ApiResult>();
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
} }
catch (Exception e) catch (Exception e)
{ {
_snackbar.Add(e.Message, Severity.Error); snackbar.Add(e.Message, Severity.Error);
} }
} }

View File

@ -16,6 +16,9 @@ public interface IOrderRestApi
[Post("/{id}/confirm")] [Post("/{id}/confirm")]
Task<bool> ConfirmOrderStepAsync(Guid id,[Query] OrderStatus nextOrderStatus, [Header("Authorization")] string authorization); Task<bool> ConfirmOrderStepAsync(Guid id,[Query] OrderStatus nextOrderStatus, [Header("Authorization")] string authorization);
[Post("/{id}/cancel")]
Task<bool> CancelOrderStepAsync(Guid id ,[Header("Authorization")] string authorization);
[Post("/{id}/confirm")] [Post("/{id}/confirm")]
Task<bool> ConfirmOrderStepAsync(Guid id, [Query] OrderStatus nextOrderStatus, [Query]string trackingCode, [Header("Authorization")] string authorization); Task<bool> ConfirmOrderStepAsync(Guid id, [Query] OrderStatus nextOrderStatus, [Query]string trackingCode, [Header("Authorization")] string authorization);
} }