refactoring, improvements, etc...

This commit is contained in:
Loretta 2025-09-07 06:56:27 +02:00
parent a4faa0c2b7
commit ec93fc7afd
19 changed files with 160 additions and 59 deletions

View File

@ -1,22 +0,0 @@
using AyCode.Core.Loggers;
using AyCode.Services.SignalRs;
using FruitBank.Common.Loggers;
using FruitBank.Common.Models;
using FruitBank.Common.SignalRs;
namespace FruitBank.Common.Server.Controllers
{
public class FruitBankDataController(IEnumerable<IAcLogWriterBase> logWriters)//: IFruitBankDataControllerCommon
{
private readonly ILogger _logger = new Logger<FruitBankDataController>(logWriters.ToArray());
[SignalR(SignalRTags.GetMeasuringModel)]
public MeasuringModel GetMeasuringModel()
{
_logger.Detail($"GetMeasuringModel invoked");
return new MeasuringModel($"GetMeasuringModel invoked [{DateTime.Now}]");
}
}
}

View File

@ -39,4 +39,8 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Controllers\" />
</ItemGroup>
</Project> </Project>

View File

@ -2,8 +2,8 @@
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using AyCode.Models.Server.DynamicMethods; using AyCode.Models.Server.DynamicMethods;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using FruitBank.Common.Interfaces;
using FruitBank.Common.Loggers; using FruitBank.Common.Loggers;
using FruitBank.Common.Server.Controllers;
using FruitBank.Common.SignalRs; using FruitBank.Common.SignalRs;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
@ -28,7 +28,7 @@ namespace FruitBank.Common.Server.Services.SignalRs;
public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase<SignalRTags, Logger<DevAdminSignalRHub>> public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase<SignalRTags, Logger<DevAdminSignalRHub>>
{ {
public DevAdminSignalRHub(IConfiguration configuration, FruitBankDataController fruitBankDataController/*, SessionService sessionService*/, IEnumerable<IAcLogWriterBase> logWriters) public DevAdminSignalRHub(IConfiguration configuration, IFruitBankDataControllerServer fruitBankDataController/*, SessionService sessionService*/, IEnumerable<IAcLogWriterBase> logWriters)
: base(configuration, new Logger<DevAdminSignalRHub>(logWriters.ToArray())) : base(configuration, new Logger<DevAdminSignalRHub>(logWriters.ToArray()))
{ {
DynamicMethodCallModels.Add(new AcDynamicMethodCallModel<SignalRAttribute>(fruitBankDataController)); DynamicMethodCallModels.Add(new AcDynamicMethodCallModel<SignalRAttribute>(fruitBankDataController));

View File

@ -3,7 +3,7 @@ using AyCode.Interfaces.TimeStampInfo;
namespace FruitBank.Common.Entities; namespace FruitBank.Common.Entities;
public interface ISippingDocument: IEntityInt, ITimeStampInfo public interface IShippingDocument: IEntityInt, ITimeStampInfo
{ {
public int PartnerId { get; set; } public int PartnerId { get; set; }
public int ShippingId { get; set; } public int ShippingId { get; set; }

View File

@ -1,6 +1,12 @@
namespace FruitBank.Common.Entities; using FruitBank.Common.Entities;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
public class Partner : IPartner namespace FruitBank.Common.Entities;
[Table(Name = FruitBankConstClient.PartnerDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.PartnerDbTableName)]
public class Partner : MgEntityBase, IPartner
{ {
public int Id { get; set; } public int Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
@ -11,6 +17,7 @@ public class Partner : IPartner
public string City { get; set; } public string City { get; set; }
public string Street { get; set; } public string Street { get; set; }
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -1,12 +1,18 @@
namespace FruitBank.Common.Entities; using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
public class Shipping : IShipping namespace FruitBank.Common.Entities;
[Table(Name = FruitBankConstClient.ShippingDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingDbTableName)]
public class Shipping : MgEntityBase, IShipping
{ {
public int Id { get; set; } public int Id { get; set; }
public int PartnerId { get; set; } public int PartnerId { get; set; }
public DateTime ShippingDate { get; set; } public DateTime ShippingDate { get; set; }
public string LicencePlate { get; set; } public string LicencePlate { get; set; }
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -0,0 +1,20 @@
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
namespace FruitBank.Common.Entities;
[Table(Name = FruitBankConstClient.ShippingDocumentDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingDocumentDbTableName)]
public class ShippingDocument : MgEntityBase, IShippingDocument
{
public int Id { get; set; }
public int PartnerId { get; set; }
public int ShippingId { get; set; }
public int ShippingItemId { get; set; }
public DateTime ShippingDate { get; set; }
public string Country { get; set; }
[SkipValuesOnUpdate]
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

View File

@ -1,6 +1,12 @@
namespace FruitBank.Common.Entities; using AyCode.Core.Interfaces;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities;
public class ShippingItem : IShippingItem namespace FruitBank.Common.Entities;
[Table(Name = FruitBankConstClient.ShippingItemDbTableName)]
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.ShippingItemDbTableName)]
public class ShippingItem : MgEntityBase, IShippingItem
{ {
public int Id { get; set; } public int Id { get; set; }
public int ShippingDocumentId { get; set; } public int ShippingDocumentId { get; set; }
@ -10,6 +16,7 @@ public class ShippingItem : IShippingItem
public double MeasuredNetWeight { get; set; } public double MeasuredNetWeight { get; set; }
public double MeasuredGrossWeight { get; set; } public double MeasuredGrossWeight { get; set; }
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -1,14 +0,0 @@
namespace FruitBank.Common.Entities;
public class SippingDocument : ISippingDocument
{
public int Id { get; set; }
public int PartnerId { get; set; }
public int ShippingId { get; set; }
public int ShippingItemId { get; set; }
public DateTime ShippingDate { get; set; }
public string Country { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}

View File

@ -8,6 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="linq2db.EntityFrameworkCore" Version="9.0.0" />
<PackageReference Include="MessagePack" Version="3.1.4" /> <PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="MessagePack.Annotations" Version="3.1.4" /> <PackageReference Include="MessagePack.Annotations" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8" /> <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8" />
@ -30,6 +31,12 @@
<Reference Include="AyCode.Services"> <Reference Include="AyCode.Services">
<HintPath>..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Services.dll</HintPath> <HintPath>..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Services.dll</HintPath>
</Reference> </Reference>
<Reference Include="Mango.Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath>
</Reference>
<Reference Include="Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -14,6 +14,11 @@ public static class FruitBankConstClient
public static string DefaultHubName = "fbHub"; public static string DefaultHubName = "fbHub";
public static string LoggerHubName = "loggerHub"; public static string LoggerHubName = "loggerHub";
public const string PartnerDbTableName = "fbPartner";
public const string ShippingDbTableName = "fbShipping";
public const string ShippingItemDbTableName = "fbShippingItem";
public const string ShippingDocumentDbTableName = "fbShippingDocument";
//public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") }; //public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") };
//public static Guid[] SysAdmins = new Guid[3] //public static Guid[] SysAdmins = new Guid[3]

View File

@ -0,0 +1,5 @@
namespace FruitBank.Common.Interfaces;
public interface IFruitBankDataControllerClient : IFruitBankDataControllerCommon
{
}

View File

@ -0,0 +1,22 @@
using FruitBank.Common.Entities;
using FruitBank.Common.Models;
namespace FruitBank.Common.Interfaces;
public interface IFruitBankDataControllerCommon
{
public Task<List<MeasuringModel>?> GetMeasuringModels();
public Task<MeasuringModel?> GetMeasuringModelByShippingId(int shippingId);
public Task<List<Partner>?> GetPartners();
public Task<Partner?> GetPartnerById(int id);
public Task<List<Shipping>?> GetShippings();
public Task<Shipping?> GetShippingById(int id);
public Task<List<ShippingItem>?> GetShippingItem();
public Task<ShippingItem?> GetShippingItemById(int id);
public Task<List<ShippingDocument>?> GetShippingDocuments();
public Task<ShippingDocument?> GetShippingDocumentById(int id);
}

View File

@ -0,0 +1,5 @@
namespace FruitBank.Common.Interfaces;
public interface IFruitBankDataControllerServer : IFruitBankDataControllerCommon
{
}

View File

@ -6,12 +6,24 @@ public class SignalRTags : AcSignalRTags
{ {
public const int GetSiteViewModelByUserId = int.MaxValue; public const int GetSiteViewModelByUserId = int.MaxValue;
public const int GetMeasuringModel = 10; public const int GetMeasuringModels = 10;
public const int GetMeasuringModelByShippingId = 11;
public const int GetPartners = 20;
public const int GetPartnerById = 21;
public const int GetShippings = 40;
public const int GetShippingById = 41;
public const int GetShippingItems = 50;
public const int GetShippingItemById = 51;
public const int GetShippingDocuments = 60;
public const int GetShippingDocumentById = 61;
public const int AuthenticateUser = 160; public const int AuthenticateUser = 160;
public const int RefreshToken = 200; public const int RefreshToken = 200;
public const int GetAllLogItemsByFilterText = 1000; public const int GetAllLogItemsByFilterText = 1000;
} }

View File

@ -5,7 +5,7 @@
<h3>AI Chat</h3> <h3>AI Chat</h3>
<input @bind="_userName" placeholder="Your name" /> <input @bind="_userName" placeholder="Your name" />
<input @bind="_message" placeholder="Type message..." /> <input @bind="_message" placeholder="Partner ID..." />
<button @onclick="Send">Send</button> <button @onclick="Send">Send</button>
<ul> <ul>

View File

@ -1,5 +1,8 @@
using AyCode.Core.Loggers; using AyCode.Core.Helpers;
using AyCode.Core.Loggers;
using AyCode.Models.Users;
using FruitBank.Common.Loggers; using FruitBank.Common.Loggers;
using FruitBank.Common.Models;
using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.Loggers;
using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Shared.Services.SignalRs;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
@ -8,6 +11,7 @@ using Microsoft.JSInterop;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames; using static System.Net.Mime.MediaTypeNames;
@ -35,9 +39,14 @@ namespace FruitBankHybrid.Shared.Pages
private async Task Send() private async Task Send()
{ {
_message = string.Empty; var measuringModel = new MeasuringModel();
var measuringModel = (await FruitBankSignalRClient.GetMeasuringModelAsync())!; if (int.TryParse(_message, out var partnerId))
{
_message = string.Empty;
measuringModel.Name = (await FruitBankSignalRClient.GetPartnerById(partnerId))?.Name!;
}
_messages.Add((_userName, measuringModel?.Name ?? "ERROR")); _messages.Add((_userName, measuringModel?.Name ?? "ERROR"));
} }

View File

@ -3,22 +3,23 @@ using AyCode.Core.Loggers;
using AyCode.Services.Server.SignalRs; using AyCode.Services.Server.SignalRs;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using FruitBank.Common; using FruitBank.Common;
using FruitBank.Common.Entities;
using FruitBank.Common.Interfaces;
using FruitBank.Common.Models; using FruitBank.Common.Models;
using FruitBank.Common.SignalRs; using FruitBank.Common.SignalRs;
using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.Loggers;
namespace FruitBankHybrid.Shared.Services.SignalRs namespace FruitBankHybrid.Shared.Services.SignalRs
{ {
public class FruitBankSignalRClient : AcSignalRClientBase//, IFruitBankDataControllerClient public class FruitBankSignalRClient : AcSignalRClientBase, IFruitBankDataControllerClient
{ {
public FruitBankSignalRClient(/*IServiceProvider serviceProvider, */IEnumerable<IAcLogWriterClientBase> logWriters) : base($"{FruitBankConstClient.BaseUrl}/{FruitBankConstClient.DefaultHubName}", new LoggerClient(nameof(FruitBankSignalRClient), logWriters.ToArray())) public FruitBankSignalRClient( /*IServiceProvider serviceProvider, */ IEnumerable<IAcLogWriterClientBase> logWriters) : base($"{FruitBankConstClient.BaseUrl}/{FruitBankConstClient.DefaultHubName}", new LoggerClient(nameof(FruitBankSignalRClient), logWriters.ToArray()))
{ {
//var a = ActivatorUtilities.GetServiceOrCreateInstance<TransferDataService>(serviceProvider);
ConstHelper.NameByValue<SignalRTags>(0); ConstHelper.NameByValue<SignalRTags>(0);
} }
public Task<MeasuringModel?> GetMeasuringModelAsync() public Task<MeasuringModel?> GetMeasuringModelByShippingId(int shippingId)
=> GetAllAsync<MeasuringModel>(SignalRTags.GetMeasuringModel); => GetAllAsync<MeasuringModel>(SignalRTags.GetMeasuringModelByShippingId);
//public Task GetWelcomeMessageAsync(string message, Action? callback = null) //public Task GetWelcomeMessageAsync(string message, Action? callback = null)
//{ //{
@ -26,5 +27,32 @@ namespace FruitBankHybrid.Shared.Services.SignalRs
// return GetAllAsync<string>(SignalRTags.GetAllTransferDestinations, callback); // return GetAllAsync<string>(SignalRTags.GetAllTransferDestinations, callback);
//} //}
public Task<List<MeasuringModel>?> GetMeasuringModels()
=> GetAllAsync<List<MeasuringModel>>(SignalRTags.GetMeasuringModels);
public Task<List<Partner>?> GetPartners()
=> GetAllAsync<List<Partner>>(SignalRTags.GetPartners);
public Task<Partner?> GetPartnerById(int id)
=> GetByIdAsync<Partner?>(SignalRTags.GetPartnerById, id);
public Task<List<Shipping>?> GetShippings()
=> GetAllAsync<List<Shipping>>(SignalRTags.GetShippings);
public Task<Shipping?> GetShippingById(int id)
=> GetByIdAsync<Shipping?>(SignalRTags.GetShippingById, id);
public Task<List<ShippingItem>?> GetShippingItem()
=> GetAllAsync<List<ShippingItem>>(SignalRTags.GetShippingItems);
public Task<ShippingItem?> GetShippingItemById(int id)
=> GetByIdAsync<ShippingItem?>(SignalRTags.GetShippingItemById, id);
public Task<List<ShippingDocument>?> GetShippingDocuments()
=> GetAllAsync<List<ShippingDocument>>(SignalRTags.GetShippingDocuments);
public Task<ShippingDocument?> GetShippingDocumentById(int id)
=> GetByIdAsync<ShippingDocument?>(SignalRTags.GetShippingDocumentById, id);
} }
} }

View File

@ -1,8 +1,8 @@
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using AyCode.Services.Server.SignalRs; using AyCode.Services.Server.SignalRs;
using FruitBank.Common; using FruitBank.Common;
using FruitBank.Common.Interfaces;
using FruitBank.Common.Loggers; using FruitBank.Common.Loggers;
using FruitBank.Common.Server.Controllers;
using FruitBank.Common.Server.Services.Loggers; using FruitBank.Common.Server.Services.Loggers;
using FruitBank.Common.Server.Services.SignalRs; using FruitBank.Common.Server.Services.SignalRs;
using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services;
@ -22,7 +22,7 @@ builder.Services.AddSingleton<LoggerToLoggerApiController>();
builder.Services.AddSingleton<IAcLogWriterBase, ConsoleLogWriter>(); builder.Services.AddSingleton<IAcLogWriterBase, ConsoleLogWriter>();
//builder.Services.AddSingleton<SessionService>(); //builder.Services.AddSingleton<SessionService>();
builder.Services.AddScoped<FruitBankDataController>(); //builder.Services.AddScoped<IFruitBankDataControllerServer, FruitBankDataController>();
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024); builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);
var app = builder.Build(); var app = builder.Build();