Files
BackOffice/src/BackOffice/Pages/DiscountShop/Components/ChangeOrderStatusDialog.razor
T
masoodafar-web 49017027d0
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 2m20s
feat: full BackOffice updates - discount shop, blog, content, UI improvements
- Blog management pages (posts, categories)
- Content management pages (site pages, sections)
- Contract management pages
- Discount shop improvements (order details, product form, categories)
- Wallet management pages
- Commission withdrawal details/reject dialogs
- Orders hub, sales reports
- System hub, global search, breadcrumb
- Club features page, club hub
- UI/UX improvements across all pages
- AppBreadcrumb, GlobalSearch components
- NavMenu updates and styling
2026-02-16 00:56:39 +03:30

150 lines
5.9 KiB
Plaintext

@using BackOffice.Services.DiscountOrder
<MudDialog>
<TitleContent>
<MudText Typo="Typo.h6">
<MudIcon Icon="@Icons.Material.Filled.Edit" Class="ml-2" />
تغییر وضعیت سفارش #@OrderId
</MudText>
</TitleContent>
<DialogContent>
<MudForm @ref="_form" @bind-IsValid="@_isValid">
<MudGrid>
<MudItem xs="12">
<MudAlert Severity="Severity.Info" Dense="true">
وضعیت فعلی: <strong>@GetStatusText(CurrentStatus)</strong>
</MudAlert>
</MudItem>
<MudItem xs="12">
<MudSelect @bind-Value="Model.Status"
Label="وضعیت جدید *"
Required="true"
Variant="Variant.Outlined">
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Pending">در انتظار پرداخت</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Paid">پرداخت شده</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Processing">در حال آماده‌سازی</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Shipped">ارسال شده</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Delivered">تحویل داده شده</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Cancelled">لغو شده</MudSelectItem>
<MudSelectItem T="OrderStatus" Value="@OrderStatus.Returned">مرجوع شده</MudSelectItem>
</MudSelect>
</MudItem>
<MudItem xs="12">
<MudTextField @bind-Value="Model.AdminNotes"
Label="یادداشت ادمین"
Lines="4"
Variant="Variant.Outlined"
HelperText="دلیل تغییر وضعیت یا توضیحات اضافی" />
</MudItem>
<MudItem xs="12">
<MudTextField @bind-Value="Model.TrackingCode"
Label="کد رهگیری مرسوله"
Variant="Variant.Outlined"
HelperText="در صورت ارسال، کد رهگیری را وارد کنید" />
</MudItem>
@if (Model.Status == OrderStatus.Cancelled || Model.Status == OrderStatus.Returned)
{
<MudItem xs="12">
<MudAlert Severity="Severity.Warning">
<MudText>توجه: در صورت لغو یا مرجوعی سفارش، موجودی محصولات به انبار بازگردانده می‌شود.</MudText>
</MudAlert>
</MudItem>
}
@if (Model.Status == OrderStatus.Shipped)
{
<MudItem xs="12">
<MudAlert Severity="Severity.Info">
<MudText>پس از تغییر وضعیت به "ارسال شده"، اطلاع‌رسانی به کاربر ارسال خواهد شد.</MudText>
</MudAlert>
</MudItem>
}
</MudGrid>
</MudForm>
</DialogContent>
<DialogActions>
<MudButton OnClick="Cancel" Variant="Variant.Text">انصراف</MudButton>
<MudButton OnClick="Submit"
Variant="Variant.Filled"
Color="@GetStatusColor(Model.Status)"
Disabled="@(!_isValid || _loading)">
@if (_loading)
{
<MudProgressCircular Size="Size.Small" Indeterminate="true" />
}
else
{
<text>تغییر وضعیت</text>
}
</MudButton>
</DialogActions>
</MudDialog>
@code {
[CascadingParameter] IMudDialogInstance MudDialog { get; set; } = null!;
[Parameter] public long OrderId { get; set; }
[Parameter] public OrderStatus CurrentStatus { get; set; }
private MudForm? _form;
private bool _isValid;
private bool _loading;
private UpdateOrderStatusDto Model = new();
protected override void OnInitialized()
{
Model.Status = CurrentStatus;
}
private async Task Submit()
{
if (_form != null)
{
await _form.Validate();
if (!_isValid) return;
}
_loading = true;
MudDialog.Close(DialogResult.Ok(Model));
_loading = false;
}
private void Cancel()
{
MudDialog.Cancel();
}
private Color GetStatusColor(OrderStatus status)
{
return status switch
{
OrderStatus.Pending => Color.Warning,
OrderStatus.Paid => Color.Info,
OrderStatus.Processing => Color.Primary,
OrderStatus.Shipped => Color.Secondary,
OrderStatus.Delivered => Color.Success,
OrderStatus.Cancelled => Color.Error,
OrderStatus.Returned => Color.Dark,
_ => Color.Default
};
}
private string GetStatusText(OrderStatus status)
{
return status switch
{
OrderStatus.Pending => "در انتظار پرداخت",
OrderStatus.Paid => "پرداخت شده",
OrderStatus.Processing => "در حال آماده‌سازی",
OrderStatus.Shipped => "ارسال شده",
OrderStatus.Delivered => "تحویل داده شده",
OrderStatus.Cancelled => "لغو شده",
OrderStatus.Returned => "مرجوع شده",
_ => "نامشخص"
};
}
}