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
{
//[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)]
public static readonly int UpdateTransferAsync = 7;
public static readonly int GetCompaniesAsync = 8;
public static readonly int UpdateCompanyAsync = 9;
public static readonly int CreateCompanyAsync = 10;
public const int UpdateTransferAsync = 7;
public const int AddTransferAsync = 8;
public const int DeleteTransferAsync = 9;
public const int GetCompaniesAsync = 10;
}

View File

@ -18,6 +18,7 @@
@using AyCode.Core.Extensions;
@using AyCode.Core
@using AyCode.Core.Helpers
@using AyCode.Interfaces.Entities
@using TIAM.Services
@layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
@ -338,68 +339,75 @@
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)
{
var transfer = (Transfer)e.DataItem;
//await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem);
//remove orderData from orderData array
_logger.Info("orderData deleted");
_logger.Info("transfer delete");
PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget();
//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()
{
_logger.Info("UpdateAllDataAsync called");
@ -472,7 +480,7 @@
void ColumnChooserButton_Click()
{
Grid2.ShowColumnChooser();
Grid2.ShowColumnChooser();
}
IGrid Grid2 { get; set; }

View File

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

View File

@ -14,7 +14,6 @@ using TIAMWebApp.Server.Controllers;
using System.Text.Json.Nodes;
using System.Text.RegularExpressions;
using System.Web;
using TIAM.Entities.ServiceProviders;
namespace TIAMWebApp.Server.Services;
@ -59,55 +58,43 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController
try
{
if (messageTag == SignalRTags.GetTransfersAsync)
switch (messageTag)
{
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await transferDataAPIController.GetTransfers()), requestId);
}
else if (messageTag == SignalRTags.GetPropertiesByOwnerIdAsync)
{
var ownerId = message!.MessagePackTo<SignalRequestByIdMessage>().Id;
var json = (await serviceProviderAPIController.GetServiceProvidersByOwnerId(ownerId)).ToJson();
case SignalRTags.GetTransfersAsync:
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, await transferDataAPIController.GetTransfers()), requestId);
return;
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, json), requestId);
}
else if (messageTag == SignalRTags.UpdateTransferAsync)
{
case SignalRTags.GetPropertiesByOwnerIdAsync:
var ownerId = message!.MessagePackTo<SignalRequestByIdMessage>().Id;
var json = (await serviceProviderAPIController.GetServiceProvidersByOwnerId(ownerId)).ToJson();
//var jsonPostData = message!.MessagePackTo<SignalPostJsonDataMessage>().PostDataJson;
//_logger.DetailConditional($"PostData: [{jsonPostData}]");
//var transfer = jsonPostData.JsonTo<Transfer>()!;
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, json), requestId);
var transfer = message!.MessagePackTo<SignalPostJsonDataMessage<Transfer>>().PostData;
return;
await transferDataAPIController.UpdateTransfer(transfer);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, transfer.ToJson()), requestId);
}
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;
case SignalRTags.UpdateTransferAsync:
var transfer = message!.MessagePackTo<SignalPostJsonDataMessage<Transfer>>().PostData;
await serviceProviderAPIController.UpdateServiceProvider(company);
await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, company.ToJson()), requestId);
}
else if (messageTag == SignalRTags.CreateCompanyAsync)
{
//var company = message!.MessagePackTo<SignalPostJsonDataMessage<Company>>().PostData;
await transferDataAPIController.UpdateTransfer(transfer);
await ResponseToCaller(messageTag, new SignalResponseJsonMessage(SignalResponseStatus.Success, transfer.ToJson()), requestId);
//await serviceProviderAPIController.CreateServiceProvider(company);
//await ResponseToCaller(messageTag, new SignalResponseMessage<string>(SignalResponseStatus.Success, company.ToJson()), requestId);
return;
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)
{
_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)

View File

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