From ec93fc7afd1ed9069800e3c2b801594942f9d337 Mon Sep 17 00:00:00 2001 From: Loretta Date: Sun, 7 Sep 2025 06:56:27 +0200 Subject: [PATCH] refactoring, improvements, etc... --- .../Controllers/FruitBankDataController.cs | 22 ---------- .../FruitBank.Common.Server.csproj | 4 ++ .../Services/SignalRs/DevAdminSignalRhub.cs | 4 +- ...ippingDocument.cs => IShippingDocument.cs} | 2 +- FruitBank.Common/Entities/Partner.cs | 11 ++++- FruitBank.Common/Entities/Shipping.cs | 10 ++++- FruitBank.Common/Entities/ShippingDocument.cs | 20 ++++++++++ FruitBank.Common/Entities/ShippingItem.cs | 11 ++++- FruitBank.Common/Entities/SippingDocument.cs | 14 ------- FruitBank.Common/FruitBank.Common.csproj | 7 ++++ FruitBank.Common/FruitBankConstClient.cs | 5 +++ .../IFruitBankDataControllerClient.cs | 5 +++ .../IFruitBankDataControllerCommon.cs | 22 ++++++++++ .../IFruitBankDataControllerServer.cs | 5 +++ FruitBank.Common/SignalRs/SignalRTags.cs | 16 +++++++- FruitBankHybrid.Shared/Pages/Chat.razor | 2 +- FruitBankHybrid.Shared/Pages/Chat.razor.cs | 15 +++++-- .../SignalRs/FruitBankSignalRClient.cs | 40 ++++++++++++++++--- FruitBankHybrid.Web/Program.cs | 4 +- 19 files changed, 160 insertions(+), 59 deletions(-) delete mode 100644 FruitBank.Common.Server/Controllers/FruitBankDataController.cs rename FruitBank.Common/Entities/{ISippingDocument.cs => IShippingDocument.cs} (83%) create mode 100644 FruitBank.Common/Entities/ShippingDocument.cs delete mode 100644 FruitBank.Common/Entities/SippingDocument.cs create mode 100644 FruitBank.Common/Interfaces/IFruitBankDataControllerClient.cs create mode 100644 FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs create mode 100644 FruitBank.Common/Interfaces/IFruitBankDataControllerServer.cs diff --git a/FruitBank.Common.Server/Controllers/FruitBankDataController.cs b/FruitBank.Common.Server/Controllers/FruitBankDataController.cs deleted file mode 100644 index ce579ca..0000000 --- a/FruitBank.Common.Server/Controllers/FruitBankDataController.cs +++ /dev/null @@ -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 logWriters)//: IFruitBankDataControllerCommon - { - private readonly ILogger _logger = new Logger(logWriters.ToArray()); - - - [SignalR(SignalRTags.GetMeasuringModel)] - public MeasuringModel GetMeasuringModel() - { - _logger.Detail($"GetMeasuringModel invoked"); - - return new MeasuringModel($"GetMeasuringModel invoked [{DateTime.Now}]"); - } - } -} diff --git a/FruitBank.Common.Server/FruitBank.Common.Server.csproj b/FruitBank.Common.Server/FruitBank.Common.Server.csproj index d094fc3..2768825 100644 --- a/FruitBank.Common.Server/FruitBank.Common.Server.csproj +++ b/FruitBank.Common.Server/FruitBank.Common.Server.csproj @@ -39,4 +39,8 @@ + + + + diff --git a/FruitBank.Common.Server/Services/SignalRs/DevAdminSignalRhub.cs b/FruitBank.Common.Server/Services/SignalRs/DevAdminSignalRhub.cs index 0118d60..23f4b57 100644 --- a/FruitBank.Common.Server/Services/SignalRs/DevAdminSignalRhub.cs +++ b/FruitBank.Common.Server/Services/SignalRs/DevAdminSignalRhub.cs @@ -2,8 +2,8 @@ using AyCode.Core.Loggers; using AyCode.Models.Server.DynamicMethods; using AyCode.Services.SignalRs; +using FruitBank.Common.Interfaces; using FruitBank.Common.Loggers; -using FruitBank.Common.Server.Controllers; using FruitBank.Common.SignalRs; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Configuration; @@ -28,7 +28,7 @@ namespace FruitBank.Common.Server.Services.SignalRs; public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase> { - public DevAdminSignalRHub(IConfiguration configuration, FruitBankDataController fruitBankDataController/*, SessionService sessionService*/, IEnumerable logWriters) + public DevAdminSignalRHub(IConfiguration configuration, IFruitBankDataControllerServer fruitBankDataController/*, SessionService sessionService*/, IEnumerable logWriters) : base(configuration, new Logger(logWriters.ToArray())) { DynamicMethodCallModels.Add(new AcDynamicMethodCallModel(fruitBankDataController)); diff --git a/FruitBank.Common/Entities/ISippingDocument.cs b/FruitBank.Common/Entities/IShippingDocument.cs similarity index 83% rename from FruitBank.Common/Entities/ISippingDocument.cs rename to FruitBank.Common/Entities/IShippingDocument.cs index 824b93b..7e50b92 100644 --- a/FruitBank.Common/Entities/ISippingDocument.cs +++ b/FruitBank.Common/Entities/IShippingDocument.cs @@ -3,7 +3,7 @@ using AyCode.Interfaces.TimeStampInfo; namespace FruitBank.Common.Entities; -public interface ISippingDocument: IEntityInt, ITimeStampInfo +public interface IShippingDocument: IEntityInt, ITimeStampInfo { public int PartnerId { get; set; } public int ShippingId { get; set; } diff --git a/FruitBank.Common/Entities/Partner.cs b/FruitBank.Common/Entities/Partner.cs index 06e0957..c3bc472 100644 --- a/FruitBank.Common/Entities/Partner.cs +++ b/FruitBank.Common/Entities/Partner.cs @@ -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 string Name { get; set; } @@ -11,6 +17,7 @@ public class Partner : IPartner public string City { get; set; } public string Street { get; set; } + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } } \ No newline at end of file diff --git a/FruitBank.Common/Entities/Shipping.cs b/FruitBank.Common/Entities/Shipping.cs index 19ca0d2..2a39536 100644 --- a/FruitBank.Common/Entities/Shipping.cs +++ b/FruitBank.Common/Entities/Shipping.cs @@ -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 PartnerId { get; set; } public DateTime ShippingDate { get; set; } public string LicencePlate { get; set; } + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } } \ No newline at end of file diff --git a/FruitBank.Common/Entities/ShippingDocument.cs b/FruitBank.Common/Entities/ShippingDocument.cs new file mode 100644 index 0000000..40cbc32 --- /dev/null +++ b/FruitBank.Common/Entities/ShippingDocument.cs @@ -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; } +} \ No newline at end of file diff --git a/FruitBank.Common/Entities/ShippingItem.cs b/FruitBank.Common/Entities/ShippingItem.cs index 543a052..4bab46f 100644 --- a/FruitBank.Common/Entities/ShippingItem.cs +++ b/FruitBank.Common/Entities/ShippingItem.cs @@ -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 ShippingDocumentId { get; set; } @@ -10,6 +16,7 @@ public class ShippingItem : IShippingItem public double MeasuredNetWeight { get; set; } public double MeasuredGrossWeight { get; set; } + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } } \ No newline at end of file diff --git a/FruitBank.Common/Entities/SippingDocument.cs b/FruitBank.Common/Entities/SippingDocument.cs deleted file mode 100644 index 4e91881..0000000 --- a/FruitBank.Common/Entities/SippingDocument.cs +++ /dev/null @@ -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; } -} \ No newline at end of file diff --git a/FruitBank.Common/FruitBank.Common.csproj b/FruitBank.Common/FruitBank.Common.csproj index 7cc6a3e..127d2b8 100644 --- a/FruitBank.Common/FruitBank.Common.csproj +++ b/FruitBank.Common/FruitBank.Common.csproj @@ -8,6 +8,7 @@ + @@ -30,6 +31,12 @@ ..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Services.dll + + ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll + + + ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll + diff --git a/FruitBank.Common/FruitBankConstClient.cs b/FruitBank.Common/FruitBankConstClient.cs index dd243ef..2d8fbd8 100644 --- a/FruitBank.Common/FruitBankConstClient.cs +++ b/FruitBank.Common/FruitBankConstClient.cs @@ -14,6 +14,11 @@ public static class FruitBankConstClient public static string DefaultHubName = "fbHub"; 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[] SysAdmins = new Guid[3] diff --git a/FruitBank.Common/Interfaces/IFruitBankDataControllerClient.cs b/FruitBank.Common/Interfaces/IFruitBankDataControllerClient.cs new file mode 100644 index 0000000..ab96c09 --- /dev/null +++ b/FruitBank.Common/Interfaces/IFruitBankDataControllerClient.cs @@ -0,0 +1,5 @@ +namespace FruitBank.Common.Interfaces; + +public interface IFruitBankDataControllerClient : IFruitBankDataControllerCommon +{ +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs new file mode 100644 index 0000000..86ed980 --- /dev/null +++ b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs @@ -0,0 +1,22 @@ +using FruitBank.Common.Entities; +using FruitBank.Common.Models; + +namespace FruitBank.Common.Interfaces; + +public interface IFruitBankDataControllerCommon +{ + public Task?> GetMeasuringModels(); + public Task GetMeasuringModelByShippingId(int shippingId); + + public Task?> GetPartners(); + public Task GetPartnerById(int id); + + public Task?> GetShippings(); + public Task GetShippingById(int id); + + public Task?> GetShippingItem(); + public Task GetShippingItemById(int id); + + public Task?> GetShippingDocuments(); + public Task GetShippingDocumentById(int id); +} \ No newline at end of file diff --git a/FruitBank.Common/Interfaces/IFruitBankDataControllerServer.cs b/FruitBank.Common/Interfaces/IFruitBankDataControllerServer.cs new file mode 100644 index 0000000..6c3b546 --- /dev/null +++ b/FruitBank.Common/Interfaces/IFruitBankDataControllerServer.cs @@ -0,0 +1,5 @@ +namespace FruitBank.Common.Interfaces; + +public interface IFruitBankDataControllerServer : IFruitBankDataControllerCommon +{ +} \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index 71811cc..47c9e46 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -6,12 +6,24 @@ public class SignalRTags : AcSignalRTags { 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 RefreshToken = 200; - public const int GetAllLogItemsByFilterText = 1000; } diff --git a/FruitBankHybrid.Shared/Pages/Chat.razor b/FruitBankHybrid.Shared/Pages/Chat.razor index de5fdea..cd8c722 100644 --- a/FruitBankHybrid.Shared/Pages/Chat.razor +++ b/FruitBankHybrid.Shared/Pages/Chat.razor @@ -5,7 +5,7 @@

AI Chat

- +
    diff --git a/FruitBankHybrid.Shared/Pages/Chat.razor.cs b/FruitBankHybrid.Shared/Pages/Chat.razor.cs index 8b50b8e..51bcc3a 100644 --- a/FruitBankHybrid.Shared/Pages/Chat.razor.cs +++ b/FruitBankHybrid.Shared/Pages/Chat.razor.cs @@ -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.Models; using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.SignalRs; using Microsoft.AspNetCore.Components; @@ -8,6 +11,7 @@ using Microsoft.JSInterop; using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using static System.Net.Mime.MediaTypeNames; @@ -35,9 +39,14 @@ namespace FruitBankHybrid.Shared.Pages 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")); } diff --git a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs index 51479f1..0b466ee 100644 --- a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs +++ b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs @@ -3,28 +3,56 @@ using AyCode.Core.Loggers; using AyCode.Services.Server.SignalRs; using AyCode.Services.SignalRs; using FruitBank.Common; +using FruitBank.Common.Entities; +using FruitBank.Common.Interfaces; using FruitBank.Common.Models; using FruitBank.Common.SignalRs; using FruitBankHybrid.Shared.Services.Loggers; namespace FruitBankHybrid.Shared.Services.SignalRs { - public class FruitBankSignalRClient : AcSignalRClientBase//, IFruitBankDataControllerClient + public class FruitBankSignalRClient : AcSignalRClientBase, IFruitBankDataControllerClient { - public FruitBankSignalRClient(/*IServiceProvider serviceProvider, */IEnumerable logWriters) : base($"{FruitBankConstClient.BaseUrl}/{FruitBankConstClient.DefaultHubName}", new LoggerClient(nameof(FruitBankSignalRClient), logWriters.ToArray())) + public FruitBankSignalRClient( /*IServiceProvider serviceProvider, */ IEnumerable logWriters) : base($"{FruitBankConstClient.BaseUrl}/{FruitBankConstClient.DefaultHubName}", new LoggerClient(nameof(FruitBankSignalRClient), logWriters.ToArray())) { - //var a = ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider); ConstHelper.NameByValue(0); } - public Task GetMeasuringModelAsync() - => GetAllAsync(SignalRTags.GetMeasuringModel); + public Task GetMeasuringModelByShippingId(int shippingId) + => GetAllAsync(SignalRTags.GetMeasuringModelByShippingId); //public Task GetWelcomeMessageAsync(string message, Action? callback = null) //{ // Logger.Detail($"GetWelcomeMessageAsync client called; message: {message}"); - + // return GetAllAsync(SignalRTags.GetAllTransferDestinations, callback); //} + + public Task?> GetMeasuringModels() + => GetAllAsync>(SignalRTags.GetMeasuringModels); + + public Task?> GetPartners() + => GetAllAsync>(SignalRTags.GetPartners); + + public Task GetPartnerById(int id) + => GetByIdAsync(SignalRTags.GetPartnerById, id); + + public Task?> GetShippings() + => GetAllAsync>(SignalRTags.GetShippings); + + public Task GetShippingById(int id) + => GetByIdAsync(SignalRTags.GetShippingById, id); + + public Task?> GetShippingItem() + => GetAllAsync>(SignalRTags.GetShippingItems); + + public Task GetShippingItemById(int id) + => GetByIdAsync(SignalRTags.GetShippingItemById, id); + + public Task?> GetShippingDocuments() + => GetAllAsync>(SignalRTags.GetShippingDocuments); + + public Task GetShippingDocumentById(int id) + => GetByIdAsync(SignalRTags.GetShippingDocumentById, id); } } diff --git a/FruitBankHybrid.Web/Program.cs b/FruitBankHybrid.Web/Program.cs index 468dd38..e233357 100644 --- a/FruitBankHybrid.Web/Program.cs +++ b/FruitBankHybrid.Web/Program.cs @@ -1,8 +1,8 @@ using AyCode.Core.Loggers; using AyCode.Services.Server.SignalRs; using FruitBank.Common; +using FruitBank.Common.Interfaces; using FruitBank.Common.Loggers; -using FruitBank.Common.Server.Controllers; using FruitBank.Common.Server.Services.Loggers; using FruitBank.Common.Server.Services.SignalRs; using FruitBankHybrid.Shared.Services; @@ -22,7 +22,7 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); //builder.Services.AddSingleton(); -builder.Services.AddScoped(); +//builder.Services.AddScoped(); builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024); var app = builder.Build();