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" <MudNavGroup Title="تنظیماتـــ" Expanded="false"
Icon="@Icons.Material.Outlined.Settings"> Icon="@Icons.Material.Outlined.Settings">
<MudNavLink Href="management/shop" Icon="@Icons.Material.Filled.Shop2">فروشگاه</MudNavLink> <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> </MudNavGroup>
</MudNavMenu> </MudNavMenu>
<p class="bottom-0 align-bottom mx-auto">Version : @version</p> <p class="bottom-0 align-bottom mx-auto">Version : @version</p>

View File

@ -38,12 +38,16 @@
</MudItem> </MudItem>
<MudItem xs="12" sm="8"> <MudItem xs="12" sm="6">
<MudField Variant="Variant.Outlined" Label="آدرس">@ViewModel.PageDto?.OrderDelivery?.Address</MudField> <MudField Variant="Variant.Outlined" Label="آدرس">@ViewModel.PageDto?.OrderDelivery?.Address</MudField>
</MudItem> </MudItem>
<MudItem xs="12" sm="4"> <MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="روش ارسال">@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField> <MudField Variant="Variant.Outlined" Label="روش ارسال">@ViewModel.PageDto?.OrderDelivery?.ShippingMethod</MudField>
</MudItem> </MudItem>
<MudItem xs="12" sm="3">
<MudField Variant="Variant.Outlined" Label="کدرهگیری ارسال">@ViewModel.PageDto?.OrderDelivery?.TrackingCode</MudField>
</MudItem>
</MudGrid> </MudGrid>
<MudStack class="mt-3" Row="true"> <MudStack class="mt-3" Row="true">
@ -182,26 +186,38 @@
</MudStack> </MudStack>
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
<MudStack Row="true" class="w-full h-fit mx-4 mb-3 bottom-0"> <MudGrid Row="true" class="w-full h-fit mx-4 mb-3 bottom-0">
<BaseButtonUi class="w-64 h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing" <MudItem xs="12" sm="6" md="6">
<BaseButtonUi class="w-full h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing"
Icon="@Icons.Material.Outlined.AirportShuttle" Icon="@Icons.Material.Outlined.AirportShuttle"
Variant="Variant.Filled" Color="Color.Success" Variant="Variant.Filled" Color="Color.Success"
Content="@ViewModel.ConfirmOrderButtonText" OnClickCallback="ViewModel.SubmitConfirmAsync" /> Content="@ViewModel.ConfirmOrderButtonText"
<BaseButtonUi class="w-52 h-12 rounded-md" IsProcessing="@ViewModel.IsProcessing" 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" Icon="@Icons.Material.Outlined.RemoveCircle"
Variant="Variant.Outlined" Color="Color.Error" Variant="Variant.Outlined" Color="Color.Error"
Content="لغو سفارش" /> Content="لغو سفارش" />
<MudSpacer /> </MudItem>
<BaseButtonUi class="w-52 h-12 rounded-md my-auto" IsProcessing="@ViewModel.IsProcessing" <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" Icon="@Icons.Material.Outlined.Print"
Size="Size.Small" Size="Size.Small"
Variant="Variant.Outlined" Color="Color.Info" Variant="Variant.Outlined" Color="Color.Info"
OnClickCallback="@ViewModel.PrintInvoiceAsync" OnClickCallback="@ViewModel.PrintInvoiceAsync"
Content="چاپــ فاکتور" /> Content="چاپــ فاکتور" />
<MudButton Variant="Variant.Outlined" Size="Size.Medium" Color="Color.Error" OnClick="ViewModel.Cancel">بستن</MudButton> </MudItem>
</MudStack> <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> </DialogActions>
</MudDialog> </MudDialog>

View File

@ -54,6 +54,7 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
public string ConfirmOrderButtonText { get; set; } = string.Empty; public string ConfirmOrderButtonText { get; set; } = string.Empty;
public bool IsEditing = false; public bool IsEditing = false;
public bool CanConfirm = true;
public override async Task InitializeAsync() public override async Task InitializeAsync()
@ -88,6 +89,10 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
case OrderStatus.Delivered: case OrderStatus.Delivered:
ConfirmOrderButtonText = "ثبت انجام سفارش"; ConfirmOrderButtonText = "ثبت انجام سفارش";
break; break;
case OrderStatus.Done:
ConfirmOrderButtonText = "انجام شده";
CanConfirm = false;
break;
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
@ -171,6 +176,45 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
default: default:
throw new ArgumentOutOfRangeException(); 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 reference = await _dialogService.ShowQuestionDialog($"آیا از ثبت سفارش به {nextOrderStatus.ToDisplay()} اطمینان دارید ?");
var result = await reference.Result; var result = await reference.Result;
@ -187,7 +231,7 @@ public class OrderActionDialogBoxViewModel : BaseViewModel<OrderLDto>
await _restWrapper.OrderRestApi.ConfirmOrderStepAsync(PageDto.Id, nextOrderStatus, token); await _restWrapper.OrderRestApi.ConfirmOrderStepAsync(PageDto.Id, nextOrderStatus, token);
_snackbar.Add($"سفارش {PageDto.FactorCode} به {nextOrderStatus.ToDisplay()} تغییر یافت", Severity.Success); _snackbar.Add($"سفارش {PageDto.FactorCode} به {nextOrderStatus.ToDisplay()} تغییر یافت", Severity.Success);
_mudDialog.Close(); _mudDialog.Close(true);
} }
catch (ApiException ex) 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> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest> <ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
<AssemblyVersion>0.17.21.31</AssemblyVersion> <AssemblyVersion>0.17.21.32</AssemblyVersion>
<FileVersion>0.17.21.31</FileVersion> <FileVersion>0.17.21.32</FileVersion>
<AssemblyName>$(MSBuildProjectName)</AssemblyName> <AssemblyName>$(MSBuildProjectName)</AssemblyName>
</PropertyGroup> </PropertyGroup>

View File

@ -7,31 +7,31 @@
@inject IUserUtility UserUtility @inject IUserUtility UserUtility
@inject IRestWrapper RestWrapper @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> <MudGrid>
<MudItem sm="6" lg="3"> <MudItem xs="12" sm="6" lg="3">
<MudPaper class="p-3 m-2 rounded-md" Elevation="2"> <MudPaper class="p-3 m-2 rounded-md" Elevation="2">
<MudText Typo="Typo.body1" class="mb-4">سفارشات امروز</MudText> <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.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> <MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper> </MudPaper>
</MudItem> </MudItem>
<MudItem sm="6" lg="3"> <MudItem xs="12" sm="6" lg="3">
<MudPaper class="p-3 m-2 rounded-md" Elevation="2"> <MudPaper class="p-3 m-2 rounded-md" Elevation="2">
<MudText Typo="Typo.body1" class="mb-4">سفارشات در انتظار تایید</MudText> <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.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> <MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper> </MudPaper>
</MudItem> </MudItem>
<MudItem sm="6" lg="3"> <MudItem xs="12" sm="6" lg="3">
<MudPaper class="p-3 m-2 rounded-md" Elevation="2"> <MudPaper class="p-3 m-2 rounded-md" Elevation="2">
<MudText Typo="Typo.body1" class="mb-4">تغییر نسبت هفته پیش</MudText> <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.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> <MudText Typo="Typo.h6" Align="Align.Center" class="mb-4 -mt-1"><b>عدد</b></MudText>
</MudPaper> </MudPaper>
</MudItem> </MudItem>
<MudItem sm="6" lg="3"> <MudItem xs="12" sm="6" lg="3">
<MudPaper class="p-3 m-2 rounded-md" Elevation="2"> <MudPaper class="p-3 m-2 rounded-md" Elevation="2">
<MudText Typo="Typo.body1" class="mb-4">تغییر نسبت به ماه پیش</MudText> <MudText Typo="Typo.body1" class="mb-4">تغییر نسبت به ماه پیش</MudText>
<MudText Typo="Typo.h3" Align="Align.Center" class="text-rose-600"><b>10</b></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]"> <MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudGrid> <MudGrid>
<MudItem xs="12"> <MudItem xs="12">
<MudStack Row="true" class="mb-5"> <MudGrid Row="true" class="mb-5">
<MudItem xs="12" sm="6" md="8">
<MudStack Row="true">
<MudText Typo="Typo.h4">محصولاتــــ</MudText> <MudText Typo="Typo.h4">محصولاتــــ</MudText>
<MudChip Color="Color.Info" Variant="Variant.Outlined">124 عدد</MudChip> <MudChip Color="Color.Info" Variant="Variant.Outlined">124 عدد</MudChip>
<MudSpacer/> </MudStack>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Filled" <MudButton Variant="Variant.Filled"
DisableElevation="true" DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add" StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary" Color="Color.Secondary"
OnClick="@ViewModel.AddProductClicked" OnClick="@ViewModel.AddProductClicked"
class="my-auto">افزودن محصول</MudButton> class="md:my-auto w-full md:w-auto">افزودن محصول</MudButton>
@* <MudButton Variant="Variant.Filled" <MudButton Variant="Variant.Filled"
DisableElevation="true" DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add" StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Error" Color="Color.Error"
OnClick="@ViewModel.AddDigikalaProductClicked" OnClick="@ViewModel.AddDigikalaProductClicked"
class="my-auto">افزودن محصول از دیجیکالا</MudButton> *@ class="md:my-auto w-full md:w-auto">افزودن محصول از دیجیکالا</MudButton>
</MudStack> </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"> <MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true" <MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
@ -36,9 +77,9 @@
SortMode="@SortMode.None" Groupable="false"> SortMode="@SortMode.None" Groupable="false">
<ToolBarContent> <ToolBarContent>
<MudGrid Row="true"> <MudGrid class="md:visible collapse" Row="true">
<MudItem 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"
Clearable="true" Clearable="true"
ValueChanged="@ViewModel.SearchChanged" ValueChanged="@ViewModel.SearchChanged"
@ -46,7 +87,7 @@
OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField> OnAdornmentClick="@ViewModel.SearchAsync"></MudTextField>
</MudItem> </MudItem>
<MudItem sm="6"> <MudItem xs="12" sm="6">
<MudAutocomplete class="-mt-0.5" Required="true" ToStringFunc="dto => dto.Name" <MudAutocomplete class="-mt-0.5" Required="true" ToStringFunc="dto => dto.Name"
T="ProductCategorySDto" T="ProductCategorySDto"
Label="بر اساس دسته بندی" Label="بر اساس دسته بندی"

View File

@ -10,16 +10,21 @@
<MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]"> <MudStack class="w-full p-8 h-screen bg-[--mud-palette-background-grey]">
<MudGrid> <MudGrid>
<MudItem xs="12"> <MudItem xs="12">
<MudStack Row="true" class="mb-5"> <MudGrid Row="true" class="mb-5">
<MudItem xs="12" sm="6" md="8">
<MudStack Row="true">
<MudText Typo="Typo.h4">روش های ارسال سفارش</MudText> <MudText Typo="Typo.h4">روش های ارسال سفارش</MudText>
<MudSpacer /> </MudStack>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Filled" <MudButton Variant="Variant.Filled"
DisableElevation="true" DisableElevation="true"
StartIcon="@Icons.Material.Outlined.Add" StartIcon="@Icons.Material.Outlined.Add"
Color="Color.Secondary" Color="Color.Secondary"
OnClick="@ViewModel.AddClicked" OnClick="@ViewModel.AddClicked"
class="my-auto">افزودن روش جدید</MudButton> class="my-auto">افزودن روش جدید</MudButton>
</MudStack> </MudItem>
</MudGrid>
<MudPaper> <MudPaper>
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true" <MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ShippingSDto" Items="@ViewModel.PageDto" CurrentPage="@ViewModel.CurrentPage" 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 @using NetinaShop.Domain.Entities.Users
@attribute [Microsoft.AspNetCore.Authorization.Authorize] @attribute [Microsoft.AspNetCore.Authorization.Authorize]
@ -23,7 +23,7 @@
OnClick="@ViewModel.AddUserClicked" OnClick="@ViewModel.AddUserClicked"
class="my-auto">افزودن کاربر</MudButton> class="my-auto">افزودن کاربر</MudButton>
</MudStack> </MudStack>
<MudPaper> <MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true" <MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ApplicationUserSDto" Items="@ViewModel.Users" CurrentPage="@ViewModel.UsersCurrentPage" T="ApplicationUserSDto" Items="@ViewModel.Users" CurrentPage="@ViewModel.UsersCurrentPage"
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing" RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"
@ -81,7 +81,7 @@
OnClick="@ViewModel.AddRoleClicked" OnClick="@ViewModel.AddRoleClicked"
class="my-auto">افزودن نقش</MudButton> class="my-auto">افزودن نقش</MudButton>
</MudStack> </MudStack>
<MudPaper> <MudPaper class="!max-h-[80vh] overflow-auto">
<MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true" <MudDataGrid FixedFooter="true" FixedHeader="true" Striped="true"
T="ApplicationRole" Items="@ViewModel.Roles" CurrentPage="@ViewModel.RolesCurrentPage" T="ApplicationRole" Items="@ViewModel.Roles" CurrentPage="@ViewModel.RolesCurrentPage"
RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing" RowsPerPage="20" Filterable="false" Loading="@ViewModel.IsProcessing"

View File

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

View File

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

View File

@ -1,10 +1,5 @@
{ {
"dependencies": { "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-alignment": "41.0.0",
"@ckeditor/ckeditor5-autoformat": "41.0.0", "@ckeditor/ckeditor5-autoformat": "41.0.0",
"@ckeditor/ckeditor5-basic-styles": "41.0.0", "@ckeditor/ckeditor5-basic-styles": "41.0.0",
@ -25,7 +20,12 @@
"@ckeditor/ckeditor5-typing": "41.0.0", "@ckeditor/ckeditor5-typing": "41.0.0",
"@ckeditor/ckeditor5-undo": "41.0.0", "@ckeditor/ckeditor5-undo": "41.0.0",
"@ckeditor/ckeditor5-upload": "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", "name": "netina.admin.pwa",
"version": "1.0.0", "version": "1.0.0",

View File

@ -5,17 +5,19 @@
"description": "", "description": "",
"features": [ "features": [
"افزودن تم دارک", "افزودن تم دارک",
"تکمیل پروسه سفارش گیری",
"قابلیت افزودن تصویر به برند ها",
"قابلیت افزودن تصویر به دسته بندی محصولات",
"تغییر دیالوگ پرسشی", "تغییر دیالوگ پرسشی",
"افزودن تنظیمات درگاه", "افزودن تنظیمات درگاه",
"افزودن بخش تنظیمات فروشگاه" "افزودن کد رهگیری پستی",
"تکمیل پروسه سفارش گیری",
"افزودن بخش تنظیمات فروشگاه",
"قابلیت افزودن تصویر به برند ها",
"قابلیت افزودن تصویر به دسته بندی محصولات"
], ],
"bugFixes": [ "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) 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) 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-size: 100%; /* 1 */
font-weight: inherit; /* 1 */ font-weight: inherit; /* 1 */
line-height: inherit; /* 1 */ line-height: inherit; /* 1 */
letter-spacing: inherit; /* 1 */
color: inherit; /* 1 */ color: inherit; /* 1 */
margin: 0; /* 2 */ margin: 0; /* 2 */
padding: 0; /* 3 */ padding: 0; /* 3 */
@ -199,9 +200,9 @@ select {
*/ */
button, button,
[type='button'], input:where([type='button']),
[type='reset'], input:where([type='reset']),
[type='submit'] { input:where([type='submit']) {
-webkit-appearance: button; /* 1 */ -webkit-appearance: button; /* 1 */
background-color: transparent; /* 2 */ background-color: transparent; /* 2 */
background-image: none; /* 2 */ background-image: none; /* 2 */
@ -913,6 +914,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ; --tw-backdrop-opacity: ;
--tw-backdrop-saturate: ; --tw-backdrop-saturate: ;
--tw-backdrop-sepia: ; --tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
} }
::backdrop { ::backdrop {
@ -963,6 +968,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ; --tw-backdrop-opacity: ;
--tw-backdrop-saturate: ; --tw-backdrop-saturate: ;
--tw-backdrop-sepia: ; --tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
} }
.container { .container {
width: 100%; width: 100%;
@ -1115,6 +1124,9 @@ input:checked + .toggle-bg {
.-mb-3 { .-mb-3 {
margin-bottom: -0.75rem; margin-bottom: -0.75rem;
} }
.-mb-4 {
margin-bottom: -1rem;
}
.-ml-4 { .-ml-4 {
margin-left: -1rem; margin-left: -1rem;
} }
@ -1293,6 +1305,9 @@ 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%;
} }
@ -2118,6 +2133,19 @@ code {
@media (min-width: 768px) { @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 { .md\:basis-1\/2 {
flex-basis: 50%; 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 */ /* 1 */
line-height: inherit; line-height: inherit;
/* 1 */ /* 1 */
letter-spacing: inherit;
/* 1 */
color: inherit; color: inherit;
/* 1 */ /* 1 */
margin: 0; margin: 0;
@ -234,9 +236,9 @@ select {
*/ */
button, button,
[type='button'], input:where([type='button']),
[type='reset'], input:where([type='reset']),
[type='submit'] { input:where([type='submit']) {
-webkit-appearance: button; -webkit-appearance: button;
/* 1 */ /* 1 */
background-color: transparent; background-color: transparent;
@ -965,6 +967,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ; --tw-backdrop-opacity: ;
--tw-backdrop-saturate: ; --tw-backdrop-saturate: ;
--tw-backdrop-sepia: ; --tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
} }
::backdrop { ::backdrop {
@ -1015,6 +1021,10 @@ input:checked + .toggle-bg {
--tw-backdrop-opacity: ; --tw-backdrop-opacity: ;
--tw-backdrop-saturate: ; --tw-backdrop-saturate: ;
--tw-backdrop-sepia: ; --tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style: ;
} }
.container { .container {
@ -1195,11 +1205,6 @@ input:checked + .toggle-bg {
margin-bottom: 1rem; margin-bottom: 1rem;
} }
.my-5 {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-auto { .my-auto {
margin-top: auto; margin-top: auto;
margin-bottom: auto; margin-bottom: auto;
@ -1317,6 +1322,10 @@ input:checked + .toggle-bg {
margin-top: 2rem; margin-top: 2rem;
} }
.-mb-4 {
margin-bottom: -1rem;
}
.line-clamp-1 { .line-clamp-1 {
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
@ -1445,6 +1454,10 @@ input:checked + .toggle-bg {
min-height: 33rem; min-height: 33rem;
} }
.min-h-screen {
min-height: 100vh;
}
.w-1\/2 { .w-1\/2 {
width: 50%; width: 50%;
} }
@ -2458,6 +2471,19 @@ code {
} }
@media (min-width: 768px) { @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 { .md\:basis-1\/2 {
flex-basis: 50%; flex-basis: 50%;
} }