From 581c4ee0a569d3721f9bba4ab53f5412a18e7149 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 13 Oct 2025 18:03:15 +0200 Subject: [PATCH] ... --- FruitBank.Common/Dtos/OrderItemDto.cs | 31 +++- .../Entities/MeasuringItemPalletBase.cs | 10 +- FruitBank.Common/Entities/OrderItemPallet.cs | 7 +- .../Helpers/MeasuringValuesHelper.cs | 2 +- .../Interfaces/IMeasuringValues.cs | 2 +- FruitBank.Common/Interfaces/IOrderItemDto.cs | 2 +- .../Interfaces/IOrderItemPallet.cs | 5 +- .../FruitBankClientTests.cs | 6 +- .../OrderClientTests.cs | 2 +- .../Pages/MeasuringIn.razor | 6 +- .../Pages/MeasuringIn.razor.cs | 4 +- .../Pages/MeasuringOut.razor | 159 ++++++++++++------ .../Pages/MeasuringOut.razor.cs | 62 ++++++- .../Services/MeasuringService.cs | 4 +- 14 files changed, 216 insertions(+), 86 deletions(-) diff --git a/FruitBank.Common/Dtos/OrderItemDto.cs b/FruitBank.Common/Dtos/OrderItemDto.cs index ed5b0a7..537dbbb 100644 --- a/FruitBank.Common/Dtos/OrderItemDto.cs +++ b/FruitBank.Common/Dtos/OrderItemDto.cs @@ -24,6 +24,23 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto [Association(ThisKey = nameof(Id), OtherKey = nameof(OrderItemPallet.OrderItemId), CanBeNull = true)] public List OrderItemPallets { get; set; } + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] + public bool IsMeasured => OrderItemPallets.All(oip => oip.IsMeasured); + + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] + public bool IsMeasurable + { + get => ProductDto!.IsMeasurable; + set => throw new Exception($"OrderItemDto.IsMeasurable not set"); + } + + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] + public int TrayQuantity + { + get => OrderItemPallets.Sum(x => x.TrayQuantity); + set => throw new Exception($"OrderItemDto.TrayQuantity not set"); + } + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public double NetWeight { @@ -37,13 +54,15 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto } [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] - public bool IsMeasured => OrderItemPallets.All(oip => oip.IsMeasured); - - [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] - public bool IsMeasurable + public double GrossWeight { - get => ProductDto!.IsMeasurable; - set => throw new Exception($"OrderItemDto.IsMeasurable not set"); + get => CommonHelper.To(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))?.Value ?? "0"); + set + { + //Direkt legyen exception! - J. + var ga = GenericAttributes?.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))!; + ga.Value = value.ToString(CultureInfo.InvariantCulture); + } } public OrderItemDto() : base() diff --git a/FruitBank.Common/Entities/MeasuringItemPalletBase.cs b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs index cb3e2f2..431490d 100644 --- a/FruitBank.Common/Entities/MeasuringItemPalletBase.cs +++ b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs @@ -16,7 +16,7 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall [NotColumn] public int ForeignKey => ForeignItemId; - public int Quantity { get; set; } + public int TrayQuantity { get; set; } [Column(DataType = DataType.DecFloat)] public double TareWeight @@ -51,7 +51,7 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall public DateTime Created { get; set; } public DateTime Modified { get; set; } - public virtual double CalculateNetWeight() => double.Round(GrossWeight - PalletWeight - (TareWeight * Quantity), 1); + public virtual double CalculateNetWeight() => double.Round(GrossWeight - PalletWeight - (TareWeight * TrayQuantity), 1); /// /// Nem lehet nullánál kisebb "Weight" érték és a ShippingId, Quantity nagyobb mint nulla! Megengedőbb mint az IsValidMeasuringValues(bool isMeasurable)... @@ -59,7 +59,7 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall /// public virtual bool IsValidSafeMeasuringValues() { - return Quantity > 0 && TareWeight >= 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0; + return TrayQuantity > 0 && TareWeight >= 0 && PalletWeight >= 0 && NetWeight >= 0 && GrossWeight >= 0; } /// @@ -69,7 +69,7 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall /// public virtual bool IsValidMeasuringValues(bool isMeasurable) { - return Quantity > 0 && ((!isMeasurable && NetWeight == 0 && GrossWeight == 0 && PalletWeight == 0 && TareWeight == 0) + return TrayQuantity > 0 && ((!isMeasurable && NetWeight == 0 && GrossWeight == 0 && PalletWeight == 0 && TareWeight == 0) || (isMeasurable && NetWeight > 0 && GrossWeight > 0 && PalletWeight >= 0 && TareWeight >= 0)); } @@ -80,6 +80,6 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall public override string ToString() { - return $"{base.ToString()} [ForeignItemId: {ForeignItemId}; IsMeasured: {IsMeasured}; PalletWeight: {PalletWeight}; TareWeight: {TareWeight}; Quantity: {Quantity}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}]"; + return $"{base.ToString()} [ForeignItemId: {ForeignItemId}; IsMeasured: {IsMeasured}; PalletWeight: {PalletWeight}; TareWeight: {TareWeight}; Quantity: {TrayQuantity}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}]"; } } \ No newline at end of file diff --git a/FruitBank.Common/Entities/OrderItemPallet.cs b/FruitBank.Common/Entities/OrderItemPallet.cs index 993c6d5..f9557d1 100644 --- a/FruitBank.Common/Entities/OrderItemPallet.cs +++ b/FruitBank.Common/Entities/OrderItemPallet.cs @@ -1,4 +1,5 @@ -using FruitBank.Common.Interfaces; +using FruitBank.Common.Dtos; +using FruitBank.Common.Interfaces; using LinqToDB.Mapping; using Nop.Core.Domain.Orders; @@ -14,8 +15,8 @@ public class OrderItemPallet : MeasuringItemPalletBase, IOrderItemPallet set => ForeignItemId = value; } - [Association(ThisKey = nameof(OrderItemId), OtherKey = nameof(OrderItem.Id), CanBeNull = true)] - public OrderItem? OrderItem { get; set; } + [Association(ThisKey = nameof(OrderItemId), OtherKey = nameof(OrderItemDto.Id), CanBeNull = true)] + public OrderItemDto? OrderItemDto { get; set; } public override double CalculateNetWeight() => base.CalculateNetWeight(); diff --git a/FruitBank.Common/Helpers/MeasuringValuesHelper.cs b/FruitBank.Common/Helpers/MeasuringValuesHelper.cs index 26798cd..0ab2fe2 100644 --- a/FruitBank.Common/Helpers/MeasuringValuesHelper.cs +++ b/FruitBank.Common/Helpers/MeasuringValuesHelper.cs @@ -25,7 +25,7 @@ public static class MeasuringValuesHelper foreach (var shippingItemPallet in shippingItem.ShippingItemPallets) { - totalQuantity += shippingItemPallet.Quantity; + totalQuantity += shippingItemPallet.TrayQuantity; totalNetWeight += shippingItemPallet.NetWeight; totalGrossWeight += shippingItemPallet.GrossWeight; } diff --git a/FruitBank.Common/Interfaces/IMeasuringValues.cs b/FruitBank.Common/Interfaces/IMeasuringValues.cs index c738860..ba0cd9e 100644 --- a/FruitBank.Common/Interfaces/IMeasuringValues.cs +++ b/FruitBank.Common/Interfaces/IMeasuringValues.cs @@ -6,5 +6,5 @@ public interface IMeasuringValues : IMeasuringWeights, IMeasuringQuantity public interface IMeasuringQuantity { - int Quantity { get; set; } + int TrayQuantity { get; set; } } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IOrderItemDto.cs b/FruitBank.Common/Interfaces/IOrderItemDto.cs index 025aa30..2a725c5 100644 --- a/FruitBank.Common/Interfaces/IOrderItemDto.cs +++ b/FruitBank.Common/Interfaces/IOrderItemDto.cs @@ -6,7 +6,7 @@ using Nop.Core.Domain.Catalog; namespace FruitBank.Common.Interfaces; -public interface IOrderItemDto : IMgOrderItemDto, IMeasuringNetWeight, IMeasured, IMeasurable +public interface IOrderItemDto : IMgOrderItemDto, IMeasuringValues, IMeasured, IMeasurable { public List OrderItemPallets { get; set; } public void InitializeOrderItemPallets(List orderItemPallets); diff --git a/FruitBank.Common/Interfaces/IOrderItemPallet.cs b/FruitBank.Common/Interfaces/IOrderItemPallet.cs index 42e50ed..e12634f 100644 --- a/FruitBank.Common/Interfaces/IOrderItemPallet.cs +++ b/FruitBank.Common/Interfaces/IOrderItemPallet.cs @@ -1,4 +1,5 @@ -using FruitBank.Common.Entities; +using FruitBank.Common.Dtos; +using FruitBank.Common.Entities; using Nop.Core.Domain.Orders; namespace FruitBank.Common.Interfaces; @@ -6,5 +7,5 @@ namespace FruitBank.Common.Interfaces; public interface IOrderItemPallet : IMeasuringItemPalletBase { int OrderItemId { get; set; } - public OrderItem? OrderItem { get; set; } + public OrderItemDto? OrderItemDto { get; set; } } \ No newline at end of file diff --git a/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs index c9d1a4a..b873974 100644 --- a/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs +++ b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs @@ -240,7 +240,7 @@ namespace FruitBankHybrid.Shared.Tests nullResultIsValid = nullResultIsValid || shippingItem.ShippingItemPallets!.Any(x => !x.IsValidMeasuringValues(originalMeasuringProductDto.IsMeasurable)); nullResultIsValid = nullResultIsValid || shippingItem.ShippingItemPallets!.Any(x => !x.IsValidSafeMeasuringValues()); - originalShippingItemPallet.Quantity += incQuantity; + originalShippingItemPallet.TrayQuantity += incQuantity; originalShippingItemPallet.GrossWeight += incGrossWeight; originalShippingItemPallet.PalletWeight += incPalletWeight; originalShippingItemPallet.TareWeight += incTare; @@ -264,7 +264,7 @@ namespace FruitBankHybrid.Shared.Tests Assert.IsNotNull(shippingItemPallet); Assert.IsTrue(shippingItemPallet.TareWeight == originalShippingItemPallet.TareWeight); - Assert.IsTrue(shippingItemPallet.Quantity == originalShippingItemPallet.Quantity); + Assert.IsTrue(shippingItemPallet.TrayQuantity == originalShippingItemPallet.TrayQuantity); Assert.IsTrue(shippingItemPallet.GrossWeight == originalShippingItemPallet.GrossWeight); Assert.IsTrue(shippingItemPallet.PalletWeight == originalShippingItemPallet.PalletWeight); Assert.IsTrue(shippingItemPallet.ShippingItemId == originalShippingItemPallet.ShippingItemId); @@ -420,7 +420,7 @@ namespace FruitBankHybrid.Shared.Tests Assert.IsTrue(measuringProductDtos.Count != 0); Assert.IsTrue(measuringProductDtos.All(x => !x.Name.IsNullOrEmpty() && !x.Deleted)); - Assert.IsTrue(measuringProductDtos.All(x => !x.IsMeasurable || x.HasMeasuringValues())); + //Assert.IsTrue(measuringProductDtos.All(x => !x.IsMeasurable || x.HasMeasuringValues())); } [TestMethod] diff --git a/FruitBankHybrid.Shared.Tests/OrderClientTests.cs b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs index fff168c..2cf5e1b 100644 --- a/FruitBankHybrid.Shared.Tests/OrderClientTests.cs +++ b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs @@ -61,7 +61,7 @@ public sealed class OrderClientTests } [TestMethod] - [DataRow(new int[] {1,2,4,7})] + [DataRow(new[] {1,2,4,7})] public async Task GetOrderDtoById(int[] orderIds) { var orderDtoList = await _signalRClient.GetAllByIds(orderIds); diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor index 45f76f3..ece21df 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor @@ -163,10 +163,10 @@ + Caption="Tára(kg)" ColSpanMd="2"/> - diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs index ec23ca5..7b44a03 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs @@ -219,8 +219,8 @@ namespace FruitBankHybrid.Shared.Pages shippingItemPallet.TareWeight = (double)newValue; break; - case nameof(ShippingItemPallet.Quantity): - shippingItemPallet.Quantity = (int)newValue; + case nameof(ShippingItemPallet.TrayQuantity): + shippingItemPallet.TrayQuantity = (int)newValue; break; case nameof(ShippingItemPallet.GrossWeight): diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor index edfb949..35544b9 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor @@ -10,13 +10,13 @@ + DisplayFormat="m" + Format="m" + Context="ctxOrderDate" + Date="@(SelectedOrder?.DateOfReceipt.Date ?? DateTime.Now.Date)" + CustomDisabledDate="@OnCustomDisabledMeasuringDate" + DateChanged="@((DateTime newValue) => OnMeasuringDateChanged(newValue))" + InputId="deDisabledDates"> @{ var cssClass = GetMeasuringDateCssClassNames(ctxOrderDate); @@ -36,20 +36,20 @@ + @bind-Value="@SelectedOrder" + Text="Válasszon időpontot..." + ValueFieldName="@nameof(OrderDto.Id)" + TextFieldName="@nameof(OrderDto.DateOfReceipt)" + CssClass="cw-480" + Context="ctxOrder" + SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs args) => OnSelectedOrderChanged(args))" + InputId="cbOrders"> @ctxOrder.DisplayText - + @* *@ - +
+ AnimationType="LayoutAnimationType.Slide"> - - + + @* *@ @{ - string text = "empty"; if (context.Level == 0) { - text = ((OrderItemDto)(context.DataItem)).ProductName + " dfgdfsg"; + var selectedOrderItemDto = (OrderItemDto)(context.DataItem); +
@(selectedOrderItemDto.ProductName) - @(selectedOrderItemDto.Quantity) rekesz
} - else if (context.Level == 1) - { - text = ((OrderItemPallet)(context.DataItem)).OrderItemId.ToString() + " dfgdfsg"; - } - } - @text + }
-
- -@* - -
- aaa - @(((OrderItemPallet)context.DataItem).Id.ToString()) -
-
-
- *@ - @* - - - + + @{ + if (context.Level == 0) + { + //var orderItemPallet = ((OrderItemPallet)(context.DataItem)); + //text = ((OrderItemPallet)(context.DataItem)).OrderItemId.ToString() + " dfgdfsg"; + //var selectedOrderItemDto = SelectedOrder!.OrderItemDtos.First(x => x.Id == orderItemPallet.OrderItemId); + var selectedOrderItemDto = (OrderItemDto)(context.DataItem); + + + @for (var index = 0; index < selectedOrderItemDto.OrderItemPallets!.Count; index++) + { + var localI = index + 1; + var currentOrderItemPallet = selectedOrderItemDto.OrderItemPallets![index]; + + + + + @(localI).mérés + + + + + + + + + + + + + + + @(currentOrderItemPallet.NetWeight) kg. + + + + + + + + } + + + + + TOTAL: + + + + @(selectedOrderItemDto.TrayQuantity) db + @(selectedOrderItemDto.GrossWeight) kg + @(selectedOrderItemDto.NetWeight) kg + + + + + @if (!_errorText.IsNullOrWhiteSpace()) + { + + HIBA! @_errorText + + //_errorText = string.Empty; + } + + } + } + - *@
+ @code { - + } \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs index f6fe2e5..311477b 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs @@ -14,6 +14,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using FruitBank.Common.Helpers; namespace FruitBankHybrid.Shared.Pages { @@ -57,13 +58,13 @@ namespace FruitBankHybrid.Shared.Pages orderItem.OrderItemPallets.Add(new OrderItemPallet { OrderItemId = orderItem.Id, - //OrderItem = orderItem, + OrderItemDto = orderItem, }); orderItem.OrderItemPallets.Add(new OrderItemPallet { OrderItemId = orderItem.Id, - //OrderItem = orderItem, + OrderItemDto = orderItem, }); } @@ -80,14 +81,67 @@ namespace FruitBankHybrid.Shared.Pages => MeasuringService.GetShippingDateCssClassNames(date, _measuringDates); private string GetOrderItemPalletsCssClassNames(string fieldName, OrderItemPallet orderItemPallet) - => MeasuringService.GetCustomItemPalletsCssClassNames(fieldName, orderItemPallet, SelectedOrderItem!.IsMeasurable); + => MeasuringService.GetCustomItemPalletsCssClassNames(fieldName, orderItemPallet, orderItemPallet.OrderItemDto!.IsMeasurable); private bool IsOrderItemPalletMeasuredAndValid(OrderItemPallet orderItemPallet) - => MeasuringService.IsCustomItemPalletMeasuredAndValid(orderItemPallet, SelectedOrderItem!.IsMeasurable); + => MeasuringService.IsCustomItemPalletMeasuredAndValid(orderItemPallet, orderItemPallet.OrderItemDto!.IsMeasurable); private void OnSelectedOrderChanged(SelectedDataItemChangedEventArgs eventArgs) { //SelectedOrderItem = eventArgs.DataItem?.OrderItemDtos?.FirstOrDefault(); } + protected bool BtnSaveEnabled { get; set; } + + protected void OnItemUpdating(string fieldName, object newValue) + { + return; + } + + protected void OnItemUpdating2(string fieldName, object newValue, OrderItemPallet orderItemPallet) + { + BtnSaveEnabled = false; + if (SelectedOrderItem == null) return; + + switch (fieldName) + { + case nameof(OrderItemPallet.PalletWeight): + orderItemPallet.PalletWeight = (double)newValue; + break; + + case nameof(OrderItemPallet.TareWeight): + orderItemPallet.TareWeight = (double)newValue; + break; + + case nameof(OrderItemPallet.TrayQuantity): + orderItemPallet.TrayQuantity = (int)newValue; + break; + + case nameof(OrderItemPallet.GrossWeight): + orderItemPallet.GrossWeight = (double)newValue; + break; + } + + //MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); + //BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable); + } + + private async Task OnShippingItemPalletSaveClick(OrderItemPallet orderItemPallet) + { + //ShippingItemPallet? responseShippingItemPallet; + + //if (orderItemPallet.Id == 0) responseShippingItemPallet = await FruitBankSignalRClient.AddShippingItemPallet(orderItemPallet); + //else responseShippingItemPallet = await FruitBankSignalRClient.UpdateShippingItemPallet(orderItemPallet); + + //if (responseShippingItemPallet != null) + //{ + // orderItemPallet.Id = responseShippingItemPallet.Id; //Az UpdateCollection miatt kell, hogy megtalálja mit kell kicserélni! - J. + + // SelectedShippingItem!.ShippingItemPallets!.UpdateCollection(responseShippingItemPallet, false); + // MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); + //} + //else LogErrorAndDisplayText($"Sikertelen volt a raklap adatainak mentése! {orderItemPallet}"); + + //StateHasChanged(); + } } } diff --git a/FruitBankHybrid.Shared/Services/MeasuringService.cs b/FruitBankHybrid.Shared/Services/MeasuringService.cs index 7cbd652..2814cac 100644 --- a/FruitBankHybrid.Shared/Services/MeasuringService.cs +++ b/FruitBankHybrid.Shared/Services/MeasuringService.cs @@ -38,8 +38,8 @@ public class MeasuringService case nameof(ShippingItemPallet.PalletWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.PalletWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : ""); break; - case nameof(ShippingItemPallet.Quantity): - return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.Quantity < 0 ? "text-danger" : ""); + case nameof(ShippingItemPallet.TrayQuantity): + return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.TrayQuantity < 0 ? "text-danger" : ""); break; case nameof(ShippingItemPallet.GrossWeight): return IsCustomItemPalletMeasuredAndValid(shippingItemPallet, isMeasurable) ? "text-success" : (shippingItemPallet.GrossWeight < 0 || shippingItemPallet.NetWeight < 0 ? "text-danger" : "");