@using AyCode.Core.Loggers; @using AyCode.Core.Extensions @using AyCode.Core.Helpers @using AyCode.Core.Interfaces @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBank.Common.Interfaces @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 @* @{ if (context.DataColumn.FieldName == nameof(ShippingItem.ShippingDocumentId)) { @(String.Format("{0:P2}", context.Value)) // format the value as percentage } else { @context.DisplayText } } *@ @{ 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 int GetAllMessageTag { get; set; } [Parameter] public IId? ParentDataItem { get; set; } [Parameter] public IEnumerable? ProductDtos { get; set; } [Parameter] public AcObservableCollection? ShippingItems { get; set; } [Parameter] public AcObservableCollection? ShippingDocuments { get; set; } public bool IsMasterGrid => ParentDataItem == null; public bool ParentDataItemIsShippingDocument => (ParentDataItem is ShippingDocument); string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; const string ExportFileName = "ExportResult"; string _localStorageKey = "GridShippingItem_"; 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) { using (await ObjectLock.GetSemaphore().UseWaitAsync()) { if (ProductDtos == null || !ProductDtos.Any() || forceReload) ProductDtos = await Database.ProductDtoTable.LoadDataAsync(!forceReload); } if (!IsMasterGrid) { if (ShippingDocuments == null && ParentDataItem is ShippingDocument shippingDocumentParent) ShippingDocuments = [shippingDocumentParent]; return; } using (await ObjectLock.GetSemaphore().UseWaitAsync()) { if (ShippingDocuments == null) { ShippingDocuments = new AcObservableCollection(await FruitBankSignalRClient.GetShippingDocuments() ?? []); } else if (ShippingDocuments.Count == 0 || forceReload) { ShippingDocuments.Replace(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 ((args.Grid.IsEditing() || args.Grid.IsEditingNewRow()) && (args.DataItem as IId).Id > 0) await args.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; } }