This commit is contained in:
Adam 2024-05-28 13:27:07 +02:00
commit 7921cf5e95
5 changed files with 105 additions and 108 deletions

View File

@ -6,15 +6,13 @@ namespace TIAM.Services;
public class SignalRTags : AcSignalRTags public class SignalRTags : AcSignalRTags
{ {
//[SignalMessageTag(null, typeof(SignalResponseMessage<string>), null, null)] //[SignalMessageTag(null, typeof(SignalResponseMessage<string>), null, null)]
public static readonly int GetTransfersAsync = 5; public const int GetTransfersAsync = 5;
public static readonly int GetPropertiesByOwnerIdAsync = 6; public const int GetPropertiesByOwnerIdAsync = 6;
[SignalMessageTag(typeof(SignalPostJsonDataMessage<Transfer>), typeof(SignalResponseMessage<string>), null, null)] [SignalMessageTag(typeof(SignalPostJsonDataMessage<Transfer>), typeof(SignalResponseMessage<string>), null, null)]
public static readonly int UpdateTransferAsync = 7; public const int UpdateTransferAsync = 7;
public static readonly int GetCompaniesAsync = 8; public const int AddTransferAsync = 8;
public const int DeleteTransferAsync = 9;
public static readonly int UpdateCompanyAsync = 9; public const int GetCompaniesAsync = 10;
public static readonly int CreateCompanyAsync = 10;
} }

View File

@ -18,6 +18,7 @@
@using AyCode.Core.Extensions; @using AyCode.Core.Extensions;
@using AyCode.Core @using AyCode.Core
@using AyCode.Core.Helpers @using AyCode.Core.Helpers
@using AyCode.Interfaces.Entities
@using TIAM.Services @using TIAM.Services
@layout AdminLayout @layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@ -338,68 +339,75 @@
transferEditModel.ContactEmail = "your@email.address"; transferEditModel.ContactEmail = "your@email.address";
} }
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
bool success = false;
Transfer? transfer = null;
if (e.IsNew)
{
//add new orderData to orderData array
_logger.Info("New orderData added");
//await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel);
}
else
{
_logger.Info("orderData updated at id " + ((Transfer)e.EditModel).Id);
transfer = await devAdminSignalClient.UpdateAsync(SignalRTags.UpdateTransferAsync, (Transfer)e.EditModel);
//transfer = await transferDataService.UpdateTransferAsync((Transfer)e.EditModel);
}
//get transfer from TransferData by Id
// foreach (var transferToModify in (List<Transfer>)TransferData)
// {
// myModel = (Transfer)e.EditModel;
// if (transferToModify.Id == myModel.Id)
// {
// //transferToModify.Driver = myModel.Driver;
// }
// }
//if (success)
if (transfer != null)
{
UpdateDataSources(transfer);
//e.Reload = true;
}
else UpdateAllDataAsync().Forget();
}
private void UpdateDataSources(Transfer transfer)
{
var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id);
if (transferIndex > -1) TransferDataList[transferIndex] = transfer;
else TransferDataList.Add(transfer);
var appointment = CreateAppointmentModel(transfer);
var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id);
if (appointmentIndex > -1) AppointmentModels[appointmentIndex] = appointment;
else AppointmentModels.Add(appointment);
}
async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e)
{ {
var transfer = (Transfer)e.DataItem;
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array //remove orderData from orderData array
_logger.Info("orderData deleted"); _logger.Info("transfer delete");
PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget();
//await UpdateDataAsync(); //await UpdateDataAsync();
} }
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
{
var transfer = (Transfer)e.EditModel;
var logText = e.IsNew ? "add" : "update";
_logger.Info($"EditModelSaving, {logText} transfer; transferId " + transfer.Id);
PostDataToServerAsync(transfer, e.IsNew ? SignalRTags.AddTransferAsync : SignalRTags.UpdateTransferAsync).Forget();
//await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel);
//transfer = await transferDataService.UpdateTransferAsync(transfer);
}
private Task PostDataToServerAsync<T>(T transfer, int messageTag, bool isDelete = false) where T : Transfer //IEntityGuid
{
_logger.Info("PostDataToServerAsync called; transferId " + transfer.Id);
RefreshDataSources(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J.
return devAdminSignalClient.PostDataAsync(messageTag, transfer, repsonse =>
{
if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null)
{
UpdateAllDataAsync().Forget();
return;
}
RefreshDataSources(repsonse.ResponseData, isDelete);
StateHasChanged();
});
//transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer);
}
private void RefreshDataSources(Transfer transfer, bool isDelete)
{
var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id);
if (isDelete && transferIndex > -1) TransferDataList.RemoveAt(transferIndex);
else
{
if (transferIndex > -1) TransferDataList[transferIndex] = transfer;
else TransferDataList.Add(transfer);
}
var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id);
if (isDelete && appointmentIndex > -1) AppointmentModels.RemoveAt(appointmentIndex);
else
{
var appointment = CreateAppointmentModel(transfer);
if (appointmentIndex > -1) AppointmentModels[appointmentIndex] = appointment;
else AppointmentModels.Add(appointment);
}
}
public Task UpdateAllDataAsync() public Task UpdateAllDataAsync()
{ {
_logger.Info("UpdateAllDataAsync called"); _logger.Info("UpdateAllDataAsync called");
@ -472,7 +480,7 @@
void ColumnChooserButton_Click() void ColumnChooserButton_Click()
{ {
Grid2.ShowColumnChooser(); Grid2.ShowColumnChooser();
} }
IGrid Grid2 { get; set; } IGrid Grid2 { get; set; }

View File

@ -391,11 +391,11 @@ namespace TIAMWebApp.Server.Controllers
[AllowAnonymous] [AllowAnonymous]
[HttpPost] [HttpPost]
[Route(APIUrls.GetTransferByIdRouteName)] [Route(APIUrls.GetTransferByIdRouteName)]
public async Task<IActionResult> GetTransferById([FromBody] Guid transferID) public async Task<IActionResult> GetTransferById([FromBody] Guid transferId)
{ {
_logger.Info(@"Get transfer by id called"); _logger.Info($"Get transfer by id called; transferId: {transferId}");
_logger.Info($"transferId: {transferID.ToString()}");
var result = _adminDal.GetTransferById(transferID); var result = _adminDal.GetTransferById(transferId);
//TODO: Implementálni a Logout-ot kliens és szerver oldalon is! - J. //TODO: Implementálni a Logout-ot kliens és szerver oldalon is! - J.
return Ok(result); return Ok(result);
@ -406,7 +406,7 @@ namespace TIAMWebApp.Server.Controllers
[Route(APIUrls.UpdateTransferRouteName)] [Route(APIUrls.UpdateTransferRouteName)]
public async Task<Transfer> UpdateTransfer(Transfer transferToModify) public async Task<Transfer> UpdateTransfer(Transfer transferToModify)
{ {
_logger.Info($"UpdateTransfer called! + {transferToModify.Id}"); _logger.Info($"UpdateTransfer called! + {Request?.ReadFormAsync()}");
await _adminDal.UpdateTransferAsync(transferToModify); await _adminDal.UpdateTransferAsync(transferToModify);
return transferToModify; return transferToModify;

View File

@ -14,7 +14,6 @@ using TIAMWebApp.Server.Controllers;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Web; using System.Web;
using TIAM.Entities.ServiceProviders;
namespace TIAMWebApp.Server.Services; namespace TIAMWebApp.Server.Services;
@ -59,55 +58,43 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController
try try
{ {
if (messageTag == SignalRTags.GetTransfersAsync) switch (messageTag)
{ {
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await transferDataAPIController.GetTransfers()), requestId); case SignalRTags.GetTransfersAsync:
} await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await transferDataAPIController.GetTransfers()), requestId);
else if (messageTag == SignalRTags.GetPropertiesByOwnerIdAsync) return;
{
var ownerId = message!.MessagePackTo<SignalRequestByIdMessage>().Id;
var json = (await serviceProviderAPIController.GetServiceProvidersByOwnerId(ownerId)).ToJson();
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, json), requestId); case SignalRTags.GetPropertiesByOwnerIdAsync:
} var ownerId = message!.MessagePackTo<SignalRequestByIdMessage>().Id;
else if (messageTag == SignalRTags.UpdateTransferAsync) var json = (await serviceProviderAPIController.GetServiceProvidersByOwnerId(ownerId)).ToJson();
{
//var jsonPostData = message!.MessagePackTo<SignalPostJsonDataMessage>().PostDataJson; await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, json), requestId);
//_logger.DetailConditional($"PostData: [{jsonPostData}]");
//var transfer = jsonPostData.JsonTo<Transfer>()!;
var transfer = message!.MessagePackTo<SignalPostJsonDataMessage<Transfer>>().PostData; return;
await transferDataAPIController.UpdateTransfer(transfer); case SignalRTags.UpdateTransferAsync:
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, transfer.ToJson()), requestId); var transfer = message!.MessagePackTo<SignalPostJsonDataMessage<Transfer>>().PostData;
}
else if (messageTag == SignalRTags.GetCompaniesAsync)
{
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await serviceProviderAPIController.GetServiceProviders()), requestId);
}
else if (messageTag == SignalRTags.UpdateCompanyAsync)
{
var company = message!.MessagePackTo<SignalPostJsonDataMessage<Company>>().PostData;
await serviceProviderAPIController.UpdateServiceProvider(company); await transferDataAPIController.UpdateTransfer(transfer);
await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, company.ToJson()), requestId); await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, transfer.ToJson()), requestId);
}
else if (messageTag == SignalRTags.CreateCompanyAsync)
{
//var company = message!.MessagePackTo<SignalPostJsonDataMessage<Company>>().PostData;
//await serviceProviderAPIController.CreateServiceProvider(company); return;
//await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, company.ToJson()), requestId);
case SignalRTags.GetCompaniesAsync:
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await serviceProviderAPIController.GetServiceProviders()), requestId);
return;
default:
_logger.Error($"Server OnReceiveMessage; messageTag not found! messageTag: {messageTag}");
break;
} }
return;
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.Error($"Server OnReceiveMessage; {ex.Message}", ex); _logger.Error($"Server OnReceiveMessage; {ex.Message}", ex);
} }
await ResponseToCaller(messageTag, new SignalResponseMessage<byte[]>(SignalResponseStatus.Error, null), requestId); await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Error), requestId);
} }
protected async Task ResponseToCaller(int messageTag, ISignalRMessage message, int? requestId) protected async Task ResponseToCaller(int messageTag, ISignalRMessage message, int? requestId)

View File

@ -104,9 +104,9 @@ namespace TIAMWebApp.Shared.Application.Services
public virtual Task GetAllAsync<TResponseData>(int messageTag, Action<ISignalResponseMessage<TResponseData?>> responseCallback) public virtual Task GetAllAsync<TResponseData>(int messageTag, Action<ISignalResponseMessage<TResponseData?>> responseCallback)
=> SendMessageToServerAsync(messageTag, null, responseCallback); => SendMessageToServerAsync(messageTag, null, responseCallback);
public virtual Task<TPostData?> UpdateAsync<TPostData>(int messageTag, TPostData postData) where TPostData : class public virtual Task<TPostData?> PostDataAsync<TPostData>(int messageTag, TPostData postData) where TPostData : class
=> SendMessageToServerAsync<TPostData>(messageTag, new SignalPostJsonDataMessage<TPostData>(postData), AcDomain.NextUniqueInt32); => SendMessageToServerAsync<TPostData>(messageTag, new SignalPostJsonDataMessage<TPostData>(postData), AcDomain.NextUniqueInt32);
public virtual Task UpdateAsync<TPostData>(int messageTag, TPostData postData, Action<ISignalResponseMessage<TPostData?>> responseCallback) where TPostData : class public virtual Task PostDataAsync<TPostData>(int messageTag, TPostData postData, Action<ISignalResponseMessage<TPostData?>> responseCallback) where TPostData : class
=> SendMessageToServerAsync(messageTag, new SignalPostJsonDataMessage<TPostData>(postData), responseCallback); => SendMessageToServerAsync(messageTag, new SignalPostJsonDataMessage<TPostData>(postData), responseCallback);
#endregion CRUD #endregion CRUD
@ -182,6 +182,7 @@ namespace TIAMWebApp.Shared.Application.Services
if (requestId.HasValue && _responseByRequestId.ContainsKey(requestId.Value)) if (requestId.HasValue && _responseByRequestId.ContainsKey(requestId.Value))
{ {
var reqId = requestId.Value; var reqId = requestId.Value;
var responseMessage = message.MessagePackTo<SignalResponseJsonMessage>(ContractlessStandardResolver.Options); var responseMessage = message.MessagePackTo<SignalResponseJsonMessage>(ContractlessStandardResolver.Options);
switch (_responseByRequestId[reqId]) switch (_responseByRequestId[reqId])
@ -209,11 +210,14 @@ namespace TIAMWebApp.Shared.Application.Services
_responseByRequestId.TryRemove(reqId, out _); _responseByRequestId.TryRemove(reqId, out _);
} }
OnMessageReceived(messageTag, message, requestId); OnMessageReceived(messageTag, message, requestId);
} }
catch(Exception ex) catch(Exception ex)
{ {
if (requestId.HasValue)
_responseByRequestId.TryRemove(requestId.Value, out _);
Logger.Error($"Client OnReceiveMessage; messageTag: {messageTag}; requestId: {requestId}; {ex.Message}", ex); Logger.Error($"Client OnReceiveMessage; messageTag: {messageTag}; requestId: {requestId}; {ex.Message}", ex);
throw; throw;
} }