imporvements, fixes, etc...
This commit is contained in:
parent
d53c44d2db
commit
dd270f6eca
|
|
@ -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<DevAdminSignalRHub, IAcSigna
|
|||
|
||||
public Task SendOrderChanged(OrderDto orderDto) => 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);
|
||||
|
|
|
|||
|
|
@ -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>(TLogger logger) : IMeasurementServiceBase where TLogger : ILogger
|
||||
{
|
||||
|
||||
public TLogger Logger => logger;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
@if (HasAuditButton)
|
||||
{
|
||||
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" ColSpanMd="1">
|
||||
<DxButton Enabled="@(IsEditable && OrderItemPallet!.IsMeasuredAndValid(IsMeasurable) && !OrderItemPallet.IsAudited)"
|
||||
<DxButton Enabled="@(IsEditable && OrderItemPallet!.IsMeasuredAndValid(IsMeasurable) && !OrderItemPallet.IsAudited && IsMaxTrayQuantityValid)"
|
||||
Text="@(OrderItemPallet!.IsAudited ? "Jóváhagyva" : "Jóváhagy")" Click="() => PalletItemAuditedClick()" CssClass="w-100" />
|
||||
</DxFormLayoutItem>
|
||||
}
|
||||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
<DxFormLayout Context="ctxFormLayout" Data="@selectedOrderItemDto" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
|
||||
var selectedOrderItem = (OrderItemDto)(context.DataItem);
|
||||
|
||||
<DxFormLayout Context="ctxFormLayout" Data="@selectedOrderItem" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
|
||||
<DxFormLayoutItem Context="ctxFormLayoutItem" ColSpanMd="12">
|
||||
@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];
|
||||
|
||||
<PalletItemComponent IsMeasurable="@selectedOrderItemDto.IsMeasurable"
|
||||
<PalletItemComponent IsMeasurable="@selectedOrderItem.IsMeasurable"
|
||||
MeasuringIndex="@localI"
|
||||
IsEditable="@(!currentOrderItemPallet.IsAudited && !(SelectedOrder?.IsComplete ?? false))"
|
||||
PalletItem="@currentOrderItemPallet"
|
||||
ProductId="@selectedOrderItemDto.ProductId"
|
||||
MaxTrayQuantity="@selectedOrderItemDto.Quantity"
|
||||
ProductId="@selectedOrderItem.ProductId"
|
||||
MaxTrayQuantity="@selectedOrderItem.Quantity"
|
||||
AddOrUpdateSignalRTag="SignalRTags.AddOrUpdateMeasuredOrderItemPallet"
|
||||
OnPalletItemSaved="pallet => OnOrderItemPalletSaved(pallet, selectedOrderItemDto)"
|
||||
OnPalletItemValueChanged="pallet => OnOrderItemPalletValueChanged(pallet, selectedOrderItemDto)"
|
||||
OnPalletItemAuditedClick="pallet => OnPalletItemAuditedClick(pallet, selectedOrderItemDto)">
|
||||
OnPalletItemSaved="pallet => OnOrderItemPalletSaved(pallet, selectedOrderItem)"
|
||||
OnPalletItemValueChanged="pallet => OnOrderItemPalletValueChanged(pallet, selectedOrderItem)"
|
||||
OnPalletItemAuditedClick="pallet => OnPalletItemAuditedClick(pallet, selectedOrderItem)">
|
||||
</PalletItemComponent>
|
||||
}
|
||||
</DxFormLayoutItem>
|
||||
|
||||
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="2" BeginRow="true">
|
||||
<DxButton Text="Új sor" Click="() => AddNewPalletItemClick(selectedOrderItemDto)" CssClass="w-100"
|
||||
<DxButton Text="Új sor" Click="() => AddNewPalletItemClick(selectedOrderItem)" CssClass="w-100"
|
||||
Visible="@(!(SelectedOrder?.IsComplete ?? false))"
|
||||
Enabled="@(selectedOrderItemDto.OrderItemPallets[^1].Id > 0)" />
|
||||
Enabled="@(selectedOrderItem.OrderItemPallets[^1].Id > 0)" />
|
||||
</DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="3">
|
||||
<DxButton Text="Utolsó sor törlése" Click="() => LastPalletItemDeleteClick(selectedOrderItemDto)" CssClass="w-100"
|
||||
<DxButton Text="Utolsó sor törlése" Click="() => LastPalletItemDeleteClick(selectedOrderItem)" CssClass="w-100"
|
||||
Visible="@(!(SelectedOrder?.IsComplete ?? false))"
|
||||
Enabled="@(selectedOrderItemDto.OrderItemPallets.Count > 1 && selectedOrderItemDto.OrderItemPallets[^1].Id <= 0)" />
|
||||
Enabled="@(selectedOrderItem.OrderItemPallets.Count > 1 && selectedOrderItem.OrderItemPallets[^1].Id <= 0)" />
|
||||
</DxFormLayoutItem>
|
||||
|
||||
<DxFormLayoutItem Context="ctxFromLayoutNewPallet" ColSpanMd="7" />
|
||||
|
|
@ -201,9 +198,9 @@
|
|||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false" />
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false" />
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false" />
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Rekesz: @(selectedOrderItemDto.TrayQuantity) db</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Br: @(selectedOrderItemDto.GrossWeight) kg</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false"><strong>Net: @(selectedOrderItemDto.NetWeight) kg</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Rekesz: @(selectedOrderItem.TrayQuantity) db</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="2" BeginRow="false"><strong>Br: @(selectedOrderItem.GrossWeight) kg</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false"><strong>Net: @(selectedOrderItem.NetWeight) kg</strong></DxFormLayoutItem>
|
||||
<DxFormLayoutItem Context="dfcadsc2" ColSpanMd="1" BeginRow="false" />
|
||||
</DxFormLayout>
|
||||
</DxFormLayoutItem>
|
||||
|
|
|
|||
|
|
@ -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<OrderDto> SelectedDayOrders { get; set; } = null!;
|
||||
private OrderDto? SelectedOrder { get; set; }
|
||||
private OrderItemDto? SelectedOrderItem { get; set; }
|
||||
//private OrderItemDto? SelectedOrderItem { get; set; }
|
||||
|
||||
private List<MeasuringDateSelectorModel> _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<OrderItem>();
|
||||
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<OrderDto>();
|
||||
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>();
|
||||
orderItemDto = jsonMessage?.JsonTo<OrderItemDto>();
|
||||
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<OrderItemPallet>();
|
||||
|
|
@ -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<ProductDto>();
|
||||
if (productDto == null) break;
|
||||
|
||||
await InvokeAsync(StateHasChanged);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<IAcLogWriterClientBase> logWriters) :
|
||||
MeasurementServiceBase<LoggerClient>(new LoggerClient<MeasurementService>(logWriters.ToArray())), IMeasurementService
|
||||
{
|
||||
public MeasurementService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static bool DaysEqual(DateTime date1, DateTime date2)
|
||||
=> (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue