Files
BackOffice/src/BackOffice/Pages/UserOrder/UserOrderMainPage.razor
T
masoodafar-web c0c7bb3ac5
Build and Deploy to Production / build-and-deploy (push) Successful in 16m3s
fix: resolve MudBlazor v8 breaking changes (MUD0002 warnings)
- MudListItem: Selected → Class with conditional CSS
- MudTextField: Dense → Margin="Margin.Dense"
- MudSwitch: remove HelperText (merged into Label)
- MudDatePicker: remove T parameter (no longer generic in v8)
2026-03-15 11:58:37 +03:30

235 lines
13 KiB
Plaintext

@* Merged into OrdersHub — direct route only for per-user orders *@
@attribute [Route(RouteConstance.UserOrder + "{UserId:long}")]
@using CMSMicroservice.Protobuf.Protos.UserOrder
@using CMSMicroservice.Protobuf.Protos
@using BackOffice.Pages.UserOrder.Components
@using BackOffice.Common.BaseComponents
@using BackOffice.Pages.AutoComplete
@using DataModel = CMSMicroservice.Protobuf.Protos.UserOrder.GetAllUserOrderByFilterResponseModel
<BackOffice.Common.BaseComponents.BasePageComponent @ref="_basePage" OnClearFilterClick="OnFilterCleared"
OnSubmitClick="OnFilterSubmit">
<Filters>
<MudItem xs="12" sm="6" md="3">
<MudNumericField HideSpinButtons="true" T="long?" Clearable="true" Label="شناسه سفارش"
@bind-Value="@_orderIdFilter" Variant="Variant.Outlined" Margin="Margin.Dense"/>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<UserAutoComplete Label="جستجوی کاربر" @bind-SelectedUserId="@_userIdFilter" />
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudNumericField HideSpinButtons="true" T="long?" Clearable="true" Label="شناسه تراکنش"
@bind-Value="@_transactionIdFilter" Variant="Variant.Outlined" Margin="Margin.Dense"/>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudNumericField HideSpinButtons="true" T="long?" Clearable="true" Label="قیمت"
@bind-Value="@_request.Filter.Amount" Variant="Variant.Outlined" Margin="Margin.Dense"/>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudDatePicker Label="از تاریخ پرداخت" @bind-Date="_paymentDateFrom"
Variant="Variant.Outlined" Margin="Margin.Dense"/>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudDatePicker Label="تا تاریخ پرداخت" @bind-Date="_paymentDateTo"
Variant="Variant.Outlined" Margin="Margin.Dense"/>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudSelect T="int?" Clearable="true" Label="روش پرداخت" Variant="Variant.Outlined"
Margin="Margin.Dense" @bind-Value="_paymentMethodFilter">
<MudSelectItem T="int?" Value="@(0)">درگاه پرداخت</MudSelectItem>
<MudSelectItem T="int?" Value="@(1)">کیف پول</MudSelectItem>
</MudSelect>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudSelect T="int?" Clearable="true" Label="وضعیت پرداخت" Variant="Variant.Outlined"
Margin="Margin.Dense" @bind-Value="_paymentStatusFilter">
<MudSelectItem T="int?" Value="@(0)">پرداخت شده</MudSelectItem>
<MudSelectItem T="int?" Value="@(1)">پرداخت نشده</MudSelectItem>
</MudSelect>
</MudItem>
<MudItem xs="12" sm="6" md="3">
<MudSelect T="int?" Clearable="true" Label="وضعیت ارسال" Variant="Variant.Outlined"
Margin="Margin.Dense" @bind-Value="_deliveryStatusFilter">
<MudSelectItem T="int?" Value="@(1)">در انتظار ارسال</MudSelectItem>
<MudSelectItem T="int?" Value="@(2)">تحویل پست</MudSelectItem>
<MudSelectItem T="int?" Value="@(3)">تحویل به مشتری</MudSelectItem>
<MudSelectItem T="int?" Value="@(4)">مرجوع شده</MudSelectItem>
<MudSelectItem T="int?" Value="@(5)">لغو شده</MudSelectItem>
</MudSelect>
</MudItem>
</Filters>
<Content>
<MudDataGrid T="DataModel"
ServerData="@(new Func<GridState<DataModel>, Task<GridData<DataModel>>>(ServerReload))"
Hover="true" @ref="_gridData" Height="calc(100vh - 240px)">
<ColGroup>
<col/>
<col/>
<col/>
<col style="width: 58px;"/>
</ColGroup>
<ToolBarContent>
<MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Style="width:100%">
<MudText>لیست سفارشات</MudText>
<MudButton Variant="Variant.Outlined"
Color="Color.Info"
OnClick="ExportToExcel"
StartIcon="@Icons.Material.Filled.FileDownload"
Size="Size.Small">
خروجی Excel
</MudButton>
</MudStack>
</ToolBarContent>
<Columns>
<PropertyColumn Property="x => x.Id" Title="شناسه"/>
<PropertyColumn Property="x => x.Amount" Title="مبلغ"/>
@* <PropertyColumn Property="x => x.VatAmount" Title="مبلغ VAT">
<CellTemplate>
@(context.Item.VatAmount > 0 ? context.Item.VatAmount.ToString("N0") : "-")
</CellTemplate>
</PropertyColumn>
<PropertyColumn Property="x => x.VatPercentage" Title="درصد VAT">
<CellTemplate>
@(context.Item.VatPercentage > 0 ? $"{context.Item.VatPercentage:0}٪" : "-")
</CellTemplate>
</PropertyColumn> *@
<TemplateColumn Title="نام کاربر">
<CellTemplate>
@if (context.Item.UserId > 0)
{
<MudLink Href="@($"/network/user-info/{context.Item.UserId}")" Underline="Underline.Hover" Color="Color.Primary">
@context.Item.UserFullName
</MudLink>
}
else
{
<MudText>@context.Item.UserFullName</MudText>
}
</CellTemplate>
</TemplateColumn>
<PropertyColumn Property="x => x.UserNationalCode" Title="کدملی"/>
<TemplateColumn Title="روش پرداخت">
<CellTemplate>
<MudChip T="string" Size="Size.Small">
@GetPaymentMethodText(context.Item.PaymentMethod.GetHashCode())
</MudChip>
</CellTemplate>
</TemplateColumn>
<PropertyColumn Property="x => x.PaymentStatus" Title="وضعیت پرداخت">
<CellTemplate>
@if (context.Item.PaymentStatus == PaymentStatus.Success)
{
<MudChip T="string" Color="Color.Success">پرداخت شده</MudChip>
}
else if (context.Item.PaymentStatus == PaymentStatus.Pending)
{
<MudChip T="string" Color="Color.Success" Size="Size.Small">در انتظار پرداخت</MudChip>
}
else
{
<MudChip T="string" Color="Color.Error">پرداخت نشده</MudChip>
}
</CellTemplate>
</PropertyColumn>
<PropertyColumn Property="x => x.TransactionId" Title="شناسه پرداخت" CellStyle="text-wrap: nowrap;"
HeaderStyle="text-wrap: nowrap;"/>
<TemplateColumn Title="تاریخ پرداخت" CellStyle="text-wrap: nowrap;" HeaderStyle="text-wrap: nowrap;">
<CellTemplate>
@if (context.Item.PaymentDate != null)
{
@(context.Item.PaymentDate.ToDateTime().MiladiToJalaliWithTime())
}
else
{
<MudText>-</MudText>
}
</CellTemplate>
</TemplateColumn>
<TemplateColumn Title="آدرس">
<CellTemplate>
<MudTooltip Text="@context.Item.UserAddressText">
<MudText Typo="Typo.body2">
@(string.IsNullOrWhiteSpace(context.Item.UserAddressText)
? "-"
: (context.Item.UserAddressText.Length > 30
? context.Item.UserAddressText.Substring(0, 30) + "..."
: context.Item.UserAddressText))
</MudText>
</MudTooltip>
</CellTemplate>
</TemplateColumn>
<TemplateColumn Title="وضعیت ارسال">
<CellTemplate>
<MudChip T="string"
Size="Size.Small"
Color="@GetDeliveryStatusColor(context.Item.DeliveryStatus.GetHashCode())">
@GetDeliveryStatusText(context.Item.DeliveryStatus.GetHashCode())
</MudChip>
</CellTemplate>
</TemplateColumn>
<TemplateColumn StickyLeft="true" Title="عملیات" CellStyle="text-wrap: nowrap;"
HeaderStyle="text-wrap: nowrap;">
<CellTemplate>
<MudStack Row="true" AlignItems="AlignItems.Center">
<MudTooltip Text="جزئیات سفارش">
<MudIconButton Icon="@Icons.Material.Filled.Info"
Size="Size.Small"
ButtonType="ButtonType.Button"
OnClick="@(() => OpenDetails(context.Item))"
/>
</MudTooltip>
<MudTooltip Text="تغییر وضعیت ارسال">
<MudIconButton Icon="@Icons.Material.Filled.LocalShipping"
Size="Size.Small"
Color="Color.Primary"
ButtonType="ButtonType.Button"
OnClick="@(() => OpenChangeStatus(context.Item))"
/>
</MudTooltip>
<MudTooltip Text="اعمال تخفیف">
<MudIconButton Icon="@Icons.Material.Filled.PriceChange"
Size="Size.Small"
Color="Color.Secondary"
ButtonType="ButtonType.Button"
OnClick="@(() => OpenApplyDiscount(context.Item))"
/>
</MudTooltip>
<MudTooltip Text="لغو سفارش">
<MudIconButton Icon="@Icons.Material.Filled.Cancel"
Size="Size.Small"
Color="Color.Error"
ButtonType="ButtonType.Button"
OnClick="@(() => OpenCancelOrder(context.Item))"
/>
</MudTooltip>
<MudTooltip Text="آرشیو">
<MudIconButton Icon="@Icons.Material.Filled.DeleteOutline" Size="Size.Small"
ButtonType="ButtonType.Button" OnClick="@(() => OnDelete(context.Item))"
/>
</MudTooltip>
</MudStack>
</CellTemplate>
</TemplateColumn>
</Columns>
<NoRecordsContent>
<MudAlert Severity="Severity.Info" Dense="true" Variant="Variant.Text" Class="my-4">موردی یافت نشد.</MudAlert>
</NoRecordsContent>
<PagerContent>
<MudDataGridPager T="DataModel" PageSizeOptions=@(new int[] { 20, 50, 100 })
InfoFormat="سطر {first_item} تا {last_item} از {all_items}"
RowsPerPageString="تعداد در صفحه"/>
</PagerContent>
</MudDataGrid>
</Content>
</BackOffice.Common.BaseComponents.BasePageComponent>