@using AyCode.Core.Loggers; @using AyCode.Core.Extensions @using AyCode.Core.Helpers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.ShippingItems @using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers; @using FruitBankHybrid.Shared.Services.SignalRs @inject IEnumerable LogWriters @inject FruitBankSignalRClient FruitBankSignalRClient @* Data="ShippingItems" IsMasterGrid="IsMasterGrid" CssClass="@GridCss" AutoSaveLayoutName="GridShippingItem" ValidationEnabled="false" EditMode="GridEditMode.EditRow" EditModelSaving="Grid_EditModelSaving" FocusedRowChanged="Grid_FocusedRowChanged" *@ @* *@ @* *@ @{ var shippingItemPallets = ((ShippingItem)context.DataItem).ShippingItemPallets; } @if (IsMasterGrid) { } @* *@ @code { //[Inject] public required ObjectLock ObjectLock { get; set; } [Inject] public required DatabaseClient Database { get; set; } [Parameter] public bool IsMasterGrid { get; set; } = false; [Parameter] public IEnumerable? ProductDtos { get; set; } [Parameter] public List? ShippingItems { get; set; } [Parameter] public List? ShippingDocuments { get; set; } string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; const string ExportFileName = "ExportResult"; string _localStorageKey = "GridShippingDocument_"; string GridSearchText = ""; bool EditItemsEnabled { get; set; } = true; int FocusedRowVisibleIndex { get; set; } public GridShippingItemBase Grid { get; set; } private LoggerClient _logger; protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); await ReloadDataFromDb(false); } public async Task ReloadDataFromDb(bool forceReload = false) { if (!IsMasterGrid) return; using (await ObjectLock.GetSemaphore().UseWaitAsync()) { if (ProductDtos == null || !ProductDtos.Any() || forceReload) ProductDtos = await Database.ProductDtoTable.LoadDataAsync(!forceReload); } using (await ObjectLock.GetSemaphore().UseWaitAsync()) { if (ShippingDocuments == null) ShippingDocuments = await FruitBankSignalRClient.GetShippingDocuments() ?? []; else if (ShippingDocuments.Count == 0 || forceReload) { ShippingDocuments.Clear(); ShippingDocuments.AddRange(await FruitBankSignalRClient.GetShippingDocuments() ?? []); } } if (Grid == null) return; using (await ObjectLock.GetSemaphore().UseWaitAsync()) if (forceReload) await Grid.ReloadDataSourceAsync(); if (forceReload) Grid.Reload(); } async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args) { if (Grid != null && Grid.IsEditing() && !Grid.IsEditingNewRow()) await Grid.SaveChangesAsync(); FocusedRowVisibleIndex = args.VisibleIndex; EditItemsEnabled = true; } async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) { } async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) { ShippingItem? resultShippingItem = null; if (!e.IsNew) { resultShippingItem = await FruitBankSignalRClient.UpdateShippingItem((ShippingItem)e.EditModel); } else { resultShippingItem = await FruitBankSignalRClient.AddShippingItem((ShippingItem)e.EditModel); EditItemsEnabled = true; } // if (resultShippingItem != null) // ShippingItems!.UpdateCollection(resultShippingItem, false); EditItemsEnabled = true; } }