From 0c504f2ca5d0d6c7df0d9108eb0fa631016fefa0 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 07:07:57 +0200 Subject: [PATCH] improvements, fixes, etc... --- TIAM.Database.Test/AdminDalTest.cs | 84 +++++++++++++++++++ TIAM.Database/DataLayers/Admins/AdminDal.cs | 50 +++-------- .../DbContexts/Admins/AdminDbContext.cs | 3 +- .../Admins/AdminDbContextExtension.cs | 50 +++++------ .../ServiceProviderDbContext.cs | 1 + .../DbSets/Products/IProductDbSet.cs | 5 +- .../DbSets/Products/ProductDbSetExtensions.cs | 30 ++++++- .../DbSets/Profiles/IProfileDbSet.cs | 10 +++ .../DbSets/ServiceProvider/ICompanyDbSet.cs | 3 +- TIAM.Database/TIAM.Database.csproj | 1 + TIAMSharedUI/Pages/EditTransfers.razor | 3 - .../AddressDetailGridComponent.razor | 7 +- .../SysAdmins/ManageServiceProviders.razor | 7 +- .../MessageDetailGridComponent.razor | 6 +- .../ProductDetailGridComponent.razor | 9 +- .../User/SysAdmins/ProfileGridComponent.razor | 17 ++-- .../Shared/Components/Grids/TiamGrid.cs | 10 ++- .../Controllers/MessageAPIController.cs | 2 + .../ServiceProviderAPIController.cs | 16 ++-- TIAMWebApp/Server/TIAMWebApp.Server.csproj | 2 +- .../Services/ServiceProviderDataService.cs | 2 + .../SignalRClientTest.cs | 4 + .../Tiam.Services.Client.Tests.csproj | 11 ++- 23 files changed, 229 insertions(+), 104 deletions(-) create mode 100644 TIAM.Database/DbSets/Profiles/IProfileDbSet.cs diff --git a/TIAM.Database.Test/AdminDalTest.cs b/TIAM.Database.Test/AdminDalTest.cs index acb8b21c..e9569b12 100644 --- a/TIAM.Database.Test/AdminDalTest.cs +++ b/TIAM.Database.Test/AdminDalTest.cs @@ -12,6 +12,7 @@ using TIAM.Entities.Users; using TIAM.Models.Dtos.Users; using TIAM.Entities.Transfers; using AyCode.Core.Extensions; +using TIAM.Entities.ServiceProviders; namespace TIAM.Database.Test { @@ -222,6 +223,48 @@ namespace TIAM.Database.Test #endregion UserProductMapping + #region Product + //[DataTestMethod] + //[DataRow(["e24f6942-2210-47d7-8660-ace0ef302bae", "8e6a4170-0e15-4f8a-bdd2-46f9dbc63b93", "540271F6-C604-4C16-8160-D5A7CAFEDF00", "49c7805b-d8cd-4308-b1c5-7a54e5ee6287"])] + public async Task ProductCrudTest(string[] productIdCompanyIdUserIdUserToCompanyIdStrings) + { + var productId = Guid.Parse(productIdCompanyIdUserIdUserToCompanyIdStrings[0]); + var companyId = Guid.Parse(productIdCompanyIdUserIdUserToCompanyIdStrings[1]); + var userId = Guid.Parse(productIdCompanyIdUserIdUserToCompanyIdStrings[2]); //test@tiam.hu + var userToCompanyId = Guid.Parse(productIdCompanyIdUserIdUserToCompanyIdStrings[3]); + + await Dal.RemoveProductAsync(productId); //kitöröljük a szemetet, ha korábbról bentmaradt - J. + + var company = new Company(companyId, "Test unit company...", null); + + Assert.IsTrue(await Dal.AddCompanyAsync(company)); + Assert.IsNotNull(company); + + company = await Dal.GetCompanyByIdAsync(companyId); + + Assert.IsNotNull(company); + Assert.IsTrue(company.UserToServiceProviders.Count == 0); + Assert.IsTrue(company.Id == companyId); + + company.OwnerId = userId; + Assert.IsTrue(await Dal.UpdateCompanyAsync(company)); + + company = await Dal.GetCompanyByIdAsync(companyId); + + Assert.IsNotNull(company); + Assert.IsNotNull(company.UserToServiceProviders); + Assert.IsTrue(company.UserToServiceProviders.Any(x=>x.UserId == userId && x.ServiceProviderId == companyId)); + + company.CommissionPercent = 5; + Assert.IsTrue(await Dal.UpdateCompanyAsync(company)); + + Assert.IsTrue(await Dal.RemoveCompanyAsync(company)); //mielőbb kitöröljük, h ne maradjon szemét a db-ben - J. + + company = await Dal.GetCompanyByIdAsync(companyId); + Assert.IsNull(company); //a korábbi törlés miatt NULL kell legyen - J. + } + #endregion Product + [DataTestMethod] [DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")] [DataRow("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd")] @@ -297,6 +340,47 @@ namespace TIAM.Database.Test Assert.IsTrue(users.Count > 0); } + #region Company + [DataTestMethod] + [DataRow(["8e6a4170-0e15-4f8a-bdd2-46f9dbc63b93", "540271F6-C604-4C16-8160-D5A7CAFEDF00", "49c7805b-d8cd-4308-b1c5-7a54e5ee6287"])] + public async Task CompanyCrudTest(string[] companyIdUserIdUserToCompanyIdStrings) + { + var companyId = Guid.Parse(companyIdUserIdUserToCompanyIdStrings[0]); + var userId = Guid.Parse(companyIdUserIdUserToCompanyIdStrings[1]); //test@tiam.hu + var userToCompanyId = Guid.Parse(companyIdUserIdUserToCompanyIdStrings[2]); + + await Dal.RemoveCompanyAsync(companyId); //kitöröljük a szemetet, ha korábbról bentmaradt - J. + + var company = new Company(companyId, "Test unit company...", null); + + Assert.IsTrue(await Dal.AddCompanyAsync(company)); + Assert.IsNotNull(company); + + company = await Dal.GetCompanyByIdAsync(companyId); + + Assert.IsNotNull(company); + Assert.IsTrue(company.UserToServiceProviders.Count == 0); + Assert.IsTrue(company.Id == companyId); + + company.OwnerId = userId; + Assert.IsTrue(await Dal.UpdateCompanyAsync(company)); + + company = await Dal.GetCompanyByIdAsync(companyId); + + Assert.IsNotNull(company); + Assert.IsNotNull(company.UserToServiceProviders); + Assert.IsTrue(company.UserToServiceProviders.Any(x=>x.UserId == userId && x.ServiceProviderId == companyId)); + + company.CommissionPercent = 5; + Assert.IsTrue(await Dal.UpdateCompanyAsync(company)); + + Assert.IsTrue(await Dal.RemoveCompanyAsync(company)); //mielőbb kitöröljük, h ne maradjon szemét a db-ben - J. + + company = await Dal.GetCompanyByIdAsync(companyId); + Assert.IsNull(company); //a korábbi törlés miatt NULL kell legyen - J. + } + #endregion Company + #region Transfer [DataTestMethod] [DataRow("6216f9fb-1dda-44bd-9d85-431f3cb09fde")] diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 5c2c3857..9408b836 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -119,12 +119,13 @@ namespace TIAM.Database.DataLayers.Admins public Product? GetProductById(Guid contextId, bool includeUsers = true) => Session(ctx => ctx.GetProductById(contextId, includeUsers)); public string GetProductsJson(bool includeUsers = true) => Session(ctx => ctx.ProductsWithUserRelations(includeUsers).ToJson()); - public List GetProductsByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByServiceProviderId(serviceProviderId, includeUsers).ToList()); - public string GetProductsJsonByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByServiceProviderId(serviceProviderId, includeUsers).ToJson()); + public List GetProductsByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByCompanyId(serviceProviderId, includeUsers).ToList()); + public string GetProductsJsonByServiceProviderId(Guid serviceProviderId, bool includeUsers = true) => Session(ctx => ctx.GetProductsByCompanyId(serviceProviderId, includeUsers).ToJson()); public Task AddProductAsync(Product product) => TransactionAsync(ctx => ctx.AddProduct(product)); public Task UpdateProductAsync(Product product) => TransactionAsync(ctx => ctx.UpdateProduct(product)); public Task RemoveProductAsync(Product product) => TransactionAsync(ctx => ctx.RemoveProduct(product)); + public Task RemoveProductAsync(Guid productId) => TransactionAsync(ctx => ctx.RemoveProduct(productId)); public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(ctx => ctx.GetUserProductMappingById(userProductMappingId, autoInclude)); public Task GetUserProductMappingByIdAsync(Guid userProductMappingId, bool autoInclude = true) => SessionAsync(ctx => ctx.GetUserProductMappingById(userProductMappingId, autoInclude)); @@ -215,26 +216,17 @@ namespace TIAM.Database.DataLayers.Admins #endregion EmailMessage + #region ServiceProviders //15. (IServiceProviderDataService) Create service provider - public Task CreateServiceProviderAsync(Company serviceProvider) => TransactionAsync(ctx => ctx.AddServiceProvider(serviceProvider)); + public Task AddCompanyAsync(Company serviceProvider) => TransactionAsync(ctx => ctx.AddCompany(serviceProvider)); - //public bool CreateProductAsync(Product product) - //{ - // Context.CreateProduct(product); - // GlobalLogger.Info($@"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); - // var result = Context.SaveChangesAsync(); - // return result.Result > 0; - //} + public Task> GetCompaniesAsync() => SessionAsync(ctx => ctx.GetCompanies().ToList()); - public Task> GetServiceProvidersAsync() => SessionAsync(ctx => ctx.GetServiceProviders().ToList()); - - public Task GetServiceProvidersJsonAsync() => SessionAsync(ctx => ctx.Companies.ToJson()); - public string GetServiceProvidersJson() => Session(ctx => ctx.Companies.ToJson()); + public Task GetCompaniesJsonAsync() => SessionAsync(ctx => ctx.Companies.ToJson()); + public string GetCompaniesJson() => Session(ctx => ctx.Companies.ToJson()); - - - public virtual Task GetServiceProviderByIdAsync(Guid id) => SessionAsync(ctx => ctx.GetServiceProviderById(id)); - public virtual Task> GetServiceProvidersByOwnerIdAsync(Guid id) => SessionAsync(ctx => ctx.GetServiceProvidersByOwnerId(id)); + public virtual Task GetCompanyByIdAsync(Guid id) => SessionAsync(ctx => ctx.GetCompanyById(id)); + public virtual Task> GetCompaniesByOwnerIdAsync(Guid id) => SessionAsync(ctx => ctx.GetCompaniesByOwnerId(id)); //public Task CreateUserProductMappingAsync(UserProductMapping userProductMapping) //{ @@ -243,17 +235,12 @@ namespace TIAM.Database.DataLayers.Admins // return Context.SaveChangesAsync().ContinueWith(x => userProductMapping); //} - #region ServiceProviders - //14. (IserviceProviderDataService) Update service provider - public Task UpdateCompanyAsync(Company company) => TransactionAsync(ctx => ctx.UpdateServiceProvider(company)); - - + public Task UpdateCompanyAsync(Company company) => TransactionAsync(ctx => ctx.UpdateCompany(company)); //13. (IserviceProviderDataService) delete service provider - public Task RemoveCompanyAsync(Guid id) => TransactionAsync(ctx => ctx.RemoveServiceProvider(id)); - public Task RemoveCompanyAsync(Company company) => TransactionAsync(ctx => ctx.RemoveServiceProvider(company)); - + public Task RemoveCompanyAsync(Guid companyId) => TransactionAsync(ctx => ctx.RemoveProductsByCompanyId(companyId) && ctx.RemoveCompany(companyId)); + public Task RemoveCompanyAsync(Company company) => RemoveCompanyAsync(company.Id); #endregion #region PermissionTypes @@ -488,17 +475,6 @@ namespace TIAM.Database.DataLayers.Admins #region Products - //* 21. (IServiceProviderDataService) delete product - public Task DeleteProductByIdAsync(Guid productId) - { - return TransactionAsync(ctx => - { - ctx.DeleteProductById(productId); - - return true; - }); - } - //4. (IPermissionService) AssignPermissionToUserForContextAsync public Task AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission) { diff --git a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs index 710b6488..a5579c78 100644 --- a/TIAM.Database/DbContexts/Admins/AdminDbContext.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs @@ -21,8 +21,9 @@ namespace TIAM.Database.DbContexts.Admins public DbSet Users { get; set; } public DbSet Profiles { get; set; } public DbSet Companies { get; set; } + public DbSet UserToCompanies { get; set; } public DbSet UserTokens { get; set; } - + public DbSet TransferDestinations { get; set; } public DbSet TransferDestinationToProducts { get; set; } public DbSet Transfers { get; set; } diff --git a/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs b/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs index 3069f3db..b832354b 100644 --- a/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContextExtension.cs @@ -93,39 +93,39 @@ namespace TIAM.Database.DbContexts.Admins return true; } - public static bool CreateProduct(this IAdminDbContext ctx, Product myproduct) - { - if (myproduct == null) return false; + //public static bool CreateProduct(this IAdminDbContext ctx, Product myproduct) + //{ + // if (myproduct == null) return false; - //Automatically add assigneduser for owner - Company? company = ctx.Companies.FirstOrDefault(x => x.Id == myproduct.ServiceProviderId); - if (company == null || company.OwnerId.IsNullOrEmpty()) return false; + // //Automatically add assigneduser for owner + // Company? company = ctx.Companies.FirstOrDefault(x => x.Id == myproduct.ServiceProviderId); + // if (company == null || company.OwnerId.IsNullOrEmpty()) return false; - var userProductMapping = new UserProductMapping(myproduct.Id, company.OwnerId.Value); + // var userProductMapping = new UserProductMapping(myproduct.Id, company.OwnerId.Value); - ctx.CreateAssignedUser(userProductMapping); - ctx.AddProduct(myproduct); + // ctx.CreateAssignedUser(userProductMapping); + // ctx.AddProduct(myproduct); - return true; - } + // return true; + //} - public static bool CreateAssignedUser(this IAdminDbContext ctx, UserProductMapping userProductMapping) - { - if (userProductMapping == null) return false; + //public static bool CreateAssignedUser(this IAdminDbContext ctx, UserProductMapping userProductMapping) + //{ + // if (userProductMapping == null) return false; - ctx.UserProductMappings.Add(userProductMapping); + // ctx.UserProductMappings.Add(userProductMapping); - return true; - } + // return true; + //} - public static Company CreateServiceProvider(this IAdminDbContext ctx, Company serviceProvider) - { - if (serviceProvider == null || serviceProvider.OwnerId.IsNullOrEmpty()) return null; + //public static Company CreateServiceProvider(this IAdminDbContext ctx, Company serviceProvider) + //{ + // if (serviceProvider == null || serviceProvider.OwnerId.IsNullOrEmpty()) return null; - ctx.Companies.Add(serviceProvider); - var userProductMapping = new UserProductMapping(serviceProvider.Id, serviceProvider.OwnerId.Value); - ctx.CreateAssignedUser(userProductMapping); - return serviceProvider; - } + // ctx.Companies.Add(serviceProvider); + // var userProductMapping = new UserProductMapping(serviceProvider.Id, serviceProvider.OwnerId.Value); + // ctx.CreateAssignedUser(userProductMapping); + // return serviceProvider; + //} } } diff --git a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs index 950a0424..3d405982 100644 --- a/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs +++ b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs @@ -17,6 +17,7 @@ namespace TIAM.Database.DbContexts.ServiceProviders public DbSet TransferDestinationToProducts { get; set; } public DbSet Companies { get; set; } + public DbSet UserToCompanies { get; set; } public DbSet Profiles { get; set; } public DbSet Users { get; set; } diff --git a/TIAM.Database/DbSets/Products/IProductDbSet.cs b/TIAM.Database/DbSets/Products/IProductDbSet.cs index f65ad5dd..3b7a7b03 100644 --- a/TIAM.Database/DbSets/Products/IProductDbSet.cs +++ b/TIAM.Database/DbSets/Products/IProductDbSet.cs @@ -1,9 +1,12 @@ using Microsoft.EntityFrameworkCore; +using TIAM.Database.DbSets.Profiles; +using TIAM.Database.DbSets.Users; +using TIAM.Entities.Addresses; using TIAM.Entities.Products; namespace TIAM.Database.DbSets.Products; -public interface IProductDbSet +public interface IProductDbSet : IProfileDbSet, IUserProductMappingDbSet { public DbSet Products { get; set; } } \ No newline at end of file diff --git a/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs b/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs index 2d6f9d8a..07bd8104 100644 --- a/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs +++ b/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs @@ -1,6 +1,11 @@ using AyCode.Core.Extensions; +using AyCode.Database.DbSets.Profiles; +using AyCode.Interfaces.Addresses; +using AyCode.Interfaces.Profiles; using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Addresses; using TIAM.Entities.Products; +using TIAM.Entities.Profiles; namespace TIAM.Database.DbSets.Products; @@ -19,8 +24,29 @@ public static class ProductDbSetExtensions => ctx.Products.Update(product).State == EntityState.Modified; public static bool RemoveProduct(this IProductDbSet ctx, Product product) - => ctx.Products.Remove(product).State == EntityState.Deleted; + { + ctx.RemoveProfile(product.ProfileId); + ctx.UserProductMappings.RemoveRange(ctx.UserProductMappings.Where(x => x.ProductId == product.Id)); + //TODO: Transfer, etc... - J. + return ctx.Products.Remove(product).State == EntityState.Deleted; + } + + public static bool RemoveProduct(this IProductDbSet ctx, Guid productId) + { + var product = ctx.GetProductById(productId); + return product == null || ctx.RemoveProduct(product); + } + + public static bool RemoveProductsByCompanyId(this IProductDbSet ctx, Guid companyId) + { + var products = ctx.GetProductsByCompanyId(companyId); + + foreach (var product in products) + ctx.RemoveProduct(product); + + return true; + } #endregion Add, Update, Remove public static IQueryable ProductsWithUserRelations(this IProductDbSet ctx, bool autoInclude = true) @@ -33,7 +59,7 @@ public static class ProductDbSetExtensions public static Product? GetProductById(this IProductDbSet ctx, Guid productId, bool includeUsers = true) => ctx.ProductsWithUserRelations(includeUsers).FirstOrDefault(x => x.Id == productId); - public static IQueryable GetProductsByServiceProviderId(this IProductDbSet ctx, Guid serviceProviderId, bool includeUsers = true) + public static IQueryable GetProductsByCompanyId(this IProductDbSet ctx, Guid serviceProviderId, bool includeUsers = true) => ctx.ProductsWithUserRelations(includeUsers).Where(x => x.ServiceProviderId == serviceProviderId); } \ No newline at end of file diff --git a/TIAM.Database/DbSets/Profiles/IProfileDbSet.cs b/TIAM.Database/DbSets/Profiles/IProfileDbSet.cs new file mode 100644 index 00000000..51921a6c --- /dev/null +++ b/TIAM.Database/DbSets/Profiles/IProfileDbSet.cs @@ -0,0 +1,10 @@ +using AyCode.Database.DbSets.Profiles; +using TIAM.Database.DbSets.Addresses; +using TIAM.Entities.Addresses; +using TIAM.Entities.Profiles; + +namespace TIAM.Database.DbSets.Profiles; + +public interface IProfileDbSet : IAcProfileDbSetBase, IAddressDbSet +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/ServiceProvider/ICompanyDbSet.cs b/TIAM.Database/DbSets/ServiceProvider/ICompanyDbSet.cs index edeba805..b98c8d18 100644 --- a/TIAM.Database/DbSets/ServiceProvider/ICompanyDbSet.cs +++ b/TIAM.Database/DbSets/ServiceProvider/ICompanyDbSet.cs @@ -2,9 +2,10 @@ using TIAM.Entities.Addresses; using TIAM.Entities.Profiles; using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; namespace TIAM.Database.DbSets.ServiceProvider; -public interface ICompanyDbSet : IAcCompanyDbSetBase +public interface ICompanyDbSet : IAcCompanyDbSetBase { } \ No newline at end of file diff --git a/TIAM.Database/TIAM.Database.csproj b/TIAM.Database/TIAM.Database.csproj index 13004f81..289aa5f0 100644 --- a/TIAM.Database/TIAM.Database.csproj +++ b/TIAM.Database/TIAM.Database.csproj @@ -7,6 +7,7 @@ + diff --git a/TIAMSharedUI/Pages/EditTransfers.razor b/TIAMSharedUI/Pages/EditTransfers.razor index f5a29181..b03e0d26 100644 --- a/TIAMSharedUI/Pages/EditTransfers.razor +++ b/TIAMSharedUI/Pages/EditTransfers.razor @@ -225,7 +225,6 @@ else @@ -234,8 +233,6 @@ else - - } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/AddressDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/AddressDetailGridComponent.razor index 1b407469..e4726e65 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/AddressDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/AddressDetailGridComponent.razor @@ -29,14 +29,14 @@ OnGridEditModelSaving="DataItemSaving" OnGridItemDeleting="DataItemDeleting" OnGridItemChanged="DataItemChanged" - PageSize="5" - AutoExpandAllGroupRows="true" KeyboardNavigationEnabled="KeyboardNavigationEnabled" KeyFieldName="Id" ValidationEnabled="false" + TextWrapEnabled="false" + AutoExpandAllGroupRows="true" EditMode="GridEditMode.EditForm" ColumnResizeMode="GridColumnResizeMode.NextColumn" - ShowFilterRow="false"> + DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"> @@ -62,6 +62,7 @@ [Parameter] public IAcAddressRelation
ParentData { get; set; } = null!; [Parameter] public IList
? DataSource { get; set; } [Parameter] public EventCallback
OnAddressChanged { get; set; } + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; private Guid? _contextId = null!; private AddressDetailGrid _addressGrid = null!; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 3ea836ca..bb4795d0 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -15,6 +15,7 @@ @using AyCode.Core @using TIAM.Entities.Products @using TIAM.Entities.Users +@using TIAM.Services @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @@ -132,7 +133,11 @@ - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor index 0d54601b..461d3100 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/MessageDetailGridComponent.razor @@ -16,6 +16,7 @@ @using TIAMWebApp.Shared.Application.Services @using AyCode.Interfaces.Addresses @using TIAM.Entities.Emails +@using AyCode.Blazor.Components.Services @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient; @@ -24,6 +25,7 @@ Logger="_logger" SignalRClient="AdminSignalRClient" ContextIds="new[] {ContextId}" + KeyFieldName="Id" CustomizeElement="CustomizeElement" TextWrapEnabled="false"> @@ -49,9 +51,9 @@ if (!emailMessage.IsReaded) { emailMessage.IsReaded = true; - _messageGrid.UpdateDataItemAsync(emailMessage).Forget(); - InvokeAsync(StateHasChanged).Forget(); + _messageGrid.UpdateDataItemAsync(emailMessage).Forget(); + //InvokeAsync(StateHasChanged).ContinueWith(x => _messageGrid.UpdateDataItemAsync(emailMessage).Forget()); } } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor index bb22d7ae..d7116d24 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor @@ -25,20 +25,20 @@ + DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"> @@ -82,9 +82,10 @@ @code { [Parameter] public bool KeyboardNavigationEnabled { get; set; } - [Parameter] public Guid? ContextId { get; set; } + [Parameter] public Guid ContextId { get; set; } [Parameter] public IProductsRelation ParentData { get; set; } = null!; [Parameter] public EventCallback OnGridEditModelSaving { get; set; } + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; private ProductDetailGrid _productGrid = null!; private LoggerClient _logger = null!; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor index cec6a011..c743440a 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor @@ -12,8 +12,6 @@ @using TIAM.Entities.Addresses @using TIAM.Entities.Profiles @using Profile = TIAM.Entities.Profiles.Profile -@inject IServiceProviderDataService serviceProviderDataService -@inject IUserDataService userDataService @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient @@ -21,14 +19,14 @@ ContextIds="new[] {ParentData.ProfileId}" Logger="_logger" SignalRClient="AdminSignalRClient" - PageSize="5" - AutoExpandAllGroupRows="true" KeyboardNavigationEnabled="KeyboardNavigationEnabled" KeyFieldName="Id" ValidationEnabled="false" + TextWrapEnabled="false" + AutoExpandAllGroupRows="true" EditMode="GridEditMode.EditForm" ColumnResizeMode="GridColumnResizeMode.NextColumn" - ShowFilterRow="false"> + DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"> @@ -48,9 +46,8 @@ @code { - [Parameter] - public bool KeyboardNavigationEnabled { get; set; } - + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; + [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public IProfileForeignKey ParentData { get; set; } = null!; private ProfileDetailGrid _profileGrid = null!; @@ -64,6 +61,8 @@ protected override void OnParametersSet() { _logger.DebugConditional(ParentData.ProfileId.ToString()); + base.OnParametersSet(); - } + } + } diff --git a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs index bcc2cad2..8a84bba3 100644 --- a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs @@ -101,7 +101,12 @@ namespace TIAMSharedUI.Shared.Components.Grids var changedEventArgs = new GridDataItemChangedEventArgs(this, args.Item, args.TrackingState); await OnGridItemChanged.InvokeAsync(changedEventArgs); - await InvokeAsync(StateHasChanged); + if (!changedEventArgs.CancelStateChangeInvoke) + { + //BeginUpdate(); + await InvokeAsync(StateHasChanged); //TODO: bezárja a DetailRow-t! pl: az email-nél IsReaded=true update... - J. + //EndUpdate(); + } } private Task OnDataSourceLoaded() @@ -169,7 +174,7 @@ namespace TIAMSharedUI.Shared.Components.Grids { Logger.Error($"{_gridLogName} SaveChangesToServerAsync->SaveChangesAsync error!", ex); } - + return Task.CompletedTask; } @@ -311,5 +316,6 @@ namespace TIAMSharedUI.Shared.Components.Grids public TiamGrid Grid { get; } public TDataItem DataItem { get; } public TrackingState TrackingState { get; } + public bool CancelStateChangeInvoke { get; set; } } } diff --git a/TIAMWebApp/Server/Controllers/MessageAPIController.cs b/TIAMWebApp/Server/Controllers/MessageAPIController.cs index bea3c9a2..1bd07e9c 100644 --- a/TIAMWebApp/Server/Controllers/MessageAPIController.cs +++ b/TIAMWebApp/Server/Controllers/MessageAPIController.cs @@ -98,6 +98,8 @@ namespace TIAMWebApp.Server.Controllers return messages.ToJson(); } + [NonAction] + [ApiExplorerSettings(IgnoreApi = true)] [SignalR(SignalRTags.UpdateMessage)] public async Task UpdateMessages([FromBody] EmailMessage message) { diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 7ec7faac..cdc20dd0 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -49,10 +49,10 @@ namespace TIAMWebApp.Server.Controllers //if (company.OwnerId.IsNullOrEmpty()) company.OwnerId = Guid.Parse("540271F6-C604-4C16-8160-D5A7CAFEDF00"); //TESZT - J. - company.SetProfile(new Profile(Guid.NewGuid(), company.Name)); - company.Profile.SetAddress(new Address(Guid.NewGuid(), "Controller AddCompanyAsync; address text...")); + //company.SetProfile(new Profile(Guid.NewGuid(), company.Name)); + //company.Profile.SetAddress(new Address(Guid.NewGuid(), "Controller AddCompanyAsync; address text...")); - return await adminDal.CreateServiceProviderAsync(company); + return await adminDal.AddCompanyAsync(company); case TrackingState.Update: return await adminDal.UpdateCompanyAsync(company); @@ -106,7 +106,7 @@ namespace TIAMWebApp.Server.Controllers [SignalR(SignalRTags.GetCompanies)] public async Task GetServiceProviders() { - return await adminDal.GetServiceProvidersJsonAsync(); + return await adminDal.GetCompaniesJsonAsync(); } //18. @@ -118,7 +118,7 @@ namespace TIAMWebApp.Server.Controllers { _logger.Info($@"GetServiceProviderById called with id: {id}"); - return await adminDal.GetServiceProviderByIdAsync(id); + return await adminDal.GetCompanyByIdAsync(id); } @@ -132,7 +132,7 @@ namespace TIAMWebApp.Server.Controllers { _logger.Info($@"GetServiceProvidersByOwnerId called with ownerId: {ownerId}"); - var serviceProviders = await adminDal.GetServiceProvidersAsync(); + var serviceProviders = await adminDal.GetCompaniesAsync(); //return serviceProviders.Where(x => x.OwnerId == ownerId).ToList(); var myServiceproviders = serviceProviders.Where(x => x.OwnerId == ownerId).ToDictionary(x => x.Id, x => x.Name); @@ -150,7 +150,7 @@ namespace TIAMWebApp.Server.Controllers { _logger.Info($@"GetServiceProvidersByOwnerId called with ownerId: {ownerId}"); - var serviceProviders = await adminDal.GetServiceProvidersByOwnerIdAsync(ownerId); + var serviceProviders = await adminDal.GetCompaniesByOwnerIdAsync(ownerId); //return serviceProviders.Where(x => x.OwnerId == ownerId).ToList(); //var myServiceproviders = serviceProviders.Where(x => x.OwnerId == ownerId).ToDictionary(x => x.Id, x => x.Name); @@ -218,7 +218,7 @@ namespace TIAMWebApp.Server.Controllers var userProductMappingDictionary = new Dictionary(); - var serviceProviders = await adminDal.GetServiceProvidersAsync(); + var serviceProviders = await adminDal.GetCompaniesAsync(); var myServiceproviders = serviceProviders.Where(x => x.Id == serviceProviderId).ToDictionary(x => x.Id, x => x.Name); //put serviceprovider id and name into a dictionary diff --git a/TIAMWebApp/Server/TIAMWebApp.Server.csproj b/TIAMWebApp/Server/TIAMWebApp.Server.csproj index deb71580..a308fd34 100644 --- a/TIAMWebApp/Server/TIAMWebApp.Server.csproj +++ b/TIAMWebApp/Server/TIAMWebApp.Server.csproj @@ -15,7 +15,7 @@ - + diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index 35b089d0..9e2d7e6b 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -121,6 +121,8 @@ namespace TIAMWebApp.Shared.Application.Services _logger.DetailConditional($"companyPropertiesByOwner async: {string.Join("; ", response.ResponseData!.Values)}"); callback.Invoke(response.ResponseData); + + return Task.CompletedTask; }, id); } diff --git a/Tiam.Services.Client.Tests/SignalRClientTest.cs b/Tiam.Services.Client.Tests/SignalRClientTest.cs index c45a099e..4b397c2c 100644 --- a/Tiam.Services.Client.Tests/SignalRClientTest.cs +++ b/Tiam.Services.Client.Tests/SignalRClientTest.cs @@ -50,6 +50,8 @@ namespace Tiam.Services.Client.Tests Assert.IsTrue(response.Status == SignalResponseStatus.Success); company = response.ResponseData; + + return Task.CompletedTask; }, companyId); await TaskHelper.WaitToAsync(() => company != null, 5000, 50); @@ -77,6 +79,8 @@ namespace Tiam.Services.Client.Tests Assert.IsTrue(response.Status == SignalResponseStatus.Success); companies = response.ResponseData; + + return Task.CompletedTask; }); await TaskHelper.WaitToAsync(() => companies != null, 5000, 50); diff --git a/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj b/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj index 050f7d60..89d265b7 100644 --- a/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj +++ b/Tiam.Services.Client.Tests/Tiam.Services.Client.Tests.csproj @@ -10,10 +10,13 @@ - - - - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + +