@using AyCode.Core.Helpers
@using AyCode.Utils.Extensions
@using FruitBank.Common.Dtos
@using FruitBank.Common.Models
@using FruitBankHybrid.Shared.Components.Grids.GenericAttributes
@using FruitBankHybrid.Shared.Components.Toolbars
@using FruitBankHybrid.Shared.Databases
@using FruitBankHybrid.Shared.Services.SignalRs
@inject LoggedInModel LoggedInModel;
@inject FruitBankSignalRClient FruitBankSignalRClient
@* *@
@* *@
@if (IsMasterGrid && LoggedInModel.IsAdministrator)
{
var orderItemDto = ((OrderItemDto)context.DataItem);
@{
}
@{
var genericAttributeDtos = new AcObservableCollection(orderItemDto.GenericAttributes);
}
}
@if (IsMasterGrid)
{
}
@code {
[Inject] public required DatabaseClient Database { get; set; }
[Parameter] public bool IsMasterGrid { get; set; } = false;
//[Parameter] public OrderDto? OrderDto { get; set; }
[Parameter] public List? OrderItemDtos { get; set; }
[Parameter] public IEnumerable? ProductDtos { get; set; }
string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty;
public MgGridBase Grid;
protected override async Task OnInitializedAsync()
{
await ReloadDataFromDb();
}
private async Task ReloadDataFromDb(bool forceReload = false)
{
LoadingPanelVisibility.Visible = true;
using (await ObjectLock.GetSemaphore().UseWaitAsync())
{
if (ProductDtos == null || !ProductDtos.Any() || forceReload) ProductDtos = await Database.ProductDtoTable.LoadDataAsync(!forceReload);
}
if (IsMasterGrid)
{
using (await ObjectLock.GetSemaphore().UseWaitAsync())
{
if (OrderItemDtos == null) OrderItemDtos = await FruitBankSignalRClient.GetAllOrderItemDtos() ?? [];
else if (OrderItemDtos.Count == 0 || forceReload)
{
OrderItemDtos.Clear();
OrderItemDtos.AddRange(await FruitBankSignalRClient.GetAllOrderItemDtos() ?? []);
}
}
// if (ProductDtos == null || !ProductDtos.Any() || forceReload)
// {
// //ProductDtos = await Database.ProductDtoTable.LoadDataAsync(!forceReload);
// Database.ProductDtoTable.LoadDataAsync(!forceReload).ContinueWith(x =>
// {
// ProductDtos = x.Result;
// }).Forget();
// }
//if (forceReload)
Grid?.Reload();
}
LoadingPanelVisibility.Visible = false;
}
}