From a2b22e8bf28dca52b5b51e70cb1c696625a5c2cf Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 5 Jan 2026 09:13:37 +0100 Subject: [PATCH] small fixes and android build changes --- FruitBank.Common/Dtos/OrderItemDto.cs | 3 +- FruitBank.Common/FruitBankConstClient.cs | 6 +- .../Components/GridShippingItemTemplate.razor | 425 +++++++++--------- FruitBankHybrid.Shared/Layout/NavMenu.razor | 2 +- .../FruitBankHybrid.Web.Client.csproj | 2 +- .../FruitBankHybrid.Web.csproj | 2 +- FruitBankHybrid/FruitBankHybrid.csproj | 10 +- .../Platforms/Windows/Package.appxmanifest | 2 +- FruitBankHybrid/fruitbank.keystore | Bin 0 -> 2750 bytes 9 files changed, 230 insertions(+), 222 deletions(-) create mode 100644 FruitBankHybrid/fruitbank.keystore diff --git a/FruitBank.Common/Dtos/OrderItemDto.cs b/FruitBank.Common/Dtos/OrderItemDto.cs index 59fb1d5..1a8f9c5 100644 --- a/FruitBank.Common/Dtos/OrderItemDto.cs +++ b/FruitBank.Common/Dtos/OrderItemDto.cs @@ -92,8 +92,7 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto public double AverageWeightDifference => IsMeasurable ? double.Round(ProductDto!.AverageWeight - AverageWeight, 1) : 0; [NotColumn, NotMapped, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] - public bool AverageWeightIsValid => !IsMeasurable || - (ProductDto!.AverageWeight > 0 && ((AverageWeightDifference / ProductDto!.AverageWeight) * 100) < ProductDto!.AverageWeightTreshold); + public bool AverageWeightIsValid => !IsMeasurable || (ProductDto!.AverageWeight > 0 && Math.Abs((AverageWeightDifference / ProductDto!.AverageWeight) * 100) < ProductDto!.AverageWeightTreshold); [NotColumn, NotMapped, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public bool IsAudited => OrderItemPallets.Count > 0 && OrderItemPallets.All(oip => oip.IsAudited); diff --git a/FruitBank.Common/FruitBankConstClient.cs b/FruitBank.Common/FruitBankConstClient.cs index a90f6ad..f47072e 100644 --- a/FruitBank.Common/FruitBankConstClient.cs +++ b/FruitBank.Common/FruitBankConstClient.cs @@ -7,11 +7,11 @@ public static class FruitBankConstClient { public static string DefaultLocale = "en-US"; - public static string BaseUrl = "https://localhost:59579"; //FrutiBank nop + //public static string BaseUrl = "https://localhost:59579"; //FrutiBank nop //public static string BaseUrl = "https://localhost:44372"; //FrutiBank nop - //public static string BaseUrl = "https://shop.fruitbank.hu"; //FrutiBank nop + public static string BaseUrl = "https://shop.fruitbank.hu"; //FrutiBank nop #if RELEASE - // public static string BaseUrl = "https://shop.fruitbank.hu"; //FrutiBank nop + //public static string BaseUrl = "https://shop.fruitbank.hu"; //FrutiBank nop #endif //public static string BaseUrl = "http://localhost:59579"; //FrutiBank nop diff --git a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor index 665ba23..afd365c 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor @@ -17,79 +17,80 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - + + + - - + + + - - - - - @* + + + + + @* @{ if (context.DataColumn.FieldName == nameof(ShippingItem.ShippingDocumentId)) { @@ -103,185 +104,185 @@ } *@ - @{ - var shippingItemPallets = ((ShippingItem)context.DataItem).ShippingItemPallets; - - } - - - @if (IsMasterGrid) - { - - } - - - - - - - - + @{ + var shippingItemPallets = ((ShippingItem)context.DataItem).ShippingItemPallets; + + } + + + @if (IsMasterGrid) + { + + } + + + + + + + + @code { - //[Inject] public required ObjectLock ObjectLock { get; set; } - [Inject] public required DatabaseClient Database { get; set; } + //[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 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; } + [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; + public bool IsMasterGrid => ParentDataItem == null; + public bool ParentDataItemIsShippingDocument => (ParentDataItem is ShippingDocument); + string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; - MgGridToolbarTemplate toolbar; + MgGridToolbarTemplate toolbar; - const string ExportFileName = "ExportResult"; - string _localStorageKey = "GridShippingItem_"; + const string ExportFileName = "ExportResult"; + string _localStorageKey = "GridShippingItem_"; - string GridSearchText = ""; - bool EditItemsEnabled { get; set; } = true; - int FocusedRowVisibleIndex { get; set; } + string GridSearchText = ""; + bool EditItemsEnabled { get; set; } = true; + int FocusedRowVisibleIndex { get; set; } - public GridShippingItemBase Grid { get; set; } - private LoggerClient _logger; + public GridShippingItemBase Grid { get; set; } + private LoggerClient _logger; - protected override async Task OnInitializedAsync() - { - _logger = new LoggerClient(LogWriters.ToArray()); + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); - await ReloadDataFromDb(false); - } + 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); - } + 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; - } + 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() ?? []); - } - } + 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; + if (Grid == null) return; - using (await ObjectLock.GetSemaphore().UseWaitAsync()) - if (forceReload) await Grid.ReloadDataSourceAsync(); + using (await ObjectLock.GetSemaphore().UseWaitAsync()) + if (forceReload) await Grid.ReloadDataSourceAsync(); - if (forceReload) Grid.Reload(); - } + if (forceReload) Grid.Reload(); + } - static void Grid_CustomizeElement(GridCustomizeElementEventArgs e) - { - if (e.ElementType != GridElementType.DataCell) return; + static void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + { + if (e.ElementType != GridElementType.DataCell) return; - if (e.Column.Name != nameof(ShippingItem.MeasuredNetWeight) && - e.Column.Name != nameof(ShippingItem.MeasuredGrossWeight) && - e.Column.Name != nameof(ShippingItem.MeasuredQuantity)) return; + if (e.Column.Name != nameof(ShippingItem.MeasuredNetWeight) && + e.Column.Name != nameof(ShippingItem.MeasuredGrossWeight) && + e.Column.Name != nameof(ShippingItem.MeasuredQuantity)) return; - var isMeasured = (bool)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.IsMeasured)); - if (!isMeasured) return; + var isMeasured = (bool)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.IsMeasured)); + if (!isMeasured) return; - switch (e.Column.Name) - { - case nameof(ShippingItem.MeasuredNetWeight) or nameof(ShippingItem.MeasuredGrossWeight): - { - var isMeasurable = (bool)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.IsMeasurable)); - if (!isMeasurable) return; + switch (e.Column.Name) + { + case nameof(ShippingItem.MeasuredNetWeight) or nameof(ShippingItem.MeasuredGrossWeight): + { + var isMeasurable = (bool)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.IsMeasurable)); + if (!isMeasurable) return; - var valueOnDocument = 0d; - var measuredValue = 0d; + var valueOnDocument = 0d; + var measuredValue = 0d; - if (e.Column.Name == nameof(ShippingItem.MeasuredGrossWeight)) - { - valueOnDocument = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.GrossWeightOnDocument)); - measuredValue = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredGrossWeight)); - } - else - { - valueOnDocument = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.NetWeightOnDocument)); - measuredValue = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredNetWeight)); - } + if (e.Column.Name == nameof(ShippingItem.MeasuredGrossWeight)) + { + valueOnDocument = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.GrossWeightOnDocument)); + measuredValue = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredGrossWeight)); + } + else + { + valueOnDocument = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.NetWeightOnDocument)); + measuredValue = (double)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredNetWeight)); + } - if (valueOnDocument > 0 && valueOnDocument > measuredValue) e.CssClass = "text-danger"; - //else if (valueOnDocument <= measuredValue) e.CssClass = "text-success"; + if (valueOnDocument > 0 && valueOnDocument > measuredValue) e.CssClass = "text-danger"; + else if (valueOnDocument > 0 && valueOnDocument < measuredValue) e.CssClass = "text-success"; - break; - } - case nameof(ShippingItem.MeasuredQuantity): - { - var quantityOnDocument = (int)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.QuantityOnDocument)); - var measuredQuantity = (int)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredQuantity)); + break; + } + case nameof(ShippingItem.MeasuredQuantity): + { + var quantityOnDocument = (int)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.QuantityOnDocument)); + var measuredQuantity = (int)e.Grid.GetRowValue(e.VisibleIndex, nameof(ShippingItem.MeasuredQuantity)); - if (quantityOnDocument > 0 && quantityOnDocument > measuredQuantity) e.CssClass = "text-danger"; - //else if (quantityOnDocument <= measuredQuantity) e.CssClass = "text-success"; - break; - } - } - } + if (quantityOnDocument > 0 && quantityOnDocument > measuredQuantity) e.CssClass = "text-danger"; + //else if (quantityOnDocument <= measuredQuantity) e.CssClass = "text-success"; + break; + } + } + } - async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args) - { - if ((args.Grid.IsEditing() || args.Grid.IsEditingNewRow()) && (args.DataItem as IId).Id > 0) - await args.Grid.SaveChangesAsync(); + async Task Grid_FocusedRowChanged(GridFocusedRowChangedEventArgs args) + { + if ((args.Grid.IsEditing() || args.Grid.IsEditingNewRow()) && (args.DataItem as IId).Id > 0) + await args.Grid.SaveChangesAsync(); - if (toolbar != null) - { - var shippingItem = (args.DataItem as ShippingItem)!; - toolbar.EnableDelete = shippingItem.MeasuringStatus == MeasuringStatus.NotStarted; + if (toolbar != null) + { + var shippingItem = (args.DataItem as ShippingItem)!; + toolbar.EnableDelete = shippingItem.MeasuringStatus == MeasuringStatus.NotStarted; - } + } - FocusedRowVisibleIndex = args.VisibleIndex; - EditItemsEnabled = true; - } + FocusedRowVisibleIndex = args.VisibleIndex; + EditItemsEnabled = true; + } - async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) - { - } + async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) + { + } - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) - { - ShippingItem? resultShippingItem = null; + 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 (!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); + // if (resultShippingItem != null) + // ShippingItems!.UpdateCollection(resultShippingItem, false); - EditItemsEnabled = true; - } + EditItemsEnabled = true; + } } \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Layout/NavMenu.razor b/FruitBankHybrid.Shared/Layout/NavMenu.razor index b2a2d3c..03b9081 100644 --- a/FruitBankHybrid.Shared/Layout/NavMenu.razor +++ b/FruitBankHybrid.Shared/Layout/NavMenu.razor @@ -37,7 +37,7 @@ - @if (LoggedInModel.IsDeveloper) + @if (LoggedInModel.IsAdministrator) {