TourIAm/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs

112 lines
5.9 KiB
C#

using AyCode.Blazor.Models.Server.Models;
using AyCode.Core.Extensions;
using AyCode.Core.Loggers;
using AyCode.Services.SignalRs;
using TIAM.Database.DataLayers.Admins;
using TIAM.Services;
using TIAMWebApp.Server.Controllers;
using TIAM.Entities.Addresses;
using TIAM.Database.DataLayers.Users;
using TIAM.Entities.Profiles;
using TIAM.Core.Loggers;
namespace TIAMWebApp.Server.Services;
public class DevAdminSignalRHub : AcWebSignalRHubWithSessionBase<SignalRTags, TIAM.Core.Loggers.Logger<DevAdminSignalRHub>>
{
private readonly AdminDal _adminDal;
public DevAdminSignalRHub(IConfiguration configuration, AdminDal adminDal, UserDal userDal, UserAPIController userApiController, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, SessionService sessionService, IEnumerable<IAcLogWriterBase> logWriters)
: base(configuration, userDal, sessionService, new TIAM.Core.Loggers.Logger<DevAdminSignalRHub>(logWriters.ToArray()))
{
_adminDal = adminDal;
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(userApiController));
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(serviceProviderApiController));
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(transferDataApiController));
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(messageApiController));
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(profileApiController));
DynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(loggerApiController));
//_dynamicMethodCallModels.Add(new DynamicMethodCallModel<SignalRAttribute>(typeof(AdminDal)));
}
public override Task OnReceiveMessage(int messageTag, byte[]? message, int? requestId)
{
return ProcessOnReceiveMessage(messageTag, message, requestId, async tagName =>
{
switch (messageTag)
{
case SignalRTags.GetAddress:
//var id = Guid.Parse((string)message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0]);
var id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0].JsonTo<Guid[]>()![0];
var address = await _adminDal.GetAddressByIdAsync(id);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, address), requestId);
return;
case SignalRTags.GetAddressesByContextId:
//id = Guid.Parse((string)message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0]);
id = message!.MessagePackTo<SignalPostJsonDataMessage<IdMessage>>().PostData.Ids[0].JsonTo<Guid[]>()![0];
address = await _adminDal.GetAddressByIdAsync(id);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, new List<Address> { address! }), requestId);
return;
case SignalRTags.UpdateAddress:
address = message!.MessagePackTo<SignalPostJsonDataMessage<Address>>().PostData;
await _adminDal.UpdateAddressAsync(address);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, address), requestId);
return;
case SignalRTags.UpdateProfile:
var profile = message!.MessagePackTo<SignalPostJsonDataMessage<Profile>>().PostData;
await _adminDal.UpdateProfileAsync(profile);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, profile), requestId);
return;
//case SignalRTags.GetTransfersAsync:
// await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await _transferDataApiController.GetTransfers()), requestId);
// return;
//case SignalRTags.GetPropertiesByOwnerIdAsync:
// var ownerId = message!.MessagePackTo<SignalRequestByIdMessage>().Id;
// await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await _serviceProviderApiController.GetServiceProvidersByOwnerId(ownerId)), requestId);
// return;
//case SignalRTags.UpdateTransferAsync:
// var transfer = message!.MessagePackTo<SignalPostJsonDataMessage<Transfer>>().PostData;
// await _transferDataApiController.UpdateTransfer(transfer);
// await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, transfer), requestId);
// return;
//case SignalRTags.GetCompaniesAsync:
// await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await _serviceProviderApiController.GetServiceProviders()), requestId);
// return;
//case SignalRTags.UpdateCompanyAsync:
// var updateCompany = message!.MessagePackTo<SignalPostJsonDataMessage<Company>>().PostData;
// await _serviceProviderApiController.UpdateServiceProvider(updateCompany);
// await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, updateCompany), requestId);
// return;
default:
Logger.Error($"Server OnReceiveMessage; messageTag not found! {tagName}");
break;
}
});
}
}