From dd270f6ecac101cbcf1785bcb8ce0300b6c80d88 Mon Sep 17 00:00:00 2001 From: Loretta Date: Fri, 31 Oct 2025 05:37:12 +0100 Subject: [PATCH] imporvements, fixes, etc... --- .../SignalRs/SignalRSendToClientService.cs | 2 + .../Services/MeasurementServiceBase.cs | 8 +-- FruitBank.Common/SignalRs/SignalRTags.cs | 3 +- .../Components/PalletItemComponent.razor | 8 +-- .../Layout/MainLayout.razor.cs | 34 +++++++------ .../Pages/MeasuringOut.razor | 39 +++++++-------- .../Pages/MeasuringOut.razor.cs | 50 ++++++++++++++----- .../Services/MeasurementService.cs | 13 +++-- 8 files changed, 95 insertions(+), 62 deletions(-) diff --git a/FruitBank.Common.Server/Services/SignalRs/SignalRSendToClientService.cs b/FruitBank.Common.Server/Services/SignalRs/SignalRSendToClientService.cs index 6078d15..1a08779 100644 --- a/FruitBank.Common.Server/Services/SignalRs/SignalRSendToClientService.cs +++ b/FruitBank.Common.Server/Services/SignalRs/SignalRSendToClientService.cs @@ -6,6 +6,7 @@ using FruitBank.Common.Models.SignalRs; using FruitBank.Common.SignalRs; using Mango.Nop.Core.Loggers; using Microsoft.AspNetCore.SignalR; +using Nop.Core.Domain.Orders; namespace FruitBank.Common.Server.Services.SignalRs; @@ -25,6 +26,7 @@ public class SignalRSendToClientService(IHubContext base.SendMessageToAllClients(SignalRTags.SendOrderChanged, orderDto); public Task SendOrderItemChanged(OrderItemDto orderItemDto) => base.SendMessageToAllClients(SignalRTags.SendOrderItemChanged, orderItemDto); + public Task SendOrderItemDeleted(OrderItem orderItem) => base.SendMessageToAllClients(SignalRTags.SendOrderItemDeleted, orderItem); public Task SendOrderItemPalletChanged(OrderItemPallet orderItemPallet) => base.SendMessageToAllClients(SignalRTags.SendOrderItemPalletChanged, orderItemPallet); public Task SendShippingChanged(Shipping shipping) => base.SendMessageToAllClients(SignalRTags.SendShippingChanged, shipping); diff --git a/FruitBank.Common/Services/MeasurementServiceBase.cs b/FruitBank.Common/Services/MeasurementServiceBase.cs index 23df5a4..eb852c4 100644 --- a/FruitBank.Common/Services/MeasurementServiceBase.cs +++ b/FruitBank.Common/Services/MeasurementServiceBase.cs @@ -1,8 +1,10 @@ -using FruitBank.Common.Interfaces; +using AyCode.Core.Loggers; +using FruitBank.Common.Interfaces; +using Mango.Nop.Core.Loggers; namespace FruitBank.Common.Services; -public class MeasurementServiceBase : IMeasurementServiceBase +public abstract class MeasurementServiceBase(TLogger logger) : IMeasurementServiceBase where TLogger : ILogger { - + public TLogger Logger => logger; } \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index e631f72..12d00ba 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -76,7 +76,8 @@ public class SignalRTags : AcSignalRTags #region SendToClient public const int SendOrderChanged = 500; public const int SendOrderItemChanged = 501; - public const int SendOrderItemPalletChanged = 502; + public const int SendOrderItemDeleted = 502; + public const int SendOrderItemPalletChanged = 503; public const int SendShippingChanged = 520; public const int SendShippingItemChanged = 521; diff --git a/FruitBankHybrid.Shared/Components/PalletItemComponent.razor b/FruitBankHybrid.Shared/Components/PalletItemComponent.razor index 56fad7d..140671a 100644 --- a/FruitBankHybrid.Shared/Components/PalletItemComponent.razor +++ b/FruitBankHybrid.Shared/Components/PalletItemComponent.razor @@ -52,7 +52,7 @@ @if (HasAuditButton) { - } @@ -91,9 +91,11 @@ private bool GetBtnSaveEnabled() { - return IsEditable && PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured && (!MaxTrayQuantity.HasValue || PalletItem.TrayQuantity <= MaxTrayQuantity.Value); + return IsEditable && PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured && IsMaxTrayQuantityValid; } + private bool IsMaxTrayQuantityValid => (!MaxTrayQuantity.HasValue || PalletItem.TrayQuantity <= MaxTrayQuantity.Value); + protected override async Task OnInitializedAsync() { BtnSaveEnabled = GetBtnSaveEnabled();// PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured; @@ -147,7 +149,7 @@ palletItem.TrayQuantity = (int)newValue; if (palletItem.TrayQuantity < 0) palletItem.TrayQuantity = 0; - //else if (MaxTrayQuantity.HasValue && palletItem.TrayQuantity > MaxTrayQuantity.Value) palletItem.TrayQuantity = MaxTrayQuantity.Value; + //else if (!IsMaxTrayQuantityValid) palletItem.TrayQuantity = MaxTrayQuantity!.Value; break; case nameof(IMeasuringItemPalletBase.GrossWeight): diff --git a/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs b/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs index af42fbe..e0a9653 100644 --- a/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs +++ b/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs @@ -26,7 +26,7 @@ public partial class MainLayout : LayoutComponentBase private EventCallback RefreshMainLayoutEventCallback => EventCallback.Factory.Create(this, RefreshMainLayout); private NavMenu _navMenu = null!; - private ILogger _logger = null!; + private LoggerClient _logger = null!; protected override void OnInitialized() { @@ -54,23 +54,27 @@ public partial class MainLayout : LayoutComponentBase return Task.CompletedTask; } - if (!(notificationMessage.Content?.HasMeasuringAccess(LoggedInModel.CustomerDto!.Id, LoggedInModel.IsRevisor) ?? LoggedInModel.IsRevisor)) return Task.CompletedTask; - - var messageText = $"{notificationMessage.Message}"; - if (notificationMessage.Content != null) + var orderDto = notificationMessage.Content; + if ((orderDto?.HasMeasuringAccess(LoggedInModel.CustomerDto!.Id, LoggedInModel.IsRevisor) ?? LoggedInModel.IsRevisor) || orderDto?.MeasurementOwnerId == 0) { - messageText += $" Rendelés: #{notificationMessage.Content.CustomOrderNumber}. Átvétel: {notificationMessage.Content.DateOfReceipt}"; + var messageText = $"{notificationMessage.Message}"; + if (orderDto != null) + { + messageText += $" Rendelés: #{orderDto.CustomOrderNumber}. Átvétel: {orderDto.DateOfReceipt}"; + } + + _logger.Debug($"NotificationMessage received. {messageText}"); + + ToastService.ShowToast(new ToastOptions + { + ProviderName = "Positioning", + Title = "Értesítő!", + Text = messageText, + }); + + return Task.CompletedTask; } - _logger.Info($"NotificationMessage received. {messageText}"); - - ToastService.ShowToast(new ToastOptions - { - ProviderName = "Positioning", - Title = "Király vagyok!", - Text = messageText, - }); - return Task.CompletedTask; } diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor index 54245d2..9d46802 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor @@ -156,41 +156,38 @@ @{ 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); - SelectedOrderItem = selectedOrderItemDto; - + var selectedOrderItem = (OrderItemDto)(context.DataItem); + + - @for (var index = 0; index < (selectedOrderItemDto?.OrderItemPallets?.Count ?? 0); index++) + @for (var index = 0; index < (selectedOrderItem?.OrderItemPallets?.Count ?? 0); index++) { var localI = index + 1; - var currentOrderItemPallet = selectedOrderItemDto!.OrderItemPallets![index]; + var currentOrderItemPallet = selectedOrderItem!.OrderItemPallets![index]; - + OnPalletItemSaved="pallet => OnOrderItemPalletSaved(pallet, selectedOrderItem)" + OnPalletItemValueChanged="pallet => OnOrderItemPalletValueChanged(pallet, selectedOrderItem)" + OnPalletItemAuditedClick="pallet => OnPalletItemAuditedClick(pallet, selectedOrderItem)"> } - + Enabled="@(selectedOrderItem.OrderItemPallets[^1].Id > 0)" /> - + Enabled="@(selectedOrderItem.OrderItemPallets.Count > 1 && selectedOrderItem.OrderItemPallets[^1].Id <= 0)" /> @@ -201,9 +198,9 @@ - Rekesz: @(selectedOrderItemDto.TrayQuantity) db - Br: @(selectedOrderItemDto.GrossWeight) kg - Net: @(selectedOrderItemDto.NetWeight) kg + Rekesz: @(selectedOrderItem.TrayQuantity) db + Br: @(selectedOrderItem.GrossWeight) kg + Net: @(selectedOrderItem.NetWeight) kg diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs index 582f312..13adfae 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs @@ -37,7 +37,7 @@ namespace FruitBankHybrid.Shared.Pages [Inject] private IDialogService DialogService { get; set; } = null!; [Inject] public required LoggedInModel LoggedInModel { get; set; } - private ILogger _logger = null!; + private LoggerClient _logger = null!; private string _errorText; public bool HasMeasuringAccess; @@ -46,7 +46,7 @@ namespace FruitBankHybrid.Shared.Pages private DateTime SelectedDate; private List SelectedDayOrders { get; set; } = null!; private OrderDto? SelectedOrder { get; set; } - private OrderItemDto? SelectedOrderItem { get; set; } + //private OrderItemDto? SelectedOrderItem { get; set; } private List _measuringDates = null!; @@ -68,15 +68,29 @@ namespace FruitBankHybrid.Shared.Pages { if (!LoggedInModel.IsLoggedIn) return; - if (messageTag != SignalRTags.SendOrderChanged && messageTag != SignalRTags.SendOrderItemChanged && + if (messageTag != SignalRTags.SendOrderItemDeleted && messageTag != SignalRTags.SendOrderChanged && messageTag != SignalRTags.SendOrderItemChanged && messageTag != SignalRTags.SendOrderItemPalletChanged && messageTag != SignalRTags.SendProductChanged) return; - - _logger.Detail($"SignalRClientOnMessageReceived received. {jsonMessage}"); + _logger.DebugConditional($"SignalRClientOnMessageReceived received. {jsonMessage}"); OrderDto? orderDto; + OrderItem? orderItem; + OrderItemDto? orderItemDto; + switch (messageTag) { + case SignalRTags.SendOrderItemDeleted: + orderItem = jsonMessage?.JsonTo(); + if (orderItem == null) break; + + lock (_lock) + { + orderDto = SelectedDayOrders.FirstOrDefault(o => o.OrderItemDtos.Any(oi => oi.Id == orderItem.Id)); + orderDto?.OrderItemDtos.RemoveAll(oi => oi.Id == orderItem.Id); + } + + await InvokeAsync(StateHasChanged); + return; case SignalRTags.SendOrderChanged: orderDto = jsonMessage?.JsonTo(); if (orderDto == null) break; @@ -91,17 +105,27 @@ namespace FruitBankHybrid.Shared.Pages if (SelectedDate != orderDto.DateOfReceipt.Value.Date) return; var selectedOrderId = SelectedOrder?.Id; - SelectedDayOrders.UpdateCollection(orderDto, false); + if (selectedOrderId.GetValueOrDefault(-1) == orderDto.Id) SelectedOrder = orderDto; } await InvokeAsync(StateHasChanged); return; case SignalRTags.SendOrderItemChanged: - var orderItemDto = jsonMessage?.JsonTo(); + orderItemDto = jsonMessage?.JsonTo(); if (orderItemDto == null) break; + lock (_lock) + { + var localOrderDto = SelectedDayOrders.FirstOrDefault(o => o.OrderItemDtos.Any(oi => oi.Id == orderItemDto.Id)); + var localOrderItemDto = localOrderDto?.OrderItemDtos.First(x => x.Id == orderItemDto.Id)!; + + localOrderItemDto.Quantity = orderItemDto.Quantity; + localOrderItemDto.GenericAttributes.UpdateBaseEntityCollection(orderItemDto.GenericAttributes, false); + } + + await InvokeAsync(StateHasChanged); return; case SignalRTags.SendOrderItemPalletChanged: var orderItemPallet = jsonMessage?.JsonTo(); @@ -110,13 +134,14 @@ namespace FruitBankHybrid.Shared.Pages lock (_lock) { var orderItemDtos = SelectedDayOrders.FirstOrDefault(x => x.OrderItemDtos.Any(oi => oi.Id == orderItemPallet.OrderItemId))?.OrderItemDtos; - var orderItem = orderItemDtos?.FirstOrDefault(oi => oi.Id == orderItemPallet.OrderItemId); - if (orderItem == null) return; + + orderItemDto = orderItemDtos?.FirstOrDefault(oi => oi.Id == orderItemPallet.OrderItemId); + if (orderItemDto == null) return; - var orderItemPalletsCount = orderItem.OrderItemPallets.Count; + var orderItemPalletsCount = orderItemDto.OrderItemPallets.Count; - if (orderItem.OrderItemPallets[orderItemPalletsCount - 1].Id == 0) orderItem.OrderItemPallets.Insert(orderItemPalletsCount - 1, orderItemPallet); - else orderItem.OrderItemPallets.UpdateCollection(orderItemPallet, false); + if (orderItemDto.OrderItemPallets[orderItemPalletsCount - 1].Id == 0) orderItemDto.OrderItemPallets.Insert(orderItemPalletsCount - 1, orderItemPallet); + else orderItemDto.OrderItemPallets.UpdateCollection(orderItemPallet, false); } await InvokeAsync(StateHasChanged); @@ -125,6 +150,7 @@ namespace FruitBankHybrid.Shared.Pages var productDto = jsonMessage?.JsonTo(); if (productDto == null) break; + await InvokeAsync(StateHasChanged); return; } diff --git a/FruitBankHybrid.Shared/Services/MeasurementService.cs b/FruitBankHybrid.Shared/Services/MeasurementService.cs index 8d9e035..e38a8bb 100644 --- a/FruitBankHybrid.Shared/Services/MeasurementService.cs +++ b/FruitBankHybrid.Shared/Services/MeasurementService.cs @@ -1,20 +1,19 @@ -using DevExpress.Blazor; +using AyCode.Core.Loggers; +using DevExpress.Blazor; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; using FruitBank.Common.Interfaces; using FruitBank.Common.Services; using FruitBankHybrid.Shared.Models; +using FruitBankHybrid.Shared.Services.Loggers; using Mango.Nop.Core.Dtos; +using Mango.Nop.Core.Loggers; namespace FruitBankHybrid.Shared.Services; -public class MeasurementService : MeasurementServiceBase, IMeasurementService +public class MeasurementService(IEnumerable logWriters) : + MeasurementServiceBase(new LoggerClient(logWriters.ToArray())), IMeasurementService { - public MeasurementService() - { - - } - public static bool DaysEqual(DateTime date1, DateTime date2) => (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);