From 0c504f2ca5d0d6c7df0d9108eb0fa631016fefa0 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 07:07:57 +0200 Subject: [PATCH 1/5] 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 + + + + From fec32f6642152dc22e0ec1c7aea2a07e9cb410ea Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 14:00:11 +0200 Subject: [PATCH 2/5] improvements, fixes, etc... --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 1 + TIAM.Services/SignalRTags.cs | 9 +- .../SysAdmins/CarDetailGridComponent.razor | 124 +++++----------- .../User/SysAdmins/CarGridComponent.razor | 107 ++++---------- .../User/SysAdmins/DriverGridComponent.razor | 138 +++++++----------- .../Pages/User/SysAdmins/ManageCars.razor | 2 +- .../Pages/User/SysAdmins/ManageDrivers.razor | 2 +- .../SysAdmins/ManageUserProductMappings.razor | 2 +- .../ProductDetailGridComponent.razor | 45 ++---- .../UserProductMappingGridComponent.razor | 79 +++------- .../ServiceProviderAPIController.cs | 38 ++--- 11 files changed, 164 insertions(+), 383 deletions(-) diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 06a189e3..a7f74c2b 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -118,6 +118,7 @@ namespace TIAM.Database.DataLayers.Admins public Task RemoveUserAsync(Guid userId) => TransactionAsync(ctx => ctx.RemoveUser(userId)); public Product? GetProductById(Guid contextId, bool includeUsers = true) => Session(ctx => ctx.GetProductById(contextId, includeUsers)); + public Task GetProductByIdAsync(Guid contextId, bool includeUsers = true) => SessionAsync(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.GetProductsByCompanyId(serviceProviderId, includeUsers).ToList()); diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 7e15e654..fe95c0bd 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -19,10 +19,11 @@ public class SignalRTags : AcSignalRTags public const int GetCompany = 12; public const int GetCompanies = 13; - public const int GetCompaniesByContextId = 14; - public const int UpdateCompany = 15; - public const int AddCompany = 16; - public const int RemoveCompany = 17; + public const int GetCompaniesById = 14; + public const int GetCompaniesByContextId = 15; + public const int UpdateCompany = 16; + public const int AddCompany = 17; + public const int RemoveCompany = 18; public const int GetTransferToDriver = 22; //public const int GetTransferToDrivers = 23; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor index 0da339c5..59c3442d 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor @@ -18,7 +18,7 @@ - - + + @@ -45,88 +46,65 @@ @{ - if (ShowNestedRows) - { - + - - - + + + - - } + } - + @{ - var car = (Car)UserEditFormContext.EditModel; + var car = (Car)userEditFormContext.EditModel; } - @UserEditFormContext.GetEditor("CountryCode") + @userEditFormContext.GetEditor("CountryCode") - @UserEditFormContext.GetEditor("LicencePlate") + @userEditFormContext.GetEditor("LicencePlate") - @UserEditFormContext.GetEditor("Color") + @userEditFormContext.GetEditor("Color") - @UserEditFormContext.GetEditor("Manufacture") + @userEditFormContext.GetEditor("Manufacture") - @UserEditFormContext.GetEditor("CarModel") + @userEditFormContext.GetEditor("CarModel") - @UserEditFormContext.GetEditor("YearOfMake") + @userEditFormContext.GetEditor("YearOfMake") - @UserEditFormContext.GetEditor("SeatNumber") + @userEditFormContext.GetEditor("SeatNumber") - @UserEditFormContext.GetEditor("CarMotorType") + @userEditFormContext.GetEditor("CarMotorType") - - @code { - [Parameter] - public bool KeyboardNavigationEnabled { get; set; } - + [Parameter] public Guid ContextId { get; set; } + [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public ICarRelation ParentData { get; set; } = null!; - [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllCars; + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; - [Parameter] public bool ShowNestedRows { get; set; } = false; + private LoggerClient _logger = null!; - [Parameter] public Guid? ContextId { get; set; } - - private Guid[] ContextIds = new Guid[0]; - - private LoggerClient _logger; - - protected override void OnParametersSet() - { - if (ContextId != null) - { - ContextIds = new Guid[1]; - ContextIds[0] = (Guid)ContextId; - } - base.OnParametersSet(); - } - - protected override async Task OnInitializedAsync() + protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); - - //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + base.OnInitialized(); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) @@ -134,53 +112,25 @@ if (e.IsNew) { var newCar = new Car - { - Id = Guid.NewGuid(), - UserProductMappingId = (Guid)ContextId, - CountryCode = 1, - LicencePlate = "ABC123", - Color = "White", - Manufacture = "Manufacturer", - CarModel = "Car model", - YearOfMake = DateTime.Now.Year, - SeatNumber = 5, - CarMotorType = TIAM.Core.Enums.CarMotorType.Electric - }; + { + Id = Guid.NewGuid(), + UserProductMappingId = ContextId!, + CountryCode = 1, + LicencePlate = "ABC123", + Color = "White", + Manufacture = "Manufacturer", + CarModel = "Car model", + YearOfMake = DateTime.Now.Year, + SeatNumber = 5, + CarMotorType = TIAM.Core.Enums.CarMotorType.Electric + }; e.EditModel = newCar; } - else { // } - - - } - - - async Task EditModelSaving(GridEditModelSavingEventArgs e) - { - if (e.IsNew) - - _logger.Info("New orderData added"); - else - _logger.Info("orderData updated"); - - await UpdateDataAsync(); - } - - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) - { - - _logger.Info("orderData deleted"); - - } - - async Task UpdateDataAsync() - { - //refresh grid - _logger.Info("orderData grid refreshed"); } } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor index 3c1ad166..c944fca3 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor @@ -18,7 +18,7 @@ - - + + @@ -45,127 +46,69 @@ @{ - if (ShowNestedRows) - { - + - - - + + + - - } + } - + @{ - var car = (Car)UserEditFormContext.EditModel; + var car = (Car)userEditFormContext.EditModel; } - @UserEditFormContext.GetEditor("CountryCode") + @userEditFormContext.GetEditor("CountryCode") - @UserEditFormContext.GetEditor("LicencePlate") + @userEditFormContext.GetEditor("LicencePlate") - @UserEditFormContext.GetEditor("Color") + @userEditFormContext.GetEditor("Color") - @UserEditFormContext.GetEditor("Manufacture") + @userEditFormContext.GetEditor("Manufacture") - @UserEditFormContext.GetEditor("CarModel") + @userEditFormContext.GetEditor("CarModel") - @UserEditFormContext.GetEditor("YearOfMake") + @userEditFormContext.GetEditor("YearOfMake") - @UserEditFormContext.GetEditor("SeatNumber") + @userEditFormContext.GetEditor("SeatNumber") - @UserEditFormContext.GetEditor("CarMotorType") + @userEditFormContext.GetEditor("CarMotorType") - - - @code { - [Parameter] - public bool KeyboardNavigationEnabled { get; set; } - + [Parameter] public Guid ContextId { get; set; } + [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public ICarRelation ParentData { get; set; } = null!; - [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllCars; + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; - [Parameter] public bool ShowNestedRows { get; set; } = false; + private LoggerClient _logger = null!; - [Parameter] public Guid? ContextId { get; set; } - - private Guid[] ContextIds = new Guid[0]; - - private LoggerClient _logger; - - protected override void OnParametersSet() - { - if (ContextId != null) - { - ContextIds = new Guid[1]; - ContextIds[0] = (Guid)ContextId; - } - base.OnParametersSet(); - } - - protected override async Task OnInitializedAsync() + protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); - - //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + base.OnInitialized(); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) { if (!e.IsNew) return; - - // var newProductMapping = new UserProductMapping - // { - // ProductId = Guid.NewGuid(), - // UserId = UserModelDtoDetail.Id, - // Permissions = 1 - // }; - - //e.EditModel = newProductMapping; - } - - - async Task EditModelSaving(GridEditModelSavingEventArgs e) - { - if (e.IsNew) - - _logger.Info("New orderData added"); - else - _logger.Info("orderData updated"); - - await UpdateDataAsync(); - } - - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) - { - - _logger.Info("orderData deleted"); - - } - - async Task UpdateDataAsync() - { - //refresh grid - _logger.Info("orderData grid refreshed"); } } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor index 86ce0ae8..73cc62ca 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor @@ -12,6 +12,7 @@ @using AyCode.Core.Loggers @using AyCode.Services.Loggers @using AyCode.Core +@using AyCode.Core.Extensions @inject IServiceProviderDataService ServiceProviderDataService @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient @@ -31,14 +32,14 @@ - - -

User not found, type another email please

+ +

User not found, type another email please

@@ -54,9 +55,10 @@ + - - + + @{ - if (ShowNestedRows) - { @@ -89,7 +90,6 @@ - } } @@ -122,114 +122,76 @@ @code { - [Parameter] - public bool KeyboardNavigationEnabled { get; set; } - + [Parameter] public Guid ContextId { get; set; } + [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public IProductRelation ParentData { get; set; } = null!; - [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllUserProductMappings; - - [Parameter] public bool ShowNestedRows { get; set; } = false; - - [Parameter] public Guid? ContextId { get; set; } - - private Guid[] ContextIds = new Guid[0]; + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; private LoggerClient _logger; - List _availableProducts; + List _availableProducts; private UserProductMappingDriverGrid _driverGrid; - private UserProductMapping tempProductMapping; + private UserProductMapping _tempProductMapping; bool PopupVisible { get; set; } - private DxMaskedInput emailInput; - private DxButton button1; - private ElementReference errorMessage; - private string errorCss = "display: none;"; + private DxMaskedInput _emailInput; + private DxButton _button1; + private ElementReference _errorMessage; + private string _errorCss = "display: none;"; private List FoundUsers { get; set; } = new List(); private string Email { get; set; } = "email@email.com"; string EmailMask { get; set; } = @"(\w|[.-])+@(\w|-)+\.(\w|-){2,4}"; - UserModelDto ChosenUser = null; + UserModelDto _chosenUser = null!; - protected override void OnParametersSet() - { - if (ContextId != null) - { - ContextIds = new Guid[1]; - ContextIds[0] = (Guid)ContextId; - } - base.OnParametersSet(); - } - - protected override async Task OnInitializedAsync() + protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); - - //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + base.OnInitialized(); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) { if (!e.IsNew) return; - UserProductMapping newUPM = (UserProductMapping)e.EditModel; - newUPM.ProductId = (Guid)ContextId!; + + if (ContextId.IsNullOrEmpty()) + { + _logger.Warning($"ContextId.IsNullOrEmpty()"); + return; + } + + var newUpm = (UserProductMapping)e.EditModel; + newUpm.ProductId = ContextId; + var newProductMapping = new UserProductMapping { Id = Guid.NewGuid(), - ProductId = (Guid)ContextId, + ProductId = (Guid)ContextId, Permissions = 2 }; //e.EditModel = newProductMapping; } - - async Task EditModelSaving(GridEditModelSavingEventArgs e) - { - if (e.IsNew) - - _logger.Info("New orderData added"); - else - _logger.Info("orderData updated"); - - await UpdateDataAsync(); - } - - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) - { - - _logger.Info("orderData deleted"); - - } - - async Task UpdateDataAsync() - { - //refresh grid - _logger.Info("orderData grid refreshed"); - } - async Task FindUser() { - - - var userModelDto = await UserDataService.GetUserByEmailAsync(Email); if (userModelDto != null) { - ChosenUser = userModelDto; - FoundUsers.Add(ChosenUser); - emailInput.Enabled = false; - button1.Visible = false; + _chosenUser = userModelDto; + FoundUsers.Add(_chosenUser); + _emailInput.Enabled = false; + _button1.Visible = false; } else { - emailInput.Value = "email@email.com"; - errorCss = "display: block"; + _emailInput.Value = "email@email.com"; + _errorCss = "display: block"; } } @@ -249,17 +211,18 @@ } - public async Task SubmitForm(object result) + public Task SubmitForm(object result) { - - _logger.Info($"Submitted nested form: {result.GetType().FullName}"); + return Task.CompletedTask; } - public async Task ShowPopup(UserProductMapping emptyProductMapping) + public Task ShowPopup(UserProductMapping emptyProductMapping) { - tempProductMapping = emptyProductMapping; - PopupVisible = true; + _tempProductMapping = emptyProductMapping; + PopupVisible = true; + + return Task.CompletedTask; } private async Task OnUserSelected(Guid userId) @@ -269,13 +232,15 @@ } private async Task OnRowClick(GridRowClickEventArgs e) - { + { await SelectUser((Guid)e.Grid.GetRowValue(e.VisibleIndex, "Id")); } + private async Task SelectUser(Guid id) { PopupVisible = false; - tempProductMapping.UserId = id; + _tempProductMapping.UserId = id; + await OnUserSelected(id); } @@ -283,7 +248,7 @@ { if (e.ElementType == GridElementType.DataRow && (int)e.Grid.GetRowValue(e.VisibleIndex, "Permissions") == 1) { - e.Style="display: none"; + e.Style = "display: none"; } // else if (e.ElementType == GridElementType.HeaderCell) // { @@ -291,7 +256,4 @@ // } } - - - } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor index 69320bed..b12da11f 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor @@ -37,7 +37,7 @@ Click="ColumnChooserButton_Click" /> - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor index 6a08e108..f20fa170 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor @@ -37,7 +37,7 @@ Click="ColumnChooserButton_Click" /> - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor index bc673523..48400937 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor @@ -37,7 +37,7 @@ Click="ColumnChooserButton_Click" /> - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor index 15797a38..561751e6 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor @@ -18,16 +18,13 @@ @using AyCode.Interfaces.Addresses @using AyCode.Core @inject IStringLocalizer Localizer -@inject IServiceProviderDataService serviceProviderDataService -@inject IUserDataService userDataService -@inject ITransferDataService transferDataService @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient; - + @@ -62,22 +59,22 @@ - + @{ - var transfer2 = (Product)EditFormContext.EditModel; + var transfer2 = (Product)editFormContext.EditModel; } - @EditFormContext.GetEditor("Name") + @editFormContext.GetEditor("Name") - @EditFormContext.GetEditor("ProductType") + @editFormContext.GetEditor("ProductType") - @EditFormContext.GetEditor("Price") + @editFormContext.GetEditor("Price") - @EditFormContext.GetEditor("Description") + @editFormContext.GetEditor("Description") @@ -89,13 +86,12 @@ @code { [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public Guid ContextId { get; set; } - [Parameter] public IProductsRelation ParentData { get; set; } = null!; + [Parameter] public IProductsRelation? ParentData { get; set; } = null!; [Parameter] public EventCallback OnGridEditModelSaving { get; set; } [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetProductsByContextId; [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; - private ProductDetailGrid _productGrid; - private List productList = new List(); + private ProductDetailGrid _productGrid = null!; private LoggerClient _logger = null!; protected override void OnInitialized() { @@ -121,31 +117,12 @@ // } // else - base.OnParametersSet(); - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - // if(firstRender) - // { - - // _productGrid.GetAllMessageTag = GetAllTag; - - // // if (ParentData != null) - // // { - // // _productGrid.DataSource = new List(); - // // _productGrid.DataSource = ParentData.Products; - // // } - - - // } + await base.OnParametersSetAsync(); } private void DataItemChanged(GridDataItemChangedEventArgs args) { _logger.Debug($"Saving: {args.DataItem.Name}, {args.DataItem.ServiceProviderId}"); - - //ProductGrid.SaveChangesAsync(); } public async Task DataItemSaving(GridEditModelSavingEventArgs e) diff --git a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor index 72eb9293..5ae522ef 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor @@ -29,47 +29,40 @@ CustomizeEditModel="CustomizeEditModel" EditMode="GridEditMode.EditForm" ColumnResizeMode="GridColumnResizeMode.NextColumn" + DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode" ShowFilterRow="true"> - - + + @{ - if (ShowNestedRows) - { - - - - - - - - - } + + + + + } - + @{ - var transfer2 = (UserProductMapping)UserEditFormContext.EditModel; + var transfer2 = (UserProductMapping)userEditFormContext.EditModel; } - @UserEditFormContext.GetEditor("UserId") + @userEditFormContext.GetEditor("UserId") - + - @UserEditFormContext.GetEditor("Permissions") + @userEditFormContext.GetEditor("Permissions") - - @@ -83,11 +76,9 @@ [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllUserProductMappings; - [Parameter] public bool ShowNestedRows { get; set; } = false; + [Parameter] public GridDetailExpandButtonDisplayMode DetailExpandButtonDisplayMode { get; set; } = GridDetailExpandButtonDisplayMode.Never; - [Parameter] public Guid? ContextId { get; set; } - - private Guid[] ContextIds = new Guid[0]; + [Parameter] public Guid[]? ContextIds { get; set; } private LoggerClient _logger; @@ -95,22 +86,12 @@ private ProductDetailGridComponent bleh; - protected override void OnParametersSet() - { - if (ContextId != null) - { - ContextIds = new Guid[1]; - ContextIds[0] = (Guid)ContextId; - } - base.OnParametersSet(); - } - protected override async Task OnInitializedAsync() + protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); - - //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + base.OnInitialized(); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) @@ -126,30 +107,4 @@ //e.EditModel = newProductMapping; } - - - async Task EditModelSaving(GridEditModelSavingEventArgs e) - { - if (e.IsNew) - - _logger.Info("New orderData added"); - else - _logger.Info("orderData updated"); - - await UpdateDataAsync(); - } - - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) - { - - _logger.Info("orderData deleted"); - - } - - async Task UpdateDataAsync() - { - //refresh grid - _logger.Info("orderData grid refreshed"); - } - } \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 78227ac9..c9c9018a 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -114,24 +114,24 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.GetServiceProviderByIdRouteName)] [SignalR(SignalRTags.GetCompany)] - public async Task GetServiceProviderById([FromBody] Guid id) + public Task GetServiceProviderById([FromBody] Guid id) { _logger.Info($@"GetServiceProviderById called with id: {id}"); - return await adminDal.GetCompanyByIdAsync(id); + return adminDal.GetCompanyByIdAsync(id); } - [HttpPost] - [Route(APIUrls.GetServiceProvidersByIdRouteName)] - [SignalR(SignalRTags.GetCompanys)] - public async Task GetServiceProvidersById([FromBody] Guid id) + [NonAction] + [ApiExplorerSettings(IgnoreApi = true)] + [SignalR(SignalRTags.GetCompaniesById)] + public async Task> GetServiceProvidersById(Guid id) { - _logger.Info($@"GetServiceProviderById called with id: {id}"); - List compList = new List(); - var result = await adminDal.GetServiceProviderByIdAsync(id); - compList.Add(result); - return compList.ToJson(); + _logger.Info($@"GetServiceProvidersById called with id: {id}"); + + var company = await GetServiceProviderById(id); + return company == null ? [] : [company]; } + //17. [Authorize] [HttpPost] @@ -486,14 +486,11 @@ namespace TIAMWebApp.Server.Controllers [Route(APIUrls.GetProductByIdRouteName)] [Tags("In-Progress", "Product")] [SignalR(SignalRTags.GetProductById)] - public async Task GetProductById(Guid productId) + public Task GetProductById(Guid productId) { _logger.Info("GetAllProducts called"); - var products = adminDal.GetProductById(productId); - - return products; - + return adminDal.GetProductByIdAsync(productId); } @@ -503,14 +500,9 @@ namespace TIAMWebApp.Server.Controllers public async Task> GetProductsById(Guid productId) { _logger.Info("GetAllProducts called"); - - var product = await GetProductById(productId); - var products = new List(); - if (product != null) { - products.Add(product); - } - return products; + var product = await GetProductById(productId); + return product == null ? [] : [product]; } } } \ No newline at end of file From 7843108576cb2d8affec6ee7f43ca8bc17347cf4 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 14:04:11 +0200 Subject: [PATCH 3/5] async fix --- .../Server/Controllers/ServiceProviderAPIController.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index c9c9018a..b11a5e40 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -114,11 +114,11 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.GetServiceProviderByIdRouteName)] [SignalR(SignalRTags.GetCompany)] - public Task GetServiceProviderById([FromBody] Guid id) + public async Task GetServiceProviderById([FromBody] Guid id) { _logger.Info($@"GetServiceProviderById called with id: {id}"); - return adminDal.GetCompanyByIdAsync(id); + return await adminDal.GetCompanyByIdAsync(id); } [NonAction] @@ -486,11 +486,11 @@ namespace TIAMWebApp.Server.Controllers [Route(APIUrls.GetProductByIdRouteName)] [Tags("In-Progress", "Product")] [SignalR(SignalRTags.GetProductById)] - public Task GetProductById(Guid productId) + public async Task GetProductById(Guid productId) { _logger.Info("GetAllProducts called"); - return adminDal.GetProductByIdAsync(productId); + return await adminDal.GetProductByIdAsync(productId); } From 1f34a556eb067a6805d4f81479a3cdcd9ca5ec74 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 14:11:53 +0200 Subject: [PATCH 4/5] fixes --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 4 +- .../ServiceProviderAPIController.cs | 60 +++++-------------- 2 files changed, 19 insertions(+), 45 deletions(-) diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index a7f74c2b..5cb6e3c7 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -130,8 +130,10 @@ namespace TIAM.Database.DataLayers.Admins 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 List? GetAllUserProductMappings(bool autoInclude = true) => Session(ctx => ctx.UserProductMappings).ToList(); public Task GetUserProductMappingByIdAsync(Guid userProductMappingId, bool autoInclude = true) => SessionAsync(ctx => ctx.GetUserProductMappingById(userProductMappingId, autoInclude)); + public List GetUserProductMappingByUserId(Guid userId, bool autoInclude = true) => Session(ctx => ctx.GetUserProductMappingsByUserId(userId, autoInclude).ToList()); + public List GetAllUserProductMappings(bool autoInclude = true) => Session(ctx => ctx.UserProductMappings).ToList(); + public List GetPermissionContextsView(Guid subjectId, Guid contextId) => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index b11a5e40..0ef33cf9 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -239,61 +239,46 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.GetUserProductMappingsByUserIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingsByUserId)] - public async Task GetUserProductMappingsByUserId(Guid userId) + public Task GetUserProductMappingsByUserId(Guid userId) { _logger.Info($@"GetUserProductMappingsByUserId called with userId: {userId}"); - var userProductMappings = adminDal.GetAllUserProductMappings(); - - var myUserProductMappings = userProductMappings.Where(x => x.UserId == userId).OrderBy(x => x.ProductId).ToList(); - //put serviceprovider id and name into a dictionary - - return myUserProductMappings.ToJson(); + return Task.FromResult(adminDal.GetUserProductMappingByUserId(userId).OrderBy(x => x.ProductId).ToJson()); } [AllowAnonymous] [HttpPost] [Route(APIUrls.GetUserProductMappingByIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingById)] - public async Task GetUserProductMappingById(Guid id) + public Task GetUserProductMappingById(Guid id) { _logger.Info($@"GetUserProductMappingsByUserId called with userId: {id}"); - var userProductMappings = adminDal.GetAllUserProductMappings(); - - var myUserProductMappings = userProductMappings.Where(x => x.Id == id).ToList(); - //put serviceprovider id and name into a dictionary - - return myUserProductMappings.ToJson(); + return Task.FromResult(adminDal.GetUserProductMappingById(id).ToJson()); } [AllowAnonymous] [HttpPost] [Route(APIUrls.GetAllUserProductMappingsRouteName)] [SignalR(SignalRTags.GetAllUserProductMappings)] - public async Task GetAllUserProductMappings() + public Task GetAllUserProductMappings() { _logger.Info($@"GetAllUserProductMappings called"); - var serviceProviders = adminDal.GetAllUserProductMappings()!.OrderBy(x => x.ProductId); - - //put serviceprovider id and name into a dictionary - - return serviceProviders.ToJson(); + return Task.FromResult(serviceProviders.ToJson()); } [AllowAnonymous] [HttpGet] [Route(APIUrls.GetCarsForUserProductMappingRouteName + "/{userProductMappingId}")] [SignalR(SignalRTags.GetCarsForUserProductMapping)] - public async Task> GetCarsForUserProductMapping(Guid userProductMappingId) + public Task> GetCarsForUserProductMapping(Guid userProductMappingId) { _logger.Info($@"GetCarsForUserProductMapping called with userProductMappingId: {userProductMappingId}"); var cars = adminDal.GetCarByUserProductMappingId(userProductMappingId); - - return cars; + return Task.FromResult(cars); } [AllowAnonymous] @@ -305,7 +290,6 @@ namespace TIAMWebApp.Server.Controllers _logger.Info($@"GetAllCars called "); var cars = await adminDal.GetAllCarsAsync(); - return cars; } @@ -347,12 +331,10 @@ namespace TIAMWebApp.Server.Controllers [Tags("Finished", "Cars")] [EndpointSummary("Create car")] [SignalR(SignalRTags.CreateCar)] - public async Task CreateCar(Car car) + public async Task CreateCar(Car car) { var result = await CarDataChanging(car, TrackingState.Add); - if (result) - return car; - else return null; + return result ? car : null; } [AllowAnonymous] @@ -361,12 +343,10 @@ namespace TIAMWebApp.Server.Controllers [Tags("Finished", "Cars")] [EndpointSummary("Update car")] [SignalR(SignalRTags.UpdateCar)] - public async Task UpdateCar(Car car) + public async Task UpdateCar(Car car) { var result = await CarDataChanging(car, TrackingState.Update); - if (result) - return car; - else return null; + return result ? car : null; } @@ -384,8 +364,7 @@ namespace TIAMWebApp.Server.Controllers [Tags("In-Progress", "Product")] [SignalR(SignalRTags.AddProduct)] public async Task AddProduct([FromBody] Product product) - { - + { _logger.Info(@"AddProduct called"); if (product == null) @@ -394,7 +373,7 @@ namespace TIAMWebApp.Server.Controllers } else { - var result = adminDal.AddProductAsync(product); + var result = await adminDal.AddProductAsync(product); return Ok(product); } } @@ -466,19 +445,12 @@ namespace TIAMWebApp.Server.Controllers [HttpGet] [Route(APIUrls.GetAllProductsRouteName)] [Tags("In-Progress", "Product")] - public async Task GetAllProducts() + public Task GetAllProducts() { _logger.Info("GetAllProducts called"); var products = adminDal.GetProductsJson(); - if (products != null) - { - return products; - } - else - { - return null; - } + return Task.FromResult(products); } [AllowAnonymous] From 28c673b613e1c25edb573141670d992169c9a247 Mon Sep 17 00:00:00 2001 From: Loretta Date: Mon, 24 Jun 2024 15:19:53 +0200 Subject: [PATCH 5/5] fixes --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 13 ++--- TIAM.Services/SignalRTags.cs | 1 + .../SysAdmins/CarDetailGridComponent.razor | 2 +- .../User/SysAdmins/CarGridComponent.razor | 2 +- .../ServiceProviderAPIController.cs | 48 +++++++++++-------- 5 files changed, 36 insertions(+), 30 deletions(-) diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 5cb6e3c7..18642bce 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -36,6 +36,7 @@ namespace TIAM.Database.DataLayers.Admins public Task> GetAllCarsAsync() => SessionAsync(ctx => ctx.Cars.OrderBy(x => x.Manufacture).ThenBy(x => x.CarModel).ToList()); public Car? GetCarById(Guid carId) => Session(ctx => ctx.Cars.FirstOrDefault(x => x.Id == carId)); public List GetCarByUserProductMappingId(Guid userProductMappingId) => Session(ctx => ctx.Cars.Where(x => x.UserProductMappingId == userProductMappingId).ToList()); + public Task> GetCarByUserProductMappingIdAsync(Guid userProductMappingId) => SessionAsync(ctx => ctx.Cars.Where(x => x.UserProductMappingId == userProductMappingId).ToList()); public Task AddCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Add(car).State == EntityState.Added); public Task UpdateCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Update(car).State == EntityState.Modified); public Task RemoveCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Remove(car).State == EntityState.Deleted); @@ -131,8 +132,11 @@ namespace TIAM.Database.DataLayers.Admins 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)); - public List GetUserProductMappingByUserId(Guid userId, bool autoInclude = true) => Session(ctx => ctx.GetUserProductMappingsByUserId(userId, autoInclude).ToList()); + public List GetUserProductMappingsByUserId(Guid userId, bool autoInclude = true) => Session(ctx => ctx.GetUserProductMappingsByUserId(userId, autoInclude).ToList()); + public Task> GetUserProductMappingsByUserIdAsync(Guid userId, bool autoInclude = true) => SessionAsync(ctx => ctx.GetUserProductMappingsByUserId(userId, autoInclude).ToList()); + public Task> GetUserProductMappingsByProductIdAsync(Guid productId, bool autoInclude = true) => SessionAsync(ctx => ctx.GetUserProductMappingsByProductId(productId, autoInclude).ToList()); public List GetAllUserProductMappings(bool autoInclude = true) => Session(ctx => ctx.UserProductMappings).ToList(); + public Task> GetAllUserProductMappingsAsync(bool autoInclude = true) => SessionAsync(ctx => ctx.UserProductMappings.ToList()); public List GetPermissionContextsView(Guid subjectId, Guid contextId) @@ -508,13 +512,6 @@ namespace TIAM.Database.DataLayers.Admins #region UserProductMappings - //23. (IServiceProviderDataService) Get Assigned Users By ProductId - public Task> GetUserProductMappingsByProductIdAsync(Guid productId) - { - return Context.UserProductMappings.Where(x => x.ProductId == productId).ToListAsync(); - } - - //24 . (IServiceProviderDataService) Remove Assigned Users By Product Id public Task RemoveUserProductMappingsByContextId(Guid productId) { diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index fe95c0bd..36999c6f 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -54,6 +54,7 @@ public class SignalRTags : AcSignalRTags public const int GetUserProductMappingsByProductId = 44; public const int GetUserProductMappingsByUserId = 45; public const int GetUserProductMappingById = 46; + public const int GetUserProductMappingsById = 47; public const int GetCarsForUserProductMapping = 50; public const int CreateCar = 51; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor index 59c3442d..9ce4530c 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor @@ -49,7 +49,7 @@ - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor index c944fca3..9daabbec 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor @@ -49,7 +49,7 @@ - + diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 0ef33cf9..c61738af 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -18,6 +18,7 @@ using AyCode.Services.SignalRs; using AyCode.Utils.Extensions; using TIAM.Entities.Drivers; using TIAM.Services; +using TIAM.Entities.Products; namespace TIAMWebApp.Server.Controllers { @@ -211,7 +212,7 @@ namespace TIAMWebApp.Server.Controllers [SignalR(SignalRTags.DeleteUserProductMapping)] public async Task DeleteUserProductMapping(UserProductMapping userProductMapping) { - _logger.Info($"UpdateUserProductMapping called! + {userProductMapping.Id}"); + _logger.Info($"DeleteUserProductMapping called! + {userProductMapping.Id}"); var result = await adminDal.RemoveUserProductMappingAsync(userProductMapping.Id); @@ -223,62 +224,69 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.GetUserProductMappingsByProductIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingsByProductId)] - public async Task GetUserProductMappingsByProductId(Guid productId) + public async Task> GetUserProductMappingsByProductId(Guid productId) { - _logger.Info($@"GetUserProductMappingsByUserId called with serviceProviderId: {productId}"); + _logger.Info($@"GetUserProductMappingsByProductId called with serviceProviderId: {productId}"); - var userProductMappings = adminDal.GetAllUserProductMappings(); - - var myUserProductMappings = userProductMappings.Where(x => x.ProductId == productId).ToList(); - //put serviceprovider id and name into a dictionary - - return myUserProductMappings.ToJson(); + return await adminDal.GetUserProductMappingsByProductIdAsync(productId); } [AllowAnonymous] [HttpPost] [Route(APIUrls.GetUserProductMappingsByUserIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingsByUserId)] - public Task GetUserProductMappingsByUserId(Guid userId) + public async Task> GetUserProductMappingsByUserId(Guid userId) { _logger.Info($@"GetUserProductMappingsByUserId called with userId: {userId}"); - return Task.FromResult(adminDal.GetUserProductMappingByUserId(userId).OrderBy(x => x.ProductId).ToJson()); + return (await adminDal.GetUserProductMappingsByUserIdAsync(userId)).OrderBy(x => x.ProductId).ToList(); } [AllowAnonymous] [HttpPost] [Route(APIUrls.GetUserProductMappingByIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingById)] - public Task GetUserProductMappingById(Guid id) + public async Task GetUserProductMappingById(Guid id) { - _logger.Info($@"GetUserProductMappingsByUserId called with userId: {id}"); + _logger.Info($@"GetUserProductMappingById called with userId: {id}"); - return Task.FromResult(adminDal.GetUserProductMappingById(id).ToJson()); + var userproductMapping = await adminDal.GetUserProductMappingByIdAsync(id); + return userproductMapping; + } + + [NonAction] + [ApiExplorerSettings(IgnoreApi = true)] + [SignalR(SignalRTags.GetUserProductMappingsById)] + public async Task> GetUserProductMappingsById(Guid id) + { + _logger.Info($@"GetUserProductMappingsById called with userId: {id}"); + + var userproductMapping = await adminDal.GetUserProductMappingByIdAsync(id); + return userproductMapping == null ? [] : [userproductMapping]; } [AllowAnonymous] [HttpPost] [Route(APIUrls.GetAllUserProductMappingsRouteName)] [SignalR(SignalRTags.GetAllUserProductMappings)] - public Task GetAllUserProductMappings() + public async Task> GetAllUserProductMappings() { _logger.Info($@"GetAllUserProductMappings called"); - var serviceProviders = adminDal.GetAllUserProductMappings()!.OrderBy(x => x.ProductId); - return Task.FromResult(serviceProviders.ToJson()); + var companyies = (await adminDal.GetAllUserProductMappingsAsync()).OrderBy(x => x.ProductId).ToList(); + return companyies; } [AllowAnonymous] [HttpGet] [Route(APIUrls.GetCarsForUserProductMappingRouteName + "/{userProductMappingId}")] [SignalR(SignalRTags.GetCarsForUserProductMapping)] - public Task> GetCarsForUserProductMapping(Guid userProductMappingId) + public async Task> GetCarsForUserProductMapping(Guid userProductMappingId) { _logger.Info($@"GetCarsForUserProductMapping called with userProductMappingId: {userProductMappingId}"); - var cars = adminDal.GetCarByUserProductMappingId(userProductMappingId); - return Task.FromResult(cars); + var cars = await adminDal.GetCarByUserProductMappingIdAsync(userProductMappingId); + return cars; } [AllowAnonymous]