feat : add order home page query filter
parent
53a7bf501f
commit
7bfff18735
|
@ -9,53 +9,126 @@
|
||||||
@inject IUserUtility UserUtility
|
@inject IUserUtility UserUtility
|
||||||
@inject IRestWrapper RestWrapper
|
@inject IRestWrapper RestWrapper
|
||||||
|
|
||||||
<MudStack class="w-full p-8 min-h-screen bg-[--mud-palette-background-grey]">
|
<MudStack class="px-3 md:p-5 lg:px-8 w-full h-screen overflow-x-hidden overflow-y-scroll bg-[--mud-palette-background-grey]">
|
||||||
|
|
||||||
<MudGrid>
|
<MudHidden Breakpoint="Breakpoint.Xs">
|
||||||
<MudItem xs="12" sm="6" lg="3">
|
<MudGrid>
|
||||||
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
<MudItem xs="12" sm="6" lg="3">
|
||||||
<MudText Typo="Typo.body1" class="mb-4">سفارشات امروز</MudText>
|
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
||||||
|
<MudText Typo="Typo.body1" class="mb-4">سفارشات امروز</MudText>
|
||||||
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-amber-600"><b>@ViewModel.PageDto.TodayOrdersCount</b></MudText>
|
||||||
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" sm="6" lg="3">
|
||||||
|
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
||||||
|
<MudText Typo="Typo.body1" class="mb-4">سفارشات در انتظار تایید</MudText>
|
||||||
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-blue-600"><b>@ViewModel.PageDto.PayedOrdersCount</b></MudText>
|
||||||
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" sm="6" lg="3">
|
||||||
|
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
||||||
|
<MudText Typo="Typo.body1" class="mb-4">سفارشات ارسال نشده</MudText>
|
||||||
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-lime-600"><b>@ViewModel.PageDto.UnSendOrdersCount</b></MudText>
|
||||||
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" sm="6" lg="3">
|
||||||
|
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
||||||
|
<MudText Typo="Typo.body1" class="mb-4">مجموع سفارش ماه</MudText>
|
||||||
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-rose-600"><b>@ViewModel.PageDto.ThisMonthOrdersCount</b></MudText>
|
||||||
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
|
</MudPaper>
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
|
</MudHidden>
|
||||||
|
|
||||||
|
<MudHidden Breakpoint="Breakpoint.SmAndUp">
|
||||||
|
|
||||||
|
<MudStack Row="true" class="whitespace-nowrap overflow-x-scroll w-screen no-scrollbar">
|
||||||
|
|
||||||
|
<MudPaper class="w-fit p-3 m-2 rounded-md" Elevation="2">
|
||||||
|
<MudText Typo="Typo.body1" class="mb-6 ml-16">سفارشات امروز</MudText>
|
||||||
<MudText Typo="Typo.h3" Align="Align.Center" class="text-amber-600"><b>@ViewModel.PageDto.TodayOrdersCount</b></MudText>
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-amber-600"><b>@ViewModel.PageDto.TodayOrdersCount</b></MudText>
|
||||||
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" sm="6" lg="3">
|
<MudPaper class="w-fit p-3 m-2 rounded-md" Elevation="2">
|
||||||
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
<MudText Typo="Typo.body1" class="mb-6 ml-16">سفارشات در انتظار تایید</MudText>
|
||||||
<MudText Typo="Typo.body1" class="mb-4">سفارشات در انتظار تایید</MudText>
|
|
||||||
<MudText Typo="Typo.h3" Align="Align.Center" class="text-blue-600"><b>@ViewModel.PageDto.PayedOrdersCount</b></MudText>
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-blue-600"><b>@ViewModel.PageDto.PayedOrdersCount</b></MudText>
|
||||||
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" sm="6" lg="3">
|
<MudPaper class="w-fit p-3 m-2 rounded-md" Elevation="2">
|
||||||
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
<MudText Typo="Typo.body1" class="mb-6 ml-16">سفارشات ارسال نشده</MudText>
|
||||||
<MudText Typo="Typo.body1" class="mb-4">سفارشات ارسال نشده</MudText>
|
|
||||||
<MudText Typo="Typo.h3" Align="Align.Center" class="text-lime-600"><b>@ViewModel.PageDto.UnSendOrdersCount</b></MudText>
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-lime-600"><b>@ViewModel.PageDto.UnSendOrdersCount</b></MudText>
|
||||||
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudItem>
|
|
||||||
<MudItem xs="12" sm="6" lg="3">
|
<MudPaper class="w-fit p-3 m-2 rounded-md" Elevation="2">
|
||||||
<MudPaper class="p-3 m-2 rounded-md" Elevation="2">
|
<MudText Typo="Typo.body1" class="mb-6 ml-16">مجموع سفارش ماه</MudText>
|
||||||
<MudText Typo="Typo.body1" class="mb-4">مجموع سفارش ماه</MudText>
|
|
||||||
<MudText Typo="Typo.h3" Align="Align.Center" class="text-rose-600"><b>@ViewModel.PageDto.ThisMonthOrdersCount</b></MudText>
|
<MudText Typo="Typo.h3" Align="Align.Center" class="text-rose-600"><b>@ViewModel.PageDto.ThisMonthOrdersCount</b></MudText>
|
||||||
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</MudItem>
|
</MudStack>
|
||||||
</MudGrid>
|
</MudHidden>
|
||||||
<MudGrid>
|
<MudGrid>
|
||||||
<MudItem xs="12">
|
<MudItem xs="12">
|
||||||
|
|
||||||
<MudPaper>
|
<MudHidden Breakpoint="Breakpoint.SmAndUp">
|
||||||
|
<MudGrid class="mb-3" Row="true">
|
||||||
|
<MudItem xs="12" sm="6">
|
||||||
|
<MudTextField T="string" Placeholder="جست جو بر اساس کد فاکتور" OnClearButtonClick="@ViewModel.SearchAsync"
|
||||||
|
Adornment="Adornment.Start"
|
||||||
|
Immediate="true"
|
||||||
|
Clearable="true"
|
||||||
|
AdornmentIcon="@Icons.Material.Filled.Search"
|
||||||
|
IconSize="Size.Medium"
|
||||||
|
class="my-auto"
|
||||||
|
@bind-Value="@ViewModel.FactorCodeSearch"
|
||||||
|
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem xs="12" sm="6">
|
||||||
|
<MudSelect class="-mt-0.5" T="OrderStatus" Label="وظعیت سفارش" ToStringFunc="status => status.ToDisplay()" ValueChanged="@ViewModel.OrderStatusSearchChanged" Clearable="true" AnchorOrigin="Origin.BottomCenter">
|
||||||
|
<MudSelectItem Value="OrderStatus.Paid" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Submitted" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Delivered" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Done" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Canceled" />
|
||||||
|
</MudSelect>
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
|
</MudHidden>
|
||||||
|
<MudPaper class="!max-h-[80vh] overflow-auto">
|
||||||
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
|
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
|
||||||
T="OrderSDto" Items="@ViewModel.MainOrders" CurrentPage="@ViewModel.MainGridCurrentPage"
|
T="OrderSDto" Items="@ViewModel.MainOrders" CurrentPage="@ViewModel.MainGridCurrentPage"
|
||||||
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"
|
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"
|
||||||
SortMode="@SortMode.None" Groupable="false">
|
SortMode="@SortMode.None" Groupable="false">
|
||||||
|
|
||||||
<ToolBarContent>
|
<ToolBarContent>
|
||||||
@* <MudTextField T="string" Placeholder="جست جو بر اساس کد پیگیری" Adornment="Adornment.Start" Immediate="true"
|
<MudGrid class="md:visible collapse">
|
||||||
Clearable="true"
|
<MudItem md="6">
|
||||||
ValueChanged="@ViewModel.SearchChanged"
|
<MudTextField T="string" Placeholder="جست جو بر اساس کد فاکتور" OnClearButtonClick="@ViewModel.SearchAsync"
|
||||||
AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" class="my-auto"
|
Adornment="Adornment.Start"
|
||||||
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField> *@
|
Immediate="true"
|
||||||
|
Clearable="true"
|
||||||
|
AdornmentIcon="@Icons.Material.Filled.Search"
|
||||||
|
IconSize="Size.Medium"
|
||||||
|
class="my-auto"
|
||||||
|
@bind-Value="@ViewModel.FactorCodeSearch"
|
||||||
|
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField>
|
||||||
|
</MudItem>
|
||||||
|
<MudItem md="6">
|
||||||
|
<MudSelect class="-mt-0.5" T="OrderStatus" Label="وظعیت سفارش" ToStringFunc="status => status.ToDisplay()" ValueChanged="@ViewModel.OrderStatusSearchChanged" Clearable="true" AnchorOrigin="Origin.BottomCenter">
|
||||||
|
<MudSelectItem Value="OrderStatus.Paid" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Submitted" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Delivered" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Done" />
|
||||||
|
<MudSelectItem Value="OrderStatus.Canceled" />
|
||||||
|
</MudSelect>
|
||||||
|
</MudItem>
|
||||||
|
</MudGrid>
|
||||||
</ToolBarContent>
|
</ToolBarContent>
|
||||||
<Columns>
|
<Columns>
|
||||||
<PropertyColumn Title="کد سفارش" Property="arg => arg.FactorCode" />
|
<PropertyColumn Title="کد سفارش" Property="arg => arg.FactorCode" />
|
||||||
|
@ -91,7 +164,7 @@
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OrderStatus.Paid:
|
case OrderStatus.Paid:
|
||||||
<MudChip Variant="Variant.Filled" class="-my-4" Color="Color.Info" >@context.Item.OrderStatus.ToDisplay()</MudChip>
|
<MudChip Variant="Variant.Filled" class="-my-4" Color="Color.Info">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||||
break;
|
break;
|
||||||
case OrderStatus.Processing:
|
case OrderStatus.Processing:
|
||||||
<MudChip Variant="Variant.Filled" class="-my-4" Color="Color.Info">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
<MudChip Variant="Variant.Filled" class="-my-4" Color="Color.Info">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
||||||
throw new Exception("Token is null");
|
throw new Exception("Token is null");
|
||||||
IsProcessing = true;
|
IsProcessing = true;
|
||||||
MainOrders.Clear();
|
MainOrders.Clear();
|
||||||
var dto = await _restWrapper.OrderRestApi.ReadAll(MainGridCurrentPage, null, null, null,token);
|
var dto = await _restWrapper.OrderRestApi.ReadAll(MainGridCurrentPage,null, null, null, null,token);
|
||||||
dto.ForEach(d => MainOrders.Add(d));
|
dto.ForEach(d => MainOrders.Add(d));
|
||||||
if (MainOrders.Count == 15)
|
if (MainOrders.Count == 15)
|
||||||
MainGridPageCount = 2;
|
MainGridPageCount = 2;
|
||||||
|
@ -43,6 +43,11 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
||||||
catch (ApiException ex)
|
catch (ApiException ex)
|
||||||
{
|
{
|
||||||
var exe = await ex.GetContentAsAsync<ApiResult>();
|
var exe = await ex.GetContentAsAsync<ApiResult>();
|
||||||
|
if (ex.StatusCode == HttpStatusCode.Unauthorized)
|
||||||
|
{
|
||||||
|
await _userUtility.LogoutAsync();
|
||||||
|
_navigationManager.NavigateTo("login", true, true);
|
||||||
|
}
|
||||||
_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)
|
||||||
|
@ -71,7 +76,7 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
||||||
throw new Exception("Token is null");
|
throw new Exception("Token is null");
|
||||||
|
|
||||||
|
|
||||||
var dto = await _restWrapper.OrderRestApi.ReadAll(MainGridCurrentPage, null, null, null, token);
|
var dto = await _restWrapper.OrderRestApi.ReadAll(MainGridCurrentPage,FactorCodeSearch, null, _orderStatusSearch, null, token);
|
||||||
dto.ForEach(d => MainOrders.Add(d));
|
dto.ForEach(d => MainOrders.Add(d));
|
||||||
if (MainOrders.Count == 15)
|
if (MainOrders.Count == 15)
|
||||||
MainGridPageCount = MainGridCurrentPage + 2;
|
MainGridPageCount = MainGridCurrentPage + 2;
|
||||||
|
@ -94,7 +99,6 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task ShowClicked(OrderSDto order)
|
public async Task ShowClicked(OrderSDto order)
|
||||||
{
|
{
|
||||||
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.False, NoHeader = true, FullWidth = true, DisableBackdropClick = true };
|
DialogOptions maxWidth = new DialogOptions() { MaxWidth = MaxWidth.False, NoHeader = true, FullWidth = true, DisableBackdropClick = true };
|
||||||
|
@ -108,5 +112,50 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string? FactorCodeSearch { get; set; } = null;
|
||||||
|
private OrderStatus? _orderStatusSearch;
|
||||||
|
|
||||||
|
public async Task SearchAsync()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var token = await _userUtility.GetBearerTokenAsync();
|
||||||
|
if (token == null)
|
||||||
|
throw new Exception("Token is null");
|
||||||
|
IsProcessing = true;
|
||||||
|
MainOrders.Clear();
|
||||||
|
var dto = await _restWrapper.OrderRestApi.ReadAll(MainGridCurrentPage, FactorCodeSearch,null, _orderStatusSearch, null, token);
|
||||||
|
dto.ForEach(d => MainOrders.Add(d));
|
||||||
|
if (MainOrders.Count == 15)
|
||||||
|
MainGridPageCount = 2;
|
||||||
|
|
||||||
|
var orderDashboardDto = await _restWrapper.DashboardApiRest.GetOrdersDashboardAsync(token);
|
||||||
|
PageDto = orderDashboardDto;
|
||||||
|
}
|
||||||
|
catch (ApiException ex)
|
||||||
|
{
|
||||||
|
var exe = await ex.GetContentAsAsync<ApiResult>();
|
||||||
|
if (ex.StatusCode == HttpStatusCode.Unauthorized)
|
||||||
|
{
|
||||||
|
await _userUtility.LogoutAsync();
|
||||||
|
_navigationManager.NavigateTo("login", true, true);
|
||||||
|
}
|
||||||
|
_snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_snackbar.Add(e.Message, Severity.Error);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
|
||||||
|
IsProcessing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task OrderStatusSearchChanged(OrderStatus arg)
|
||||||
|
{
|
||||||
|
_orderStatusSearch = arg;
|
||||||
|
await SearchAsync();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -77,7 +77,7 @@
|
||||||
SortMode="@SortMode.None" Groupable="false">
|
SortMode="@SortMode.None" Groupable="false">
|
||||||
|
|
||||||
<ToolBarContent>
|
<ToolBarContent>
|
||||||
<MudGrid class="md:visible collapse" Row="true">
|
<MudGrid class="md:visible collapse">
|
||||||
|
|
||||||
<MudItem xs="12" sm="6">
|
<MudItem xs="12" sm="6">
|
||||||
<MudTextField T="string" Placeholder="جست جو بر اساس نام" Adornment="Adornment.Start" Immediate="true"
|
<MudTextField T="string" Placeholder="جست جو بر اساس نام" Adornment="Adornment.Start" Immediate="true"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
public interface IOrderRestApi
|
public interface IOrderRestApi
|
||||||
{
|
{
|
||||||
[Get("")]
|
[Get("")]
|
||||||
Task<List<OrderSDto>> ReadAll([Query]int page, [Query] long? selectedDate, [Query] OrderStatus? orderStatus, [Query] OrderQueryDateFilter? dateFilter, [Header("Authorization")] string authorization);
|
Task<List<OrderSDto>> ReadAll([Query]int page, [Query] string? factorCode, [Query] long? selectedDate, [Query] OrderStatus? orderStatus, [Query] OrderQueryDateFilter? dateFilter, [Header("Authorization")] string authorization);
|
||||||
|
|
||||||
[Get("/{id}")]
|
[Get("/{id}")]
|
||||||
Task<OrderLDto> ReadOne(Guid id, [Header("Authorization")] string authorization);
|
Task<OrderLDto> ReadOne(Guid id, [Header("Authorization")] string authorization);
|
||||||
|
|
|
@ -1313,9 +1313,6 @@ input:checked + .toggle-bg {
|
||||||
.min-h-\[33rem\] {
|
.min-h-\[33rem\] {
|
||||||
min-height: 33rem;
|
min-height: 33rem;
|
||||||
}
|
}
|
||||||
.min-h-screen {
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
.w-1\/2 {
|
.w-1\/2 {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
@ -2332,6 +2329,11 @@ code {
|
||||||
padding-left: 5rem;
|
padding-left: 5rem;
|
||||||
padding-right: 5rem;
|
padding-right: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lg\:px-8 {
|
||||||
|
padding-left: 2rem;
|
||||||
|
padding-right: 2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
||||||
|
|
|
@ -2673,6 +2673,11 @@ code {
|
||||||
padding-left: 5rem;
|
padding-left: 5rem;
|
||||||
padding-right: 5rem;
|
padding-right: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lg\:px-8 {
|
||||||
|
padding-left: 2rem;
|
||||||
|
padding-right: 2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
||||||
|
|
Loading…
Reference in New Issue