Refactor SignalR handling; add stock history tab
Refactored SignalR message handling to use strongly-typed SignalResponseDataMessage objects instead of JSON strings, updating event signatures and deserialization logic in MainLayout, MeasuringOut, and FruitBankSignalRClient. Added a new "Stock quantity changes" tab for administrators in GridProductDtoTemplate. Also added Microsoft.Extensions.ObjectPool package to the project.
This commit is contained in:
parent
ba05b5f37e
commit
80a1ce6a44
|
|
@ -37,6 +37,12 @@
|
|||
|
||||
|
||||
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i, productId)">
|
||||
<DxTabPage Text="Készlet mennyiség változások" Visible="@LoggedInModel.IsAdministrator">
|
||||
@{
|
||||
var contextIds = new[] { (object)productDto.Id };
|
||||
<GridStockQuantityHistoryDtoTemplate ContextIds="@(contextIds)" ParentDataItem="@productDto" />
|
||||
}
|
||||
</DxTabPage>
|
||||
<DxTabPage Text="Rendelések melyben megtalálható" Visible="@LoggedInModel.IsAdministrator">
|
||||
@{
|
||||
//GetOrderDtosFromDbAsync(productId).Forget();
|
||||
|
|
|
|||
|
|
@ -65,11 +65,11 @@ public partial class MainLayout : LayoutComponentBase
|
|||
}
|
||||
}
|
||||
|
||||
private async Task SignalRClientOnMessageReceived(int messageTag, string? jsonMessage)
|
||||
private async Task SignalRClientOnMessageReceived(int messageTag, SignalResponseDataMessage? responseDataMessage)
|
||||
{
|
||||
if (messageTag != SignalRTags.NotificationReceived || !LoggedInModel.IsLoggedIn) return;
|
||||
|
||||
var notificationMessage = jsonMessage?.JsonTo<SignalRMessageToClientWithText<OrderDto>>();
|
||||
var notificationMessage = responseDataMessage?.GetResponseData<SignalRMessageToClientWithText<OrderDto>>();
|
||||
if (notificationMessage == null)
|
||||
{
|
||||
_logger.Error($"notificationMessage == null");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
using DevExpress.Blazor;
|
||||
using FruitBank.Common.Dtos;
|
||||
using FruitBank.Common.Entities;
|
||||
|
|
@ -51,14 +52,14 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
private async Task SignalRClientOnMessageReceived(int messageTag, string? jsonMessage)
|
||||
private async Task SignalRClientOnMessageReceived(int messageTag, SignalResponseDataMessage? responseDataMessage)
|
||||
{
|
||||
if (!LoggedInModel.IsLoggedIn) return;
|
||||
|
||||
if (messageTag != SignalRTags.SendOrderItemDeleted && messageTag != SignalRTags.SendOrderChanged && messageTag != SignalRTags.SendOrderItemChanged &&
|
||||
messageTag != SignalRTags.SendOrderItemPalletChanged && messageTag != SignalRTags.SendProductChanged) return;
|
||||
|
||||
_logger.DebugConditional($"SignalRClientOnMessageReceived received. {jsonMessage}");
|
||||
_logger.DebugConditional($"SignalRClientOnMessageReceived received. {responseDataMessage}");
|
||||
|
||||
OrderDto? orderDto;
|
||||
OrderItem? orderItem;
|
||||
|
|
@ -67,7 +68,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
switch (messageTag)
|
||||
{
|
||||
case SignalRTags.SendOrderItemDeleted:
|
||||
orderItem = jsonMessage?.JsonTo<OrderItem>();
|
||||
orderItem = responseDataMessage?.GetResponseData<OrderItem>();
|
||||
if (orderItem == null) break;
|
||||
|
||||
lock (_lock)
|
||||
|
|
@ -79,7 +80,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
await InvokeAsync(StateHasChanged);
|
||||
return;
|
||||
case SignalRTags.SendOrderChanged:
|
||||
orderDto = jsonMessage?.JsonTo<OrderDto>();
|
||||
orderDto = responseDataMessage?.GetResponseData<OrderDto>();
|
||||
if (orderDto == null) break;
|
||||
|
||||
if (orderDto.DateOfReceipt == null) return;
|
||||
|
|
@ -104,7 +105,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
await InvokeAsync(StateHasChanged);
|
||||
return;
|
||||
case SignalRTags.SendOrderItemChanged:
|
||||
orderItemDto = jsonMessage?.JsonTo<OrderItemDto>();
|
||||
orderItemDto = responseDataMessage?.GetResponseData<OrderItemDto>();
|
||||
if (orderItemDto == null) break;
|
||||
|
||||
lock (_lock)
|
||||
|
|
@ -123,7 +124,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
await InvokeAsync(StateHasChanged);
|
||||
return;
|
||||
case SignalRTags.SendOrderItemPalletChanged:
|
||||
var orderItemPallet = jsonMessage?.JsonTo<OrderItemPallet>();
|
||||
var orderItemPallet = responseDataMessage?.GetResponseData<OrderItemPallet>();
|
||||
if (orderItemPallet == null) break;
|
||||
|
||||
lock (_lock)
|
||||
|
|
@ -143,7 +144,7 @@ namespace FruitBankHybrid.Shared.Pages
|
|||
await InvokeAsync(StateHasChanged);
|
||||
return;
|
||||
case SignalRTags.SendProductChanged:
|
||||
var productDto = jsonMessage?.JsonTo<ProductDto>();
|
||||
var productDto = responseDataMessage?.GetResponseData<ProductDto>();
|
||||
if (productDto == null) break;
|
||||
|
||||
await InvokeAsync(StateHasChanged);
|
||||
|
|
|
|||
|
|
@ -40,13 +40,13 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
|
|||
/// <summary>
|
||||
/// MessageTag, JSON
|
||||
/// </summary>
|
||||
public event Func<int, string?, Task> OnMessageReceived = null!;
|
||||
public event Func<int, SignalResponseDataMessage?, Task> OnMessageReceived = null!;
|
||||
|
||||
protected override async Task MessageReceived(int messageTag, byte[] messageBytes)
|
||||
{
|
||||
var jsonMessage = messageBytes.MessagePackTo<SignalResponseJsonMessage>(ContractlessStandardResolver.Options);
|
||||
var responseDataMessage = messageBytes.BinaryTo<SignalResponseDataMessage>();
|
||||
|
||||
await OnMessageReceived(messageTag, jsonMessage.ResponseData);
|
||||
await OnMessageReceived(messageTag, responseDataMessage);
|
||||
}
|
||||
|
||||
private void SendMessageToAllClients(int messageTag, string message)
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DevExpress.Data" Version="25.1.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.ObjectPool" Version="10.0.1" />
|
||||
<!--<PackageReference Include="DevExpress.Maui.Controls" Version="25.1.3" />
|
||||
<PackageReference Include="DevExpress.Maui.Editors" Version="25.1.3" />
|
||||
<PackageReference Include="DevExpress.Maui.CollectionView" Version="25.1.3" />-->
|
||||
|
|
|
|||
Loading…
Reference in New Issue