feat : add delivery tracking code

release
Amir Hossein Khademi 2024-04-13 22:20:58 +03:30
parent 08c116aece
commit 64a4510445
15 changed files with 370 additions and 168 deletions

View File

@ -71,7 +71,7 @@
<MudNavGroup Title="تنظیماتـــ" Expanded="false"
Icon="@Icons.Material.Outlined.Settings">
<MudNavLink Href="management/shop" Icon="@Icons.Material.Filled.Shop2">فروشگاه</MudNavLink>
<MudNavLink Href="users" Icon="@Icons.Material.Filled.ManageAccounts">نقش ها و کاربران</MudNavLink>
<MudNavLink Href="setting/users" Icon="@Icons.Material.Filled.ManageAccounts">نقش ها و کاربران</MudNavLink>
</MudNavGroup>
</MudNavMenu>
<p class="bottom-0 align-bottom mx-auto">Version : @version</p>

View File

@ -14,11 +14,11 @@
<MudGrid class="w-full">
<MudItem xs="12" md="9">
<MudStack>
<MudStack Row="true">
<MudText Typo="Typo.h6" class="my-auto"><b>اطلاعات سفارش</b></MudText>
<MudSpacer/>
<MudSpacer />
<MudPaper Elevation="0" class="bg-blue-500 px-4 py-2 my-auto">
<MudText Typo="Typo.body2" class="text-white">@ViewModel.PageDto.OrderStatus.ToDisplay()</MudText>
</MudPaper>
@ -38,36 +38,40 @@
</MudItem>
<MudItem xs="12" sm="8">
<MudItem xs="12" sm="6">
<MudField Variant="Variant.Outlined" Label="آدرس">@ViewModel.PageDto?.OrderDelivery?.Address</MudField>
</MudItem>
<MudItem xs="12" sm="4">
<MudField Variant="Variant.Outlined" Label="روش ارسال" >@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="روش ارسال">@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField>
</MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="کدرهگیری ارسال">@ViewModel.PageDto?.OrderDelivery?.TrackingCode</MudField>
</MudItem>
</MudGrid>
<MudStack class="mt-3" Row="true">
<MudText Typo="Typo.h6"><b>کالاهای این سفارش</b></MudText>
<MudSpacer/>
<MudText Typo="Typo.h6"><b>کالاهای این سفارش</b></MudText>
<MudSpacer />
<MudPaper Elevation="0" class="border-dashed border-violet-400 border-2 px-3 py-1 my-auto">
<MudText Typo="Typo.caption" class="text-violet-500"><b>@ViewModel.PageDto.OrderProducts.Sum(op => op.Count) قلم کالا</b></MudText>
<MudText Typo="Typo.caption" class="text-violet-500"><b>@ViewModel.PageDto.OrderProducts.Sum(op => op.Count) قلم کالا</b></MudText>
</MudPaper>
</MudStack>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
Elevation="0"
Bordered="true"
T="OrderProductSDto" Items="@ViewModel.PageDto.OrderProducts"
Filterable="false" Loading="@ViewModel.IsProcessing"
SortMode="@SortMode.None" Groupable="false"
class="border-solid border-2 border-gray-200">
<Columns>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
Elevation="0"
Bordered="true"
T="OrderProductSDto" Items="@ViewModel.PageDto.OrderProducts"
Filterable="false" Loading="@ViewModel.IsProcessing"
SortMode="@SortMode.None" Groupable="false"
class="border-solid border-2 border-gray-200">
<Columns>
<TemplateColumn T="OrderProductSDto" Title="نام کالا">
<TemplateColumn T="OrderProductSDto" Title="نام کالا">
<CellTemplate>
<b>@context.Item.ProductName</b>
<CellTemplate>
<b>@context.Item.ProductName</b>
</CellTemplate>
</TemplateColumn>
@ -99,31 +103,31 @@
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">جمع کالاها : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalProductsPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider/>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مالیات : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TaxesPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider/>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">بسته بندی : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.PackingPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider/>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">هزینه ارسال : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DeliveryPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
@ -135,23 +139,23 @@
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">جمع کل : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPriceWithoutDiscount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider/>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مقدار تخفیف : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.DiscountPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
<MudDivider/>
<MudDivider />
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">مبلغ قابل پرداخت : </MudText>
<MudSpacer/>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@ViewModel.PageDto.TotalPrice.ToString("N0")</b> ریالــ</MudText>
</MudStack>
@ -160,48 +164,60 @@
</MudPaper>
<MudText Typo="Typo.h6" class="mt-3"><b>پرداختــ ها</b></MudText>
<MudPaper Elevation="0" class="bg-[--mud-palette-background-grey] rounded-md">
<MudStack class="p-3">
@foreach (var item in ViewModel.PageDto.Payments)
{
<MudStack Row="true">
<MudStack class="p-3">
@foreach (var item in ViewModel.PageDto.Payments)
{
<MudStack Row="true">
<MudText class="my-auto" Typo="Typo.body2">@item.Type.ToDisplay()</MudText>
<MudText class="my-auto" Typo="Typo.body2"> - </MudText>
<MudText class="my-auto" Typo="Typo.body2">@item.Status.ToDisplay()</MudText>
<MudSpacer/>
<MudText Typo="Typo.body1"><b>@item.Amount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
}
</MudStack>
<MudText class="my-auto" Typo="Typo.body2">@item.Status.ToDisplay()</MudText>
<MudSpacer />
<MudText Typo="Typo.body1"><b>@item.Amount.ToString("N0")</b> ریالــ</MudText>
</MudStack>
}
</MudStack>
</MudPaper>
</MudItem>
</MudGrid>
</MudStack>
</DialogContent>
<DialogActions>
<MudStack Row="true" class="w-full h-fit mx-4 mb-3 bottom-0">
<BaseButtonUi class="w-64 h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.AirportShuttle"
Variant="Variant.Filled" Color="Color.Success"
Content="@ViewModel.ConfirmOrderButtonText" OnClickCallback="ViewModel.SubmitConfirmAsync" />
<BaseButtonUi class="w-52 h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.RemoveCircle"
Variant="Variant.Outlined" Color="Color.Error"
Content="لغو سفارش" />
<MudSpacer />
<MudGrid Row="true" class="w-full h-fit mx-4 mb-3 bottom-0">
<BaseButtonUi class="w-52 h-12 rounded-md my-auto" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.Print"
Size="Size.Small"
Variant="Variant.Outlined" Color="Color.Info"
OnClickCallback="@ViewModel.PrintInvoiceAsync"
Content="چاپــ فاکتور" />
<MudButton Variant="Variant.Outlined" Size="Size.Medium" Color="Color.Error" OnClick="ViewModel.Cancel">بستن</MudButton>
</MudStack>
<MudItem xs="12" sm="6" md="6">
<BaseButtonUi class="w-full h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.AirportShuttle"
Variant="Variant.Filled" Color="Color.Success"
Content="@ViewModel.ConfirmOrderButtonText"
OnClickCallback="ViewModel.SubmitConfirmAsync" />
</MudItem>
<MudItem xs="12" sm="6" md="2">
<BaseButtonUi class="w-full h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.RemoveCircle"
Variant="Variant.Outlined" Color="Color.Error"
Content="لغو سفارش" />
</MudItem>
<MudItem xs="12" sm="6" md="3">
<BaseButtonUi class="w-full h-12 rounded-md my-auto" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.Print"
Size="Size.Small"
Variant="Variant.Outlined" Color="Color.Info"
OnClickCallback="@ViewModel.PrintInvoiceAsync"
Content="چاپــ فاکتور" />
</MudItem>
<MudItem xs="12" sm="6" md="1">
<BaseButtonUi class="w-full h-12 rounded-md my-auto" IsProcessing="@ViewModel.IsProcessing"
Size="Size.Small"
Variant="Variant.Outlined" Color="Color.Error"
OnClickCallback="@ViewModel.Cancel"
Content="بستن" />
</MudItem>
</MudGrid>
</DialogActions>
</MudDialog>
@ -220,7 +236,7 @@
if (Order == null)
ViewModel = new OrderActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog, PrintingService, JsRuntime);
else
ViewModel = new OrderActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog, Order , PrintingService , JsRuntime);
ViewModel = new OrderActionDialogBoxViewModel(Snackbar, RestWrapper, UserUtility, DialogService, MudDialog, Order, PrintingService, JsRuntime);
await ViewModel.InitializeAsync();
await base.OnInitializedAsync();
}

View File

@ -54,6 +54,7 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
public string ConfirmOrderButtonText { get; set; } = string.Empty;
public bool IsEditing = false;
public bool CanConfirm = true;
public override async Task InitializeAsync()
@ -88,6 +89,10 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
case OrderStatus.Delivered:
ConfirmOrderButtonText = "ثبت انجام سفارش";
break;
case OrderStatus.Done:
ConfirmOrderButtonText = "انجام شده";
CanConfirm = false;
break;
default:
throw new ArgumentOutOfRangeException();
}
@ -171,6 +176,45 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
default:
throw new ArgumentOutOfRangeException();
}
if (nextOrderStatus == OrderStatus.Delivered)
{
var options = new DialogOptions { MaxWidth = MaxWidth.Small, FullWidth = true, NoHeader = true, CloseOnEscapeKey = true };
var trackingDialog = await _dialogService.ShowAsync<OrderTrackingCodeActionDialogBox>("ارسال کد رهگیری پستی", options);
var trackingDialogResult = await trackingDialog.Result;
if (!trackingDialogResult.Canceled && trackingDialogResult.Data is string trackingCode)
{
try
{
var token = await _userUtility.GetBearerTokenAsync();
if (token == null)
throw new Exception("Token is null");
IsProcessing = true;
await _restWrapper.OrderRestApi.ConfirmOrderStepAsync(PageDto.Id, nextOrderStatus,trackingCode, token);
_snackbar.Add($"سفارش {PageDto.FactorCode} به {nextOrderStatus.ToDisplay()} تغییر یافت", Severity.Success);
_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;
}
}
return;
}
var reference = await _dialogService.ShowQuestionDialog($"آیا از ثبت سفارش به {nextOrderStatus.ToDisplay()} اطمینان دارید ?");
var result = await reference.Result;
@ -187,7 +231,7 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
await _restWrapper.OrderRestApi.ConfirmOrderStepAsync(PageDto.Id, nextOrderStatus, token);
_snackbar.Add($"سفارش {PageDto.FactorCode} به {nextOrderStatus.ToDisplay()} تغییر یافت", Severity.Success);
_mudDialog.Close();
_mudDialog.Close(true);
}
catch (ApiException ex)
{

View File

@ -0,0 +1,38 @@
<MudDialog class="overflow-y-hidden overflow-x-hidden">
<DialogContent>
<MudStack class=" pt-8 py-8 -mb-4 w-full">
<MudText Typo="Typo.h5" class="font-bold" Align="Align.Center">لطفا کد رهگیری ارسال را وارد کنید</MudText>
<MudTextField class="mt-3" Variant="Variant.Outlined" T="string" Label="کد رهگیری" @bind-Value="@TrackingCode"></MudTextField>
</MudStack>
</DialogContent>
<DialogActions>
<MudGrid class="p-2">
<MudItem lg="6">
<MudButton class="w-full py-3 font-bold" Color="Color.Info" Variant="Variant.Filled" OnClick="Submit" DisableElevation="true">تایید</MudButton>
</MudItem>
<MudItem lg="6">
<MudButton class="w-full py-3 font-bold" Variant="Variant.Outlined" Color="Color.Error" OnClick="Cancel">انصراف</MudButton>
</MudItem>
</MudGrid>
</DialogActions>
</MudDialog>
@code
{
[CascadingParameter]
MudDialogInstance? MudDialog { get; set; }
public string TrackingCode { get; set; } = string.Empty;
void Submit()
{
if (TrackingCode.IsNullOrEmpty())
{
return;
}
MudDialog?.Close(DialogResult.Ok(TrackingCode));
}
void Cancel() => MudDialog?.Cancel();
}

View File

@ -5,8 +5,8 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
<AssemblyVersion>0.17.21.31</AssemblyVersion>
<FileVersion>0.17.21.31</FileVersion>
<AssemblyVersion>0.17.21.32</AssemblyVersion>
<FileVersion>0.17.21.32</FileVersion>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
</PropertyGroup>

View File

@ -7,31 +7,31 @@
@inject IUserUtility UserUtility
@inject IRestWrapper RestWrapper
<MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudStack class="w-full p-8 min-h-screen bg-[--mud-palette-background-grey]">
<MudGrid>
<MudItem sm="6" lg="3">
<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>1124</b></MudText>
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper>
</MudItem>
<MudItem sm="6" lg="3">
<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>845</b></MudText>
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper>
</MudItem>
<MudItem sm="6" lg="3">
<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>125</b></MudText>
<MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper>
</MudItem>
<MudItem sm="6" lg="3">
<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>10</b></MudText>

View File

@ -10,23 +10,64 @@
<MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudGrid>
<MudItem xs="12">
<MudStack Row="true" class="mb-5">
<MudText Typo="Typo.h4">محصولاتــــ</MudText>
<MudChip Color="Color.Info" Variant="Variant.Outlined">124 عدد</MudChip>
<MudSpacer/>
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary"
OnClick="@ViewModel.AddProductClicked"
class="my-auto">افزودن محصول</MudButton>
@* <MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Error"
OnClick="@ViewModel.AddDigikalaProductClicked"
class="my-auto">افزودن محصول از دیجیکالا</MudButton> *@
</MudStack>
<MudGrid Row="true" class="mb-5">
<MudItem xs="12" sm="6" md="8">
<MudStack Row="true">
<MudText Typo="Typo.h4">محصولاتــــ</MudText>
<MudChip Color="Color.Info" Variant="Variant.Outlined">124 عدد</MudChip>
</MudStack>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary"
OnClick="@ViewModel.AddProductClicked"
class="md:my-auto w-full md:w-auto">افزودن محصول</MudButton>
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Error"
OnClick="@ViewModel.AddDigikalaProductClicked"
class="md:my-auto w-full md:w-auto">افزودن محصول از دیجیکالا</MudButton>
</MudItem>
</MudGrid>
<MudHidden Breakpoint="Breakpoint.SmAndUp">
<MudGrid class="mb-3" Row="true">
<MudItem xs="12" sm="6">
<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>
</MudItem>
<MudItem xs="12" sm="6">
<MudAutocomplete class="-mt-0.5" Required="true" ToStringFunc="dto => dto.Name"
T="ProductCategorySDto"
Label="بر اساس دسته بندی"
OnClearButtonClick="ViewModel.ClearProductCategorySearch"
SearchFunc="ViewModel.SearchProductCategory"
ValueChanged="ViewModel.ProductCategorySelected"
Clearable="true">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.Name</p>
</ItemTemplate>
</MudAutocomplete>
</MudItem>
</MudGrid>
</MudHidden>
<MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
@ -36,40 +77,40 @@
SortMode="@SortMode.None" Groupable="false">
<ToolBarContent>
<MudGrid Row="true">
<MudGrid class="md:visible collapse" Row="true">
<MudItem sm="6">
<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>
</MudItem>
<MudItem xs="12" sm="6">
<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>
</MudItem>
<MudItem sm="6">
<MudAutocomplete class="-mt-0.5" Required="true" ToStringFunc="dto => dto.Name"
T="ProductCategorySDto"
Label="بر اساس دسته بندی"
OnClearButtonClick="ViewModel.ClearProductCategorySearch"
SearchFunc="ViewModel.SearchProductCategory"
ValueChanged="ViewModel.ProductCategorySelected"
Clearable="true">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.Name</p>
</ItemTemplate>
</MudAutocomplete>
</MudItem>
</MudGrid>
<MudItem xs="12" sm="6">
<MudAutocomplete class="-mt-0.5" Required="true" ToStringFunc="dto => dto.Name"
T="ProductCategorySDto"
Label="بر اساس دسته بندی"
OnClearButtonClick="ViewModel.ClearProductCategorySearch"
SearchFunc="ViewModel.SearchProductCategory"
ValueChanged="ViewModel.ProductCategorySelected"
Clearable="true">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true" />
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.Name</p>
</ItemTemplate>
</MudAutocomplete>
</MudItem>
</MudGrid>
</ToolBarContent>
<Columns>

View File

@ -10,16 +10,21 @@
<MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudGrid>
<MudItem xs="12">
<MudStack Row="true" class="mb-5">
<MudText Typo="Typo.h4">روش های ارسال سفارش</MudText>
<MudSpacer />
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary"
OnClick="@ViewModel.AddClicked"
class="my-auto">افزودن روش جدید</MudButton>
</MudStack>
<MudGrid Row="true" class="mb-5">
<MudItem xs="12" sm="6" md="8">
<MudStack Row="true">
<MudText Typo="Typo.h4">روش های ارسال سفارش</MudText>
</MudStack>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Filled"
DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary"
OnClick="@ViewModel.AddClicked"
class="my-auto">افزودن روش جدید</MudButton>
</MudItem>
</MudGrid>
<MudPaper>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ShippingSDto" Items="@ViewModel.PageDto" CurrentPage="@ViewModel.CurrentPage"

View File

@ -1,4 +1,4 @@
@page "/setting/user"
@page "/setting/users"
@using NetinaShop.Domain.Entities.Users
@attribute [Microsoft.AspNetCore.Authorization.Authorize]
@ -23,7 +23,7 @@
OnClick="@ViewModel.AddUserClicked"
class="my-auto">افزودن کاربر</MudButton>
</MudStack>
<MudPaper>
<MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ApplicationUserSDto" Items="@ViewModel.Users" CurrentPage="@ViewModel.UsersCurrentPage"
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"
@ -81,7 +81,7 @@
OnClick="@ViewModel.AddRoleClicked"
class="my-auto">افزودن نقش</MudButton>
</MudStack>
<MudPaper>
<MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ApplicationRole" Items="@ViewModel.Roles" CurrentPage="@ViewModel.RolesCurrentPage"
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"

View File

@ -9,7 +9,9 @@ public interface IOrderRestApi
Task<OrderLDto> ReadOne(Guid id, [Header("Authorization")] string authorization);
[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}/confirm")]
Task<bool> ConfirmOrderStepAsync(Guid id, [Query] OrderStatus nextOrderStatus, [Query]string trackingCode, [Header("Authorization")] string authorization);
[Get("/{id}/invoice")]
Task<HttpContent> GetOrderInvoice(Guid id, [Header("Authorization")] string authorization);

View File

@ -34,7 +34,7 @@
"flowbite": "^2.2.1",
"postcss": "^8.4.33",
"postcss-cli": "^11.0.0",
"tailwindcss": "^3.4.1"
"tailwindcss": "^3.4.3"
}
},
"node_modules/@alloc/quick-lru": {
@ -1802,9 +1802,9 @@
}
},
"node_modules/tailwindcss": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
"integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
"integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@ -1814,7 +1814,7 @@
"fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
"jiti": "^1.19.1",
"jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",

View File

@ -1,10 +1,5 @@
{
"dependencies": {
"autoprefixer": "^10.4.17",
"flowbite": "^2.2.1",
"postcss": "^8.4.33",
"postcss-cli": "^11.0.0",
"tailwindcss": "^3.4.1",
"@ckeditor/ckeditor5-alignment": "41.0.0",
"@ckeditor/ckeditor5-autoformat": "41.0.0",
"@ckeditor/ckeditor5-basic-styles": "41.0.0",
@ -25,7 +20,12 @@
"@ckeditor/ckeditor5-typing": "41.0.0",
"@ckeditor/ckeditor5-undo": "41.0.0",
"@ckeditor/ckeditor5-upload": "41.0.0",
"@ckeditor/ckeditor5-word-count": "41.0.0"
"@ckeditor/ckeditor5-word-count": "41.0.0",
"autoprefixer": "^10.4.17",
"flowbite": "^2.2.1",
"postcss": "^8.4.33",
"postcss-cli": "^11.0.0",
"tailwindcss": "^3.4.3"
},
"name": "netina.admin.pwa",
"version": "1.0.0",

View File

@ -5,17 +5,19 @@
"description": "",
"features": [
"افزودن تم دارک",
"تکمیل پروسه سفارش گیری",
"قابلیت افزودن تصویر به برند ها",
"قابلیت افزودن تصویر به دسته بندی محصولات",
"تغییر دیالوگ پرسشی",
"افزودن تنظیمات درگاه",
"افزودن بخش تنظیمات فروشگاه"
"افزودن کد رهگیری پستی",
"تکمیل پروسه سفارش گیری",
"افزودن بخش تنظیمات فروشگاه",
"قابلیت افزودن تصویر به برند ها",
"قابلیت افزودن تصویر به دسته بندی محصولات"
],
"bugFixes": [
"حل مشکلات امنیتی",
"رفع مشکلات رسپانسیو",
"رفع مشکل دریافت تصاویر",
"رفع مشکل عدم اتصال به درگاه"
"رفع مشکل عدم اتصال به درگاه",
"رفع مشکلات ساختاری در ریسپانس"
]
}

View File

@ -1,5 +1,5 @@
/*
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
@ -179,6 +179,7 @@ textarea {
font-size: 100%; /* 1 */
font-weight: inherit; /* 1 */
line-height: inherit; /* 1 */
letter-spacing: inherit; /* 1 */
color: inherit; /* 1 */
margin: 0; /* 2 */
padding: 0; /* 3 */
@ -199,9 +200,9 @@ select {
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
-webkit-appearance: button; /* 1 */
background-color: transparent; /* 2 */
background-image: none; /* 2 */
@ -913,6 +914,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
}
::backdrop {
@ -963,6 +968,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
}
.container {
width: 100%;
@ -1115,6 +1124,9 @@ input:checked + .toggle-bg {
.-mb-3 {
margin-bottom: -0.75rem;
}
.-mb-4 {
margin-bottom: -1rem;
}
.-ml-4 {
margin-left: -1rem;
}
@ -1293,6 +1305,9 @@ input:checked + .toggle-bg {
.min-h-\[33rem\] {
min-height: 33rem;
}
.min-h-screen {
min-height: 100vh;
}
.w-1\/2 {
width: 50%;
}
@ -2118,6 +2133,19 @@ code {
@media (min-width: 768px) {
.md\:visible {
visibility: visible;
}
.md\:my-auto {
margin-top: auto;
margin-bottom: auto;
}
.md\:w-auto {
width: auto;
}
.md\:basis-1\/2 {
flex-basis: 50%;
}

View File

@ -1,5 +1,5 @@
/*
! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
*/
/*
@ -211,6 +211,8 @@ textarea {
/* 1 */
line-height: inherit;
/* 1 */
letter-spacing: inherit;
/* 1 */
color: inherit;
/* 1 */
margin: 0;
@ -234,9 +236,9 @@ select {
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
-webkit-appearance: button;
/* 1 */
background-color: transparent;
@ -965,6 +967,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
}
::backdrop {
@ -1015,6 +1021,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
}
.container {
@ -1195,11 +1205,6 @@ input:checked + .toggle-bg {
margin-bottom: 1rem;
}
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-auto {
margin-top: auto;
margin-bottom: auto;
@ -1317,6 +1322,10 @@ input:checked + .toggle-bg {
margin-top: 2rem;
}
.-mb-4 {
margin-bottom: -1rem;
}
.line-clamp-1 {
overflow: hidden;
display: -webkit-box;
@ -1445,6 +1454,10 @@ input:checked + .toggle-bg {
min-height: 33rem;
}
.min-h-screen {
min-height: 100vh;
}
.w-1\/2 {
width: 50%;
}
@ -2458,6 +2471,19 @@ code {
}
@media (min-width: 768px) {
.md\:visible {
visibility: visible;
}
.md\:my-auto {
margin-top: auto;
margin-bottom: auto;
}
.md\:w-auto {
width: auto;
}
.md\:basis-1\/2 {
flex-basis: 50%;
}