121 lines
4.2 KiB
Plaintext
121 lines
4.2 KiB
Plaintext
@using AyCode.Core.Helpers
|
|
@using DevExpress.Internal.About
|
|
@using FruitBank.Common.Dtos
|
|
@using FruitBankHybrid.Shared.Services.SignalRs
|
|
|
|
@inject FruitBankSignalRClient FruitBankSignalRClient
|
|
|
|
<GridProductDto Data="ProductDtos" IsMasterGrid="IsMasterGrid"
|
|
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
|
|
ColumnResizeMode="GridColumnResizeMode.NextColumn" TextWrapEnabled="false"
|
|
FilterMenuButtonDisplayMode="@(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always)"
|
|
FocusedRowChanged="OnFocusedRowChanged" FocusedRowEnabled="true">
|
|
<Columns>
|
|
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Ascending" />
|
|
<DxGridDataColumn FieldName="Name" />
|
|
<DxGridDataColumn FieldName="Price" />
|
|
<DxGridDataColumn FieldName="AvailableQuantity" />
|
|
<DxGridDataColumn FieldName="StockQuantity" />
|
|
<DxGridDataColumn FieldName="IncomingQuantity" />
|
|
<DxGridDataColumn FieldName="NetWeight" />
|
|
<DxGridDataColumn FieldName="IsMeasurable" />
|
|
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
|
</Columns>
|
|
<DetailRowTemplate>
|
|
@if (IsMasterGrid)
|
|
{
|
|
var productId = ((ProductDto)context.DataItem).Id;
|
|
|
|
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i, productId)" >
|
|
<DxTabPage Text="Rendelések melyben megtalálható">
|
|
@{
|
|
//GetOrderDtosFromDbAsync(productId).Forget();
|
|
//var orderDtos = _orderDtos?.Where(o => o.OrderItemDtos.Any(oi => oi.ProductId == productId)).ToList() ?? [];
|
|
<GridDetailOrderDto OrderDtos="_currentOrderDtos" IsMasterGrid="false"></GridDetailOrderDto>
|
|
}
|
|
</DxTabPage>
|
|
<DxTabPage Text="Rendelés tételek">
|
|
@{
|
|
//GetOrderItemDtosFromDbAsync(productId).Forget();
|
|
//var orderItemDtos = _orderItemDtos?.Where(oi => oi.ProductId == productId).ToList() ?? [];
|
|
<GridDetailOrderItemDto OrderItemDtos="_currentOrderItemDtos" IsMasterGrid="false" />
|
|
}
|
|
|
|
</DxTabPage>
|
|
</DxTabs>
|
|
}
|
|
</DetailRowTemplate>
|
|
|
|
</GridProductDto>
|
|
|
|
|
|
@code {
|
|
private int _activeTabIndex;
|
|
|
|
private List<OrderDto>? _currentOrderDtos;
|
|
private List<OrderItemDto>? _currentOrderItemDtos;
|
|
|
|
private readonly Dictionary<int, List<OrderDto>> _orderDtosByProductId = new();
|
|
private readonly Dictionary<int, List<OrderItemDto>> _orderItemDtosByProductId = new();
|
|
|
|
[Parameter] public bool IsMasterGrid { get; set; } = false;
|
|
[Parameter] public List<ProductDto>? ProductDtos { get; set; }
|
|
//[Parameter] public List<OrderDto>? OrderDtos { get; set; }
|
|
//[Parameter] public List<OrderItemDto>? OrderItemDtos { get; set; }
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
ProductDtos ??= await FruitBankSignalRClient.GetProductDtos();
|
|
|
|
// if (ProductDtos is { Count: > 0 })
|
|
// _currentOrderDtos = await GetOrderDtosFromDbAsync(ProductDtos[0].Id);
|
|
}
|
|
|
|
private async Task<List<OrderDto>> GetOrderDtosFromDbAsync(int productId)
|
|
{
|
|
if (_orderDtosByProductId.TryGetValue(productId, out var orderDtos)) return orderDtos;
|
|
|
|
orderDtos = await FruitBankSignalRClient.GetAllOrderDtoByProductId(productId) ?? [];
|
|
_orderDtosByProductId[productId] = orderDtos;
|
|
|
|
return _currentOrderDtos = orderDtos;
|
|
}
|
|
|
|
private async Task<List<OrderItemDto>> GetOrderItemDtosFromDbAsync(int productId)
|
|
{
|
|
if (_orderItemDtosByProductId.TryGetValue(productId, out var orderItemDtos)) return orderItemDtos;
|
|
|
|
orderItemDtos = await FruitBankSignalRClient.GetAllOrderItemDtoByProductId(productId) ?? [];
|
|
_orderItemDtosByProductId[productId] = orderItemDtos;
|
|
|
|
return _currentOrderItemDtos = orderItemDtos;
|
|
}
|
|
|
|
protected async Task OnFocusedRowChanged(GridFocusedRowChangedEventArgs e)
|
|
{
|
|
var productDto = (ProductDto)e.DataItem;
|
|
|
|
//if (e.Grid.IsDetailRowExpanded(e.VisibleIndex))
|
|
{
|
|
_currentOrderDtos = null;
|
|
_currentOrderDtos = productDto != null ? await GetOrderDtosFromDbAsync(productDto.Id) : [];
|
|
}
|
|
}
|
|
|
|
protected async Task OnActiveTabChanged(int activeTabIndex, int productId)
|
|
{
|
|
_activeTabIndex = activeTabIndex;
|
|
|
|
switch (_activeTabIndex)
|
|
{
|
|
case 0:
|
|
//_currentOrderDtos = null;
|
|
_currentOrderDtos = await GetOrderDtosFromDbAsync(productId);
|
|
break;
|
|
case 1:
|
|
_currentOrderItemDtos = null;
|
|
_currentOrderItemDtos = await GetOrderItemDtosFromDbAsync(productId);
|
|
break;
|
|
}
|
|
}
|
|
} |