From 90156b723951775659dd183d8322c7a68f586201 Mon Sep 17 00:00:00 2001 From: Loretta Date: Sun, 30 Jun 2024 07:13:43 +0200 Subject: [PATCH] improvements, fixes, etc... --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 45 ++++++++++++++----- TIAM.Database/DbContexts/DbContextBase.cs | 4 +- .../User/SysAdmins/ManageTransfers.razor | 3 +- .../Controllers/TransferDataAPIController.cs | 31 ++++++++----- .../Server/Services/DevAdminSignalRhub.cs | 2 +- .../Services/ServiceProviderDataService.cs | 8 ++-- .../SignalRClientTest.cs | 18 ++++---- .../SignalRDataSourceTest.cs | 2 +- 8 files changed, 72 insertions(+), 41 deletions(-) diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index f3b815f3..7cf55d5b 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -61,17 +61,42 @@ namespace TIAM.Database.DataLayers.Admins public string? GetTransferJsonById(Guid transferId) => Session(ctx => ctx.GetTransferById(transferId)?.ToJson()); public Task AddTransferAsync(Transfer transfer) => TransactionAsync(ctx => ctx.AddTransfer(transfer)); - public Task UpdateTransferAsync(Transfer transfer) => TransactionAsync(ctx => - { - //foreach (var entityEntry in ctx.ChangeTracker.Entries()) - //{ - // if (entityEntry.Entity is not Transfer) - // entityEntry.State = EntityState.Unchanged; - //} - //transfer.TransferToDrivers = null!; - return ctx.UpdateTransfer(transfer); - }); + public async Task UpdateTransferAsync(Transfer transfer) + { + Transfer? entity = null; + + var result = await TransactionAsync(ctx => + { + entity = ctx.Set().AsNoTracking().FirstOrDefault(e => e.Id == transfer.Id); + if (entity == null) return false; + + ctx.Entry(entity).State = EntityState.Detached; + ctx.Entry(entity).CurrentValues.SetValues(transfer); + + return ctx.UpdateTransfer(entity); + + //foreach (var entityEntry in ctx.ChangeTracker.Entries()) + //{ + // if (entityEntry.Entity is not Transfer) + // entityEntry.State = EntityState.Unchanged; + //} + + //var existingTransfer = ctx.Transfers.Local.SingleOrDefault(o => o.Id == transfer.Id); + //if (existingTransfer != null) + // ctx.Entry(existingTransfer).State = EntityState.Detached; + + //var existingUsers = ctx.Users.Local.Where(o => transfer.TransferToDrivers.Any(x => x.UserProductMapping.UserId == o.Id)).ToList(); + //foreach (var existingUser in existingUsers) + // ctx.Entry(existingUser).State = EntityState.Detached; + + //transfer.TransferToDrivers = null!; + + //return ctx.UpdateTransfer(transfer); + }); + + return result ? entity : null; + } public Task UpdateTransferAsync(Transfer transfer, TransferToDriver transferToDriver) => UpdateTransferAsync(transfer, [transferToDriver]); public Task UpdateTransferAsync(Transfer transfer, List transferToDrivers) diff --git a/TIAM.Database/DbContexts/DbContextBase.cs b/TIAM.Database/DbContexts/DbContextBase.cs index 890f9165..68aafadb 100644 --- a/TIAM.Database/DbContexts/DbContextBase.cs +++ b/TIAM.Database/DbContexts/DbContextBase.cs @@ -23,10 +23,10 @@ namespace TIAM.Database.DbContexts { base.OnConfiguring(optionsBuilder); - optionsBuilder.UseLazyLoadingProxies(false); + optionsBuilder.UseLazyLoadingProxies(true); optionsBuilder.EnableDetailedErrors(true); - optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTrackingWithIdentityResolution); + //optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTrackingWithIdentityResolution); //optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection")); //var connString = "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=false;Encrypt=false;TrustServerCertificate=True;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true"; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 969edaad..8375c4f3 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -82,7 +82,6 @@ _selectedCategories = Statuses.Where(x => x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList(); + private static List _selectedCategories = Statuses.Where(x => /* x.StatusValue != (byte)TransferStatusType.OrderSubmitted && */ x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList(); private string? _filterText = GetFilterText(_selectedCategories.Select(x => (TransferStatusType)x.StatusValue).ToList()); private MessageWizardModel _messageWizardModel = new(); diff --git a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs index 62a8e96d..d5c97e39 100644 --- a/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs +++ b/TIAMWebApp/Server/Controllers/TransferDataAPIController.cs @@ -556,6 +556,15 @@ namespace TIAMWebApp.Server.Controllers return result; } + [SignalR(SignalRTags.GetTransfersByFilterText)] + public async Task> GetTransfersByFilterText(string criteriaOperatorText) + { + if (criteriaOperatorText.IsNullOrWhiteSpace()) return await GetTransfers(); + + var results = await _adminDal.GetTransfersByFilterAsync(CriteriaOperator.Parse(criteriaOperatorText)); + return results; + } + [Authorize] [HttpGet] [Route(APIUrls.GetTransfersByUserIdRouteName)] @@ -566,14 +575,6 @@ namespace TIAMWebApp.Server.Controllers return result; } - [SignalR(SignalRTags.GetTransfersByFilterText)] - public async Task> GetTransfersByFilterText(Guid userId, string criteriaOperatorText) - { - if (criteriaOperatorText.IsNullOrWhiteSpace()) return await GetTransfers(); - - var results = await _adminDal.GetTransfersByFilterAsync(CriteriaOperator.Parse(criteriaOperatorText)); - return results; - } [AllowAnonymous] [HttpPost] @@ -590,17 +591,20 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.UpdateTransferRouteName)] [SignalR(SignalRTags.UpdateTransfer)] - public async Task UpdateTransfer(Transfer transferToModify) + public async Task UpdateTransfer(Transfer transferToModify) { _logger.Info($"UpdateTransfer called! + {transferToModify.Id}"); - await _adminDal.UpdateTransferAsync(transferToModify); - - return transferToModify; + + return await _adminDal.UpdateTransferAsync(transferToModify); + + //await _adminDal.UpdateTransferAsync(transferToModify); + //return transferToModify; } //[Authorize] //[HttpGet] //[Route(APIUrls.GetTransferDriverRouteName)] + [NonAction] [SignalR(SignalRTags.GetAllDrivers)] public async Task> GetAllDrivers() { @@ -641,6 +645,7 @@ namespace TIAMWebApp.Server.Controllers //[Authorize] //[HttpGet] //[Route(APIUrls.GetTransferDriversByTransferIdRouteName)] + [NonAction] [SignalR(SignalRTags.AddTransferToDriver)] public async Task AddTransferDriver([FromBody] TransferToDriver transferToDriver) { @@ -653,6 +658,7 @@ namespace TIAMWebApp.Server.Controllers //[Authorize] //[HttpGet] //[Route(APIUrls.GetTransferDriversByTransferIdRouteName)] + [NonAction] [SignalR(SignalRTags.UpdateTransferToDriver)] public async Task UpdateTransferDriver([FromBody] TransferToDriver transferToDriver) { @@ -665,6 +671,7 @@ namespace TIAMWebApp.Server.Controllers //[Authorize] //[HttpGet] //[Route(APIUrls.GetTransferDriversByTransferIdRouteName)] + [NonAction] [SignalR(SignalRTags.RemoveTransferToDriver)] public async Task RemoveTransferDriver([FromBody] TransferToDriver transferToDriver) { diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs index 563ee137..f77f1a86 100644 --- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -159,7 +159,7 @@ public class DevAdminSignalRHub : Hub, IAcSignalRHubServe paramValues = new object[methodInfoModel.ParamInfos.Length]; var firstParamType = methodInfoModel.ParamInfos[0].ParameterType; - if (methodInfoModel.ParamInfos.Length > 1 || firstParamType == typeof(string) || firstParamType == typeof(Guid) || firstParamType == typeof(Guid?)) + if (methodInfoModel.ParamInfos.Length > 1 || firstParamType == typeof(string) || firstParamType.IsEnum || firstParamType.IsValueType) { var msg = message!.MessagePackTo>(); diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index 57bce8f9..fd0d9ede 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -123,13 +123,13 @@ namespace TIAMWebApp.Shared.Application.Services callback.Invoke(response.ResponseData); return Task.CompletedTask; - }, [id]); + }, id); } //17. public async Task?> GetPropertiesByOwnerIdAsync(Guid id) { - var companyPropertiesByOwner = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerId, [id]); + var companyPropertiesByOwner = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerId, id); if (companyPropertiesByOwner != null) _logger.DetailConditional($"companyPropertiesByOwner: {string.Join("; ", companyPropertiesByOwner.Values)}"); return companyPropertiesByOwner; @@ -157,7 +157,7 @@ namespace TIAMWebApp.Shared.Application.Services //18. public async Task GetServiceProviderByIdAsync(Guid id) { - var company = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetCompany, [id]); + var company = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetCompany, id); if (company != null) _logger.DetailConditional($"company: {company.Name}"); return company; @@ -249,7 +249,7 @@ namespace TIAMWebApp.Shared.Application.Services public async Task GetProductByIdAsync(Guid id) { - var result = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetProductById, [id]); + var result = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetProductById, id); //var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetProductById}"; //var response = await http.GetFromJsonAsync(url, typeof(Product)); diff --git a/Tiam.Services.Client.Tests/SignalRClientTest.cs b/Tiam.Services.Client.Tests/SignalRClientTest.cs index 5050e23b..53fc458a 100644 --- a/Tiam.Services.Client.Tests/SignalRClientTest.cs +++ b/Tiam.Services.Client.Tests/SignalRClientTest.cs @@ -39,7 +39,7 @@ namespace Tiam.Services.Client.Tests public async Task GetCompanyTest_ReturnCompany_WhenHasCompany(string companyIdString) { var companyId = Guid.Parse(companyIdString); - var company = await _signalRClient.GetByIdAsync(SignalRTags.GetCompany, [companyId]); + var company = await _signalRClient.GetByIdAsync(SignalRTags.GetCompany, companyId); Assert.IsNotNull(company); } @@ -59,7 +59,7 @@ namespace Tiam.Services.Client.Tests company = response.ResponseData; return Task.CompletedTask; - }, [companyId]); + }, companyId); await TaskHelper.WaitToAsync(() => company != null, 5000, 50); @@ -119,7 +119,7 @@ namespace Tiam.Services.Client.Tests transferDest = await _signalRClient.PostDataAsync(SignalRTags.CreateTransferDestination, transferDest); Assert.IsNotNull(transferDest); - transferDest = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationById,[transferDestId]); + transferDest = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationById, transferDestId); Assert.IsNotNull(transferDest); Assert.IsNotNull(transferDest.Address); @@ -140,7 +140,7 @@ namespace Tiam.Services.Client.Tests await _signalRClient.PostDataAsync(SignalRTags.RemoveTransferDestination, transferDest); //mielőbb kitöröljük, h ne maradjon szemét a db-ben - J. - transferDest = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationById, [transferDestId]); + transferDest = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationById, transferDestId); Assert.IsNull(transferDest); //a korábbi törlés miatt NULL kell legyen - J. } @@ -159,7 +159,7 @@ namespace Tiam.Services.Client.Tests transferDestinationToProduct = await _signalRClient.PostDataAsync(SignalRTags.CreateTransferDestinationToProduct, transferDestinationToProduct); Assert.IsNotNull(transferDestinationToProduct); - transferDestinationToProduct = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationToProductById, [transferDestinationToProductId]); + transferDestinationToProduct = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationToProductById, transferDestinationToProductId); Assert.IsNotNull(transferDestinationToProduct); Assert.IsNotNull(transferDestinationToProduct.TransferDestination); @@ -173,19 +173,19 @@ namespace Tiam.Services.Client.Tests Assert.IsTrue((int)transferDestinationToProduct.Price == 20000); Assert.IsTrue(transferDestinationToProduct.Id == transferDestinationToProductId, "transferDestinationToProduct.Id != transferDestinationToProductId"); - var transferDestinationToProducts = await _signalRClient.GetByIdAsync>(SignalRTags.GetTransferDestinationToProductsByTransferDestinationId, [transferDestId]); + var transferDestinationToProducts = await _signalRClient.GetByIdAsync>(SignalRTags.GetTransferDestinationToProductsByTransferDestinationId, transferDestId); Assert.IsNotNull(transferDestinationToProducts); Assert.IsTrue(transferDestinationToProducts.Count > 0); Assert.IsTrue(transferDestinationToProducts.All(x=>x.TransferDestinationId == transferDestId)); - transferDestinationToProducts = await _signalRClient.GetByIdAsync>(SignalRTags.GetTransferDestinationToProductsByProductId, [productId]); + transferDestinationToProducts = await _signalRClient.GetByIdAsync>(SignalRTags.GetTransferDestinationToProductsByProductId, productId); Assert.IsNotNull(transferDestinationToProducts); Assert.IsTrue(transferDestinationToProducts.Count > 0); Assert.IsTrue(transferDestinationToProducts.All(x=>x.ProductId == productId)); await _signalRClient.PostDataAsync(SignalRTags.RemoveTransferDestinationToProduct, transferDestinationToProduct); //mielőbb kitöröljük, h ne maradjon szemét a db-ben - J. - transferDestinationToProduct = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationToProductById, [transferDestinationToProductId]); + transferDestinationToProduct = await _signalRClient.GetByIdAsync(SignalRTags.GetTransferDestinationToProductById, transferDestinationToProductId); Assert.IsNull(transferDestinationToProduct); //a korábbi törlés miatt NULL kell legyen - J. } @@ -203,7 +203,7 @@ namespace Tiam.Services.Client.Tests //_signalRDataSource.AsQueryable().Expression. //var filteredData = new List().AsQueryable().AppendWhere(converter, criteria) as IQueryable; - var transfers = await _signalRClient.GetAllAsync>(SignalRTags.GetTransfersByFilterText, [Guid.NewGuid(), criteriaString]); + var transfers = await _signalRClient.GetAllAsync>(SignalRTags.GetTransfersByFilterText, [criteriaString]); //var transfers = await _signalRClient.GetAllAsync>(SignalRTags.GetTransfersByExpression, [userId, filteredData!.Expression]); Assert.IsNotNull(transfers); diff --git a/Tiam.Services.Client.Tests/SignalRDataSourceTest.cs b/Tiam.Services.Client.Tests/SignalRDataSourceTest.cs index 8d2eb21c..9dcc064d 100644 --- a/Tiam.Services.Client.Tests/SignalRDataSourceTest.cs +++ b/Tiam.Services.Client.Tests/SignalRDataSourceTest.cs @@ -75,7 +75,7 @@ namespace Tiam.Services.Client.Tests await _signalRDataSource.SaveItem(transferId, TrackingState.Update); Assert.IsTrue(transfer.LuggageCount == luggageCount); - var dbTransfer = await _signalRDataSource.SignalRClient.GetByIdAsync(SignalRTags.GetTransfer, [transferId]); + var dbTransfer = await _signalRDataSource.SignalRClient.GetByIdAsync(SignalRTags.GetTransfer, transferId); Assert.IsNotNull(dbTransfer); Assert.IsTrue(dbTransfer.LuggageCount == luggageCount);