diff --git a/FruitBank.Common/Dtos/OrderDto.cs b/FruitBank.Common/Dtos/OrderDto.cs index 5d9df04..4094df9 100644 --- a/FruitBank.Common/Dtos/OrderDto.cs +++ b/FruitBank.Common/Dtos/OrderDto.cs @@ -27,7 +27,11 @@ public class OrderDto : MgOrderDto, IOrderDto public List GenericAttributes { get; set; } [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] - public bool IsMeasured => OrderItemDtos.All(oi => oi.IsMeasured); + public bool IsMeasured + { + get => IsMeasuredAndValid(); + set => throw new Exception($"OrderDto.IsMeasured not set"); + } [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public bool IsMeasurable @@ -52,4 +56,8 @@ public class OrderDto : MgOrderDto, IOrderDto { } public OrderDto(Order order) : base(order) { } + + public bool IsMeasuredAndValid() => Id > 0 && OrderItemDtos.Count > 0 && OrderItemDtos.All(x => x.IsMeasured); + public bool IsValidMeasuringValues() => OrderItemDtos.Count > 0 && OrderItemDtos.All(x => x.IsValidMeasuringValues()); + } \ No newline at end of file diff --git a/FruitBank.Common/Dtos/OrderItemDto.cs b/FruitBank.Common/Dtos/OrderItemDto.cs index 537dbbb..17a009a 100644 --- a/FruitBank.Common/Dtos/OrderItemDto.cs +++ b/FruitBank.Common/Dtos/OrderItemDto.cs @@ -24,8 +24,15 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto [Association(ThisKey = nameof(Id), OtherKey = nameof(OrderItemPallet.OrderItemId), CanBeNull = true)] public List OrderItemPallets { get; set; } + [Association(ThisKey = nameof(OrderId), OtherKey = nameof(OrderDto.Id), CanBeNull = false)] + public OrderDto OrderDto { get; set; } + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] - public bool IsMeasured => OrderItemPallets.All(oip => oip.IsMeasured); + public bool IsMeasured + { + get => IsMeasuredAndValid(); + set => throw new Exception($"OrderItemDto.IsMeasured not set"); + } [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public bool IsMeasurable @@ -44,12 +51,17 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public double NetWeight { - get => CommonHelper.To(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))?.Value ?? "0"); + get + { + return double.Round(OrderItemPallets.Sum(x => x.NetWeight), 1); + //return CommonHelper.To(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))?.Value ?? "0"); + } set { - //Direkt legyen exception! - J. - var ga = GenericAttributes?.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))!; - ga.Value = value.ToString(CultureInfo.InvariantCulture); + throw new Exception($"OrderItemDto.NetWeight not set"); + ////Direkt legyen exception! - J. + //var ga = GenericAttributes?.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))!; + //ga.Value = value.ToString(CultureInfo.InvariantCulture); } } @@ -88,4 +100,7 @@ public class OrderItemDto : MgOrderItemDto, IOrderItemDto { OrderItemPallets = orderItemPallets; } + + public bool IsMeasuredAndValid() => Id > 0 && IsValidMeasuringValues() && OrderItemPallets.All(oip => oip.IsMeasuredAndValid(IsMeasurable)); + public bool IsValidMeasuringValues() => OrderItemPallets.Count > 0 && (!IsMeasurable || NetWeight > 0) && TrayQuantity == Quantity; } \ No newline at end of file diff --git a/FruitBank.Common/Entities/MeasuringItemPalletBase.cs b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs index 431490d..db1348f 100644 --- a/FruitBank.Common/Entities/MeasuringItemPalletBase.cs +++ b/FruitBank.Common/Entities/MeasuringItemPalletBase.cs @@ -2,6 +2,7 @@ using LinqToDB; using LinqToDB.Mapping; using Mango.Nop.Core.Entities; +using Newtonsoft.Json; namespace FruitBank.Common.Entities; @@ -32,7 +33,12 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall set => _palletWeight = double.Round(value, 1); } - [NotColumn] public double NetWeight => CalculateNetWeight(); + [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] + public double NetWeight + { + get => CalculateNetWeight(); + set => throw new Exception($"MeasuringItemPalletBase.NetWeight not set"); + } [Column(DataType = DataType.DecFloat, CanBeNull = false)] public double GrossWeight @@ -78,6 +84,18 @@ public abstract class MeasuringItemPalletBase : MgEntityBase, IMeasuringItemPall return Id > 0 && IsMeasured && IsValidMeasuringValues(isMeasurable); } + public virtual void SetupCustomItemPalletMeauringValues(bool isMeasurable) + { + if (!isMeasurable) + { + TareWeight = 0; + PalletWeight = 0; + GrossWeight = 0; + } + + IsMeasured = IsValidMeasuringValues(isMeasurable); + } + public override string ToString() { return $"{base.ToString()} [ForeignItemId: {ForeignItemId}; IsMeasured: {IsMeasured}; PalletWeight: {PalletWeight}; TareWeight: {TareWeight}; Quantity: {TrayQuantity}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}]"; diff --git a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointClient.cs b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointClient.cs index e83a7cd..6b56816 100644 --- a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointClient.cs +++ b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointClient.cs @@ -1,4 +1,6 @@ -namespace FruitBank.Common.Interfaces; +using FruitBank.Common.Dtos; + +namespace FruitBank.Common.Interfaces; public interface ICustomOrderSignalREndpointClient : ICustomOrderSignalREndpointCommon { diff --git a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs index 7c39269..0218743 100644 --- a/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs +++ b/FruitBank.Common/Interfaces/ICustomOrderSignalREndpointCommon.cs @@ -1,4 +1,5 @@ using FruitBank.Common.Dtos; +using FruitBank.Common.Entities; using Mango.Nop.Core.Models; namespace FruitBank.Common.Interfaces; @@ -7,6 +8,8 @@ public interface ICustomOrderSignalREndpointCommon { Task?> GetAllOrderDtos(); Task?> GetPendingOrderDtos(); - Task?> GetAllByIds(int[] orderIds); + Task?> GetAllOrderDtoByIds(int[] orderIds); Task GetOrderDtoById(int orderId); + Task AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet); + Task SetOrderStatusToComplete(int orderId); } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs index 37d48d2..65b69b7 100644 --- a/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs +++ b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs @@ -34,6 +34,7 @@ public interface IFruitBankDataControllerCommon #region ShippingItemPallet public Task AddShippingItemPallet(ShippingItemPallet shippingItemPallet); public Task UpdateShippingItemPallet(ShippingItemPallet shippingItemPallet); + public Task AddOrUpdateMeasuredShippingItemPallet(ShippingItemPallet shippingItemPallet); public Task AddOrUpdateMeasuredShippingItemPallets(List shippingItemPallets); #endregion ShippingItemPallet diff --git a/FruitBank.Common/Interfaces/IMeasured.cs b/FruitBank.Common/Interfaces/IMeasured.cs index a981f90..b87db81 100644 --- a/FruitBank.Common/Interfaces/IMeasured.cs +++ b/FruitBank.Common/Interfaces/IMeasured.cs @@ -2,5 +2,5 @@ public interface IMeasured { - bool IsMeasured { get; } + bool IsMeasured { get; set; } } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs b/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs index ec2ed1e..a1d35f7 100644 --- a/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs +++ b/FruitBank.Common/Interfaces/IMeasuringItemPalletBase.cs @@ -5,16 +5,19 @@ using FruitBank.Common.Entities; namespace FruitBank.Common.Interfaces; -public interface IMeasuringItemPalletBase : IEntityInt, IMeasuringQuantity, IMeasuringGrossWeight, IMeasured, ITimeStampInfo, ICustomForeignKeyInt +public interface IMeasuringItemPalletBase : IEntityInt, IMeasuringValues, IMeasured, ITimeStampInfo, ICustomForeignKeyInt { - public double TareWeight { get; set; } - public double PalletWeight { get; set; } + double TareWeight { get; set; } + double PalletWeight { get; set; } - public int? CreatorId { get; set; } - public int? ModifierId { get; set; } + int? CreatorId { get; set; } + int? ModifierId { get; set; } - public double CalculateNetWeight(); + double CalculateNetWeight(); - public bool IsValidSafeMeasuringValues(); - public bool IsValidMeasuringValues(bool isMeasurable); + bool IsValidSafeMeasuringValues(); + bool IsValidMeasuringValues(bool isMeasurable); + bool IsMeasuredAndValid(bool isMeasurable); + + void SetupCustomItemPalletMeauringValues(bool isMeasurable); } \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IOrderItemDto.cs b/FruitBank.Common/Interfaces/IOrderItemDto.cs index 2a725c5..08c7ecc 100644 --- a/FruitBank.Common/Interfaces/IOrderItemDto.cs +++ b/FruitBank.Common/Interfaces/IOrderItemDto.cs @@ -8,6 +8,7 @@ namespace FruitBank.Common.Interfaces; public interface IOrderItemDto : IMgOrderItemDto, IMeasuringValues, IMeasured, IMeasurable { + public OrderDto OrderDto { get; set; } public List OrderItemPallets { get; set; } public void InitializeOrderItemPallets(List orderItemPallets); } \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index 878e1b9..5a53e44 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -47,10 +47,16 @@ public class SignalRTags : AcSignalRTags public const int GetAllOrderDtos = 111; public const int GetOrderDtoById = 112; - public const int GetAllByIdList = 114; + public const int GetAllOrderDtoByIds = 114; public const int GetPendingOrderDtos = 115; + public const int SetOrderStatusToComplete = 116; - public const int AuthenticateUser = 160; + public const int AddOrderItemPallet = 131; + public const int UpdateOrderItemPallet = 132; + public const int AddOrUpdateMeasuredOrderItemPallet = 133; + public const int AddOrUpdateMeasuredOrderItemPallets = 134; + + public const int AuthenticateUser = 195; public const int RefreshToken = 200; public const int GetAllLogItemsByFilterText = 1000; diff --git a/FruitBankHybrid.Shared.Tests/OrderClientTests.cs b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs index 2cf5e1b..78715db 100644 --- a/FruitBankHybrid.Shared.Tests/OrderClientTests.cs +++ b/FruitBankHybrid.Shared.Tests/OrderClientTests.cs @@ -64,7 +64,7 @@ public sealed class OrderClientTests [DataRow(new[] {1,2,4,7})] public async Task GetOrderDtoById(int[] orderIds) { - var orderDtoList = await _signalRClient.GetAllByIds(orderIds); + var orderDtoList = await _signalRClient.GetAllOrderDtoByIds(orderIds); Assert.IsNotNull(orderDtoList); diff --git a/FruitBankHybrid.Shared/Components/PalletItemComponent.razor b/FruitBankHybrid.Shared/Components/PalletItemComponent.razor new file mode 100644 index 0000000..cecd3ba --- /dev/null +++ b/FruitBankHybrid.Shared/Components/PalletItemComponent.razor @@ -0,0 +1,124 @@ +@using AyCode.Core.Loggers +@using FruitBank.Common.Entities +@using FruitBank.Common.Interfaces +@using FruitBank.Common.Models +@using FruitBank.Common.SignalRs +@using FruitBankHybrid.Shared.Services +@using FruitBankHybrid.Shared.Services.SignalRs +@typeparam TPalletItem where TPalletItem : class, IMeasuringItemPalletBase + + + + + @(MeasuringIndex).mérés + + + + + + + + + + + + + + + @(PalletItem.NetWeight) kg. + + + + + + + + +@code { + [Parameter] public required TPalletItem PalletItem { get; set; } + [Parameter] public required bool IsMeasurable { get; set; } + [Parameter] public required int ProductId { get; set; } + [Parameter] public required int MeasuringIndex { get; set; } + [Parameter] public int? AddOrUpdateSignalRTag { get; set; } = null; + + //[Parameter] public EventCallback OnPalletItemSaveClick { get; set; } + [Parameter] public Func? OnPalletItemSaveClick { get; set; } + [Parameter] public Func? OnPalletItemValueChanged { get; set; } + + [Inject] public required IEnumerable LogWriters { get; set; } + [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } + [Inject] public required LoggedInModel LoggedInModel { get; set; } + + public bool _btnSaveEnabled { get; set; } + + protected override async Task OnInitializedAsync() + { + _btnSaveEnabled = PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured; + await base.OnInitializedAsync(); + } + + + private string GetOrderItemPalletsCssClassNames(string fieldName) + => MeasuringService.GetCustomItemPalletsCssClassNames(fieldName, PalletItem, IsMeasurable); + + private async Task PalletItemSaveClick() + { + _btnSaveEnabled = false; + + if (AddOrUpdateSignalRTag == null) throw new Exception($"PalletItemComponent->PalletItemSaveClick(); AddOrUpdateSignalRTag == null"); + + PalletItem.ModifierId = LoggedInModel.CustomerDto?.Id; + var responseShippingItemPallet = await FruitBankSignalRClient.PostDataAsync(AddOrUpdateSignalRTag!.Value, PalletItem); + + if (responseShippingItemPallet != null) + PalletItem.Id = responseShippingItemPallet.Id; //Az UpdateCollection miatt kell, hogy megtalálja mit kell kicserélni! - J. + + if (OnPalletItemSaveClick != null) await OnPalletItemSaveClick.Invoke(responseShippingItemPallet); + } + + protected async Task OnItemUpdating(string fieldName, object newValue, TPalletItem palletItem) + { + _btnSaveEnabled = false; + // if (SelectedOrderItem == null) return; + + switch (fieldName) + { + case nameof(OrderItemPallet.PalletWeight): + palletItem.PalletWeight = (double)newValue; + break; + + case nameof(OrderItemPallet.TareWeight): + palletItem.TareWeight = (double)newValue; + break; + + case nameof(OrderItemPallet.TrayQuantity): + palletItem.TrayQuantity = (int)newValue; + break; + + case nameof(OrderItemPallet.GrossWeight): + palletItem.GrossWeight = (double)newValue; + break; + } + + palletItem.IsMeasured = false; + //MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); + //BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable); + + _btnSaveEnabled = palletItem.IsValidMeasuringValues(IsMeasurable) && !palletItem.IsMeasured; + + if (OnPalletItemValueChanged != null) await OnPalletItemValueChanged.Invoke(palletItem); + } +} diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor index ece21df..2848dfa 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor @@ -43,6 +43,7 @@ ValueFieldName="@nameof(Shipping.Id)" TextFieldName="@nameof(Shipping.LicencePlate)" CssClass="cw-480" + DropDownBodyCssClass="dd-body-class" Context="ctxShipping" SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs args) => OnSelectedShippingChanged(args))" InputId="cbNotMeasuredShippings"> @@ -59,6 +60,7 @@ ValueFieldName="@nameof(ShippingDocument.Id)" TextFieldName="@(nameof(ShippingDocument.Partner) + '.' + nameof(Partner.Name))" CssClass="cw-480" + DropDownBodyCssClass="dd-body-class" Context="ctxShippingDocument" SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs args) => OnSelectedShippingDocumentChanged(args))" InputId="cbShippingDocument"> @@ -75,6 +77,7 @@ ValueFieldName="@nameof(ShippingItem.Id)" TextFieldName="@(nameof(ShippingItem.Name))" CssClass="cw-480" + DropDownBodyCssClass="dd-body-class" Context="ctxShippingitem" SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs args) => OnSelectedShippingItemChanged(args))" InputId="cbShippingItem"> @@ -159,12 +162,13 @@ Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" Caption="Rakl.súly(kg)" ColSpanMd="2"/> - + + TOTAL: - + @(SelectedShippingItem.MeasuredQuantity) db @(SelectedShippingItem.MeasuredGrossWeight) kg @(SelectedShippingItem.MeasuredNetWeight) kg diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs index 7b44a03..be4a5fd 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs @@ -102,6 +102,9 @@ namespace FruitBankHybrid.Shared.Pages { ShippingItemId = shippingItem.Id, PalletWeight = shippingItem.Pallet?.Weight ?? 0, + + CreatorId = LoggedInModel.CustomerDto?.Id, + ModifierId = LoggedInModel.CustomerDto?.Id }); //if (shippingItem.Id == SelectedShippingItem?.Id) return; @@ -152,7 +155,9 @@ namespace FruitBankHybrid.Shared.Pages { ShippingItemPallet? responseShippingItemPallet; - if (shippingItemPallet.Id == 0) responseShippingItemPallet = await FruitBankSignalRClient.AddShippingItemPallet(shippingItemPallet); + shippingItemPallet.ModifierId = LoggedInModel.CustomerDto?.Id; + + if (shippingItemPallet.Id <= 0) responseShippingItemPallet = await FruitBankSignalRClient.AddShippingItemPallet(shippingItemPallet); else responseShippingItemPallet = await FruitBankSignalRClient.UpdateShippingItemPallet(shippingItemPallet); if (responseShippingItemPallet != null) diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor index 35544b9..b5fa973 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor @@ -1,14 +1,19 @@ @page "/MeasuringOut" @using AyCode.Utils.Extensions +@using FruitBank.Common @using FruitBank.Common.Dtos @using FruitBank.Common.Entities +@using FruitBank.Common.SignalRs +@using FruitBankHybrid.Shared.Components @using FruitBankHybrid.Shared.Services +@using Nop.Core.Domain.Orders

Kimenő mérés

- + - - + + @@ -50,43 +56,22 @@ - @* - - - @ctxShippingDocument.DisplayText - - - + + @if (SelectedOrder != null && LoggedInModel.IsLoggedIn && LoggedInModel.CustomerRoles.Any(x => x.SystemName.ToLowerInvariant() == "measuringrevisor")) + { + var isCompleteOrder = SelectedOrder.OrderStatus == OrderStatus.Complete; - - - - @ctxShippingitem.DisplayText) - - - *@ + + + + }
@@ -96,91 +81,81 @@ @{ if (context.Level == 0) { + var cssClass = "text-danger"; + var selectedOrderItemDto = (OrderItemDto)(context.DataItem); -
@(selectedOrderItemDto.ProductName) - @(selectedOrderItemDto.Quantity) rekesz
+ var trayQuantity = selectedOrderItemDto.TrayQuantity; //selectedOrderItemDto.OrderItemPallets.Where(x => x.IsMeasured).Sum(x => x.TrayQuantity); + + var isValid = selectedOrderItemDto.IsValidMeasuringValues(); + var isValidAndMeasured = isValid && selectedOrderItemDto.IsMeasuredAndValid();// && selectedOrderItemDto.; + + if (isValidAndMeasured) cssClass = "text-success"; + else if (isValid) cssClass = string.Empty; + +
@($"{selectedOrderItemDto.ProductName} - {trayQuantity}/{selectedOrderItemDto.Quantity} rekesz, {(selectedOrderItemDto.IsMeasurable ? selectedOrderItemDto.NetWeight + "kg." : "nem mérendő!")}")
} } - @{ - 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); + @{ + 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]; + + + @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; - } - + + + + + + + + + + + + TOTAL: + + + + @(selectedOrderItemDto.TrayQuantity) db + @(selectedOrderItemDto.GrossWeight) kg + @(selectedOrderItemDto.NetWeight) kg + + + + + @if (!_errorText.IsNullOrWhiteSpace()) + { + + HIBA! @_errorText + + //_errorText = string.Empty; + } + +
+ } } - }
diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs index 311477b..33f81a4 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs @@ -15,6 +15,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using FruitBank.Common.Helpers; +using FruitBank.Common.Interfaces; +using AyCode.Core.Extensions; +using Nop.Core.Domain.Orders; namespace FruitBankHybrid.Shared.Pages { @@ -47,27 +50,13 @@ namespace FruitBankHybrid.Shared.Pages var orders = await FruitBankSignalRClient.GetPendingOrderDtos() ?? []; _measuringDates = orders.Select(order => new MeasuringDateSelectorModel(order.Id, order.DateOfReceipt, order.IsMeasured)).ToList(); - + SelectedDayOrders = orders.Where(order => MeasuringService.DaysEqual(order.DateOfReceipt, dateTime)).ToList(); SelectedOrder = SelectedDayOrders.FirstOrDefault(); - foreach (var order in SelectedDayOrders) + foreach (var orderItem in SelectedDayOrders.SelectMany(order => order.OrderItemDtos.Where(orderItem => orderItem.OrderItemPallets.Count == 0))) { - foreach (var orderItem in order.OrderItemDtos.Where(orderItem => orderItem.OrderItemPallets.Count == 0)) - { - orderItem.OrderItemPallets.Add(new OrderItemPallet - { - OrderItemId = orderItem.Id, - OrderItemDto = orderItem, - }); - - orderItem.OrderItemPallets.Add(new OrderItemPallet - { - OrderItemId = orderItem.Id, - OrderItemDto = orderItem, - }); - - } + orderItem.OrderItemPallets.Add(MeasuringService.CreateNewOrderItemPallet(orderItem, LoggedInModel.CustomerDto)); } } @@ -90,6 +79,7 @@ namespace FruitBankHybrid.Shared.Pages { //SelectedOrderItem = eventArgs.DataItem?.OrderItemDtos?.FirstOrDefault(); } + protected bool BtnSaveEnabled { get; set; } protected void OnItemUpdating(string fieldName, object newValue) @@ -125,23 +115,63 @@ namespace FruitBankHybrid.Shared.Pages //BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable); } - private async Task OnShippingItemPalletSaveClick(OrderItemPallet orderItemPallet) + private Task OnPalletItemValueChanged(OrderItemPallet? orderItemPallet, OrderItemDto selectedOrderItemDto) { - //ShippingItemPallet? responseShippingItemPallet; + StateHasChanged(); + return Task.CompletedTask; + } - //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); - //} + private Task OnShippingItemPalletSaveClick(OrderItemPallet? orderItemPallet, OrderItemDto selectedOrderItemDto) + { + if (orderItemPallet != null) + { + selectedOrderItemDto.OrderItemPallets.UpdateCollection(orderItemPallet, false); + //MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); + } //else LogErrorAndDisplayText($"Sikertelen volt a raklap adatainak mentése! {orderItemPallet}"); - //StateHasChanged(); + StateHasChanged(); + return Task.CompletedTask; + } + + private Task AddNewPalletItemClick(OrderItemDto selectedOrderItemDto) + { + if (selectedOrderItemDto.OrderItemPallets[^1].Id > 0) + { + selectedOrderItemDto.OrderItemPallets.Add(MeasuringService.CreateNewOrderItemPallet(selectedOrderItemDto, LoggedInModel.CustomerDto)); + StateHasChanged(); + } + + return Task.CompletedTask; + } + + private Task LastPalletItemDeleteClick(OrderItemDto selectedOrderItemDto) + { + if (selectedOrderItemDto.OrderItemPallets.Count <= 1) return Task.CompletedTask; + + var lastPalletItem = selectedOrderItemDto.OrderItemPallets[^1]; + + if (lastPalletItem.Id > 0) return Task.CompletedTask; + selectedOrderItemDto.OrderItemPallets.Remove(lastPalletItem); + + StateHasChanged(); + return Task.CompletedTask; + } + + private async Task OnMeasuringAuditorClick() + { + if (SelectedOrder != null && SelectedOrder.IsMeasured && SelectedOrder.OrderStatus != OrderStatus.Complete) + { + var responseOrderDto = await FruitBankSignalRClient.SetOrderStatusToComplete(SelectedOrder.Id); + if (responseOrderDto != null) + { + SelectedDayOrders.UpdateCollection(responseOrderDto, false); + SelectedOrder = responseOrderDto; + } + + StateHasChanged(); + + } } } } diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.css b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.css new file mode 100644 index 0000000..375fb45 --- /dev/null +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.css @@ -0,0 +1,4 @@ +.dd-body-class, +.dd-body-class .dxbl-list-box-render-container { + max-height: 600px !important; +} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Services/MeasuringService.cs b/FruitBankHybrid.Shared/Services/MeasuringService.cs index 2814cac..1e27f06 100644 --- a/FruitBankHybrid.Shared/Services/MeasuringService.cs +++ b/FruitBankHybrid.Shared/Services/MeasuringService.cs @@ -1,11 +1,19 @@ using DevExpress.Blazor; +using FruitBank.Common.Dtos; using FruitBank.Common.Entities; +using FruitBank.Common.Interfaces; using FruitBankHybrid.Shared.Models; +using Mango.Nop.Core.Dtos; namespace FruitBankHybrid.Shared.Services; public class MeasuringService { + public MeasuringService() + { + + } + public static bool DaysEqual(DateTime date1, DateTime date2) => (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear); @@ -26,7 +34,7 @@ public class MeasuringService return string.Empty; } - public static string GetCustomItemPalletsCssClassNames(string fieldName, MeasuringItemPalletBase shippingItemPallet, bool isMeasurable) + public static string GetCustomItemPalletsCssClassNames(string fieldName, IMeasuringItemPalletBase shippingItemPallet, bool isMeasurable) { //if (shippingItemPallet.NetWeight < 0) return "text-danger"; @@ -52,6 +60,20 @@ public class MeasuringService return string.Empty; } - public static bool IsCustomItemPalletMeasuredAndValid(MeasuringItemPalletBase customItemPallet, bool isMeasurable) + public static OrderItemPallet CreateNewOrderItemPallet(OrderItemDto orderItemDto, CustomerDto? customerDto) + { + var orderItemPallet = new OrderItemPallet + { + OrderItemId = orderItemDto.Id, + OrderItemDto = orderItemDto, + + CreatorId = customerDto?.Id, + ModifierId = customerDto?.Id + }; + + return orderItemPallet; + } + + public static bool IsCustomItemPalletMeasuredAndValid(IMeasuringItemPalletBase customItemPallet, bool isMeasurable) => customItemPallet.IsMeasuredAndValid(isMeasurable); } \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs index 036ec4c..6b09d7d 100644 --- a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs +++ b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs @@ -77,8 +77,11 @@ namespace FruitBankHybrid.Shared.Services.SignalRs public Task UpdateShippingItemPallet(ShippingItemPallet shippingItemPallet) => PostDataAsync(SignalRTags.UpdateShippingItemPallet, shippingItemPallet); + public Task AddOrUpdateMeasuredShippingItemPallet(ShippingItemPallet shippingItemPallet) + => PostDataAsync(SignalRTags.AddOrUpdateMeasuredShippingItemPallet, shippingItemPallet); + public Task AddOrUpdateMeasuredShippingItemPallets(List shippingItemPallets) - => PostDataAsync, ShippingItem>(SignalRTags.UpdateShippingItemPallet, shippingItemPallets); + => PostDataAsync, ShippingItem>(SignalRTags.AddOrUpdateMeasuredShippingItemPallets, shippingItemPallets); #endregion ShippingItemPallet @@ -134,8 +137,14 @@ namespace FruitBankHybrid.Shared.Services.SignalRs public Task?> GetPendingOrderDtos() => GetAllAsync>(SignalRTags.GetPendingOrderDtos); - public Task?> GetAllByIds(int[] orderIds) - => GetAllAsync>(SignalRTags.GetAllByIdList, [orderIds]); + public Task?> GetAllOrderDtoByIds(int[] orderIds) + => GetAllAsync>(SignalRTags.GetAllOrderDtoByIds, [orderIds]); + + public Task AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet) + => PostDataAsync(SignalRTags.AddOrUpdateMeasuredOrderItemPallet, orderItemPallet); + + public Task SetOrderStatusToComplete(int orderId) + => GetByIdAsync(SignalRTags.SetOrderStatusToComplete, orderId); #endregion Orders } diff --git a/FruitBankHybrid.Shared/wwwroot/app.css b/FruitBankHybrid.Shared/wwwroot/app.css index c4a780f..c6a2a9c 100644 --- a/FruitBankHybrid.Shared/wwwroot/app.css +++ b/FruitBankHybrid.Shared/wwwroot/app.css @@ -73,3 +73,8 @@ h1:focus { .measuring-form-layout { margin-top: 15px; } + +.dd-body-class, +.dd-body-class .dxbl-list-box-render-container { + max-height: 600px !important; +}