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>
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\" />
</ItemGroup>
</Project>

View File

@ -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<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()))
{
DynamicMethodCallModels.Add(new AcDynamicMethodCallModel<SignalRAttribute>(fruitBankDataController));

View File

@ -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; }

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 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; }
}

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 PartnerId { get; set; }
public DateTime ShippingDate { get; set; }
public string LicencePlate { get; set; }
[SkipValuesOnUpdate]
public DateTime Created { 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 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; }
}

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>
<ItemGroup>
<PackageReference Include="linq2db.EntityFrameworkCore" Version="9.0.0" />
<PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="MessagePack.Annotations" Version="3.1.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8" />
@ -30,6 +31,12 @@
<Reference Include="AyCode.Services">
<HintPath>..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Services.dll</HintPath>
</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>
</Project>

View File

@ -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]

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 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;
}

View File

@ -5,7 +5,7 @@
<h3>AI Chat</h3>
<input @bind="_userName" placeholder="Your name" />
<input @bind="_message" placeholder="Type message..." />
<input @bind="_message" placeholder="Partner ID..." />
<button @onclick="Send">Send</button>
<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.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"));
}

View File

@ -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<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);
}
public Task<MeasuringModel?> GetMeasuringModelAsync()
=> GetAllAsync<MeasuringModel>(SignalRTags.GetMeasuringModel);
public Task<MeasuringModel?> GetMeasuringModelByShippingId(int shippingId)
=> GetAllAsync<MeasuringModel>(SignalRTags.GetMeasuringModelByShippingId);
//public Task GetWelcomeMessageAsync(string message, Action? callback = null)
//{
// Logger.Detail($"GetWelcomeMessageAsync client called; message: {message}");
// 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.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<LoggerToLoggerApiController>();
builder.Services.AddSingleton<IAcLogWriterBase, ConsoleLogWriter>();
//builder.Services.AddSingleton<SessionService>();
builder.Services.AddScoped<FruitBankDataController>();
//builder.Services.AddScoped<IFruitBankDataControllerServer, FruitBankDataController>();
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);
var app = builder.Build();