feat : add order home page query filter
parent
53a7bf501f
commit
7bfff18735
|
@ -9,53 +9,126 @@
|
|||
@inject IUserUtility UserUtility
|
||||
@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]">
|
||||
|
||||
<MudHidden Breakpoint="Breakpoint.Xs">
|
||||
<MudGrid>
|
||||
<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-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">
|
||||
|
||||
<MudGrid>
|
||||
<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>
|
||||
<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.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>
|
||||
|
||||
<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-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>
|
||||
|
||||
<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-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>
|
||||
|
||||
<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-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>
|
||||
</MudStack>
|
||||
</MudHidden>
|
||||
<MudGrid>
|
||||
<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"
|
||||
T="OrderSDto" Items="@ViewModel.MainOrders" CurrentPage="@ViewModel.MainGridCurrentPage"
|
||||
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"
|
||||
SortMode="@SortMode.None" Groupable="false">
|
||||
|
||||
<ToolBarContent>
|
||||
@* <MudTextField T="string" Placeholder="جست جو بر اساس کد پیگیری" Adornment="Adornment.Start" Immediate="true"
|
||||
Clearable="true"
|
||||
ValueChanged="@ViewModel.SearchChanged"
|
||||
AdornmentIcon="@Icons.Material.Filled.Search" IconSize="Size.Medium" class="my-auto"
|
||||
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField> *@
|
||||
<MudGrid class="md:visible collapse">
|
||||
<MudItem md="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 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>
|
||||
<Columns>
|
||||
<PropertyColumn Title="کد سفارش" Property="arg => arg.FactorCode" />
|
||||
|
@ -91,20 +164,20 @@
|
|||
break;
|
||||
|
||||
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;
|
||||
case OrderStatus.Processing:
|
||||
<MudChip Variant="Variant.Filled" class="-my-4" Color="Color.Info">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||
break;
|
||||
|
||||
|
||||
case OrderStatus.Delivered:
|
||||
<MudChip Variant="Variant.Text" class="-my-4" Color="Color.Success">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||
break;
|
||||
|
||||
|
||||
case OrderStatus.Done:
|
||||
<MudChip Variant="Variant.Text" class="-my-4" Color="Color.Success">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||
break;
|
||||
|
||||
|
||||
case OrderStatus.Canceled:
|
||||
<MudChip Variant="Variant.Text" class="-my-4" Color="Color.Error">@context.Item.OrderStatus.ToDisplay()</MudChip>
|
||||
break;
|
||||
|
|
|
@ -32,7 +32,7 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
|||
throw new Exception("Token is null");
|
||||
IsProcessing = true;
|
||||
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));
|
||||
if (MainOrders.Count == 15)
|
||||
MainGridPageCount = 2;
|
||||
|
@ -43,6 +43,11 @@ public class OrdersPageViewModel : BaseViewModel<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)
|
||||
|
@ -71,7 +76,7 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
|||
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));
|
||||
if (MainOrders.Count == 15)
|
||||
MainGridPageCount = MainGridCurrentPage + 2;
|
||||
|
@ -94,7 +99,6 @@ public class OrdersPageViewModel : BaseViewModel<OrderDashboardDto>
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task ShowClicked(OrderSDto order)
|
||||
{
|
||||
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">
|
||||
|
||||
<ToolBarContent>
|
||||
<MudGrid class="md:visible collapse" Row="true">
|
||||
<MudGrid class="md:visible collapse">
|
||||
|
||||
<MudItem xs="12" sm="6">
|
||||
<MudTextField T="string" Placeholder="جست جو بر اساس نام" Adornment="Adornment.Start" Immediate="true"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
public interface IOrderRestApi
|
||||
{
|
||||
[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}")]
|
||||
Task<OrderLDto> ReadOne(Guid id, [Header("Authorization")] string authorization);
|
||||
|
|
|
@ -1313,9 +1313,6 @@ input:checked + .toggle-bg {
|
|||
.min-h-\[33rem\] {
|
||||
min-height: 33rem;
|
||||
}
|
||||
.min-h-screen {
|
||||
min-height: 100vh;
|
||||
}
|
||||
.w-1\/2 {
|
||||
width: 50%;
|
||||
}
|
||||
|
@ -2332,6 +2329,11 @@ code {
|
|||
padding-left: 5rem;
|
||||
padding-right: 5rem;
|
||||
}
|
||||
|
||||
.lg\:px-8 {
|
||||
padding-left: 2rem;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
||||
|
|
|
@ -2673,6 +2673,11 @@ code {
|
|||
padding-left: 5rem;
|
||||
padding-right: 5rem;
|
||||
}
|
||||
|
||||
.lg\:px-8 {
|
||||
padding-left: 2rem;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.rtl\:rotate-180:where([dir="rtl"], [dir="rtl"] *) {
|
||||
|
|
Loading…
Reference in New Issue