From 5be059cfeb3d8e53ae9dfeb4bcfd9d88544dcc13 Mon Sep 17 00:00:00 2001 From: Loretta Date: Fri, 21 Jun 2024 17:36:02 +0200 Subject: [PATCH] improvements, fixes, etc... --- .../DbSets/Products/ProductDbSetExtensions.cs | 9 ++- TIAM.Entities/ServiceProviders/Company.cs | 2 +- TIAM.Models/Dtos/Users/UserModelDtoDetail.cs | 14 ++++- TIAMSharedUI/Pages/User/ServiceProvider.razor | 2 +- .../SysAdmins/ManageServiceProviders.razor | 55 +++++++++++++++---- .../Pages/User/SysAdmins/ManageUsers.razor | 2 +- .../ProductDetailGridComponent.razor | 50 ++++++++++------- .../User/SysAdmins/ProfileGridComponent.razor | 12 ++-- .../ServiceProviderAPIController.cs | 4 ++ 9 files changed, 108 insertions(+), 42 deletions(-) diff --git a/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs b/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs index 53309a48..2d6f9d8a 100644 --- a/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs +++ b/TIAM.Database/DbSets/Products/ProductDbSetExtensions.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using AyCode.Core.Extensions; +using Microsoft.EntityFrameworkCore; using TIAM.Entities.Products; namespace TIAM.Database.DbSets.Products; @@ -8,7 +9,11 @@ public static class ProductDbSetExtensions #region Add, Update, Remove public static bool AddProduct(this IProductDbSet ctx, Product product) - => ctx.Products.Add(product).State == EntityState.Added; + { + if (product.Id.IsNullOrEmpty()) product.Id = Guid.NewGuid(); + + return ctx.Products.Add(product).State == EntityState.Added; + } public static bool UpdateProduct(this IProductDbSet ctx, Product product) => ctx.Products.Update(product).State == EntityState.Modified; diff --git a/TIAM.Entities/ServiceProviders/Company.cs b/TIAM.Entities/ServiceProviders/Company.cs index f7b8a8e5..d98617bc 100644 --- a/TIAM.Entities/ServiceProviders/Company.cs +++ b/TIAM.Entities/ServiceProviders/Company.cs @@ -8,7 +8,7 @@ using TIAM.Entities.Users; namespace TIAM.Entities.ServiceProviders; [Table("ServiceProviders")] -public class Company : AcCompany, ICompany, IProductsRelation +public class Company : AcCompany, ICompany, IProductsRelation, IProfileRelation { public virtual List Products { get; set; } = new(); diff --git a/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs b/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs index e4a06c9a..c384f334 100644 --- a/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs +++ b/TIAM.Models/Dtos/Users/UserModelDtoDetail.cs @@ -7,12 +7,21 @@ using TIAM.Entities.Users; namespace TIAM.Models.Dtos.Users { - public class UserModelDtoDetail : AcUserModelDtoDetailBase, IProductsRelation, IUserModelDtoMinBase + public class UserModelDtoDetail : AcUserModelDtoDetailBase, IProductsRelation, IUserModelDtoMinBase, IProfileForeignKey { + public Guid ProfileId + { + get => ProfileDto.Id; + set {} + } + public List UserProductMappings { get; set; } public List Products { get; set; } - public UserModelDtoDetail() { } + public UserModelDtoDetail() + { + } + public UserModelDtoDetail(User user) : base(user) { if (user.Products.Count == 0) return; @@ -40,6 +49,5 @@ namespace TIAM.Models.Dtos.Users //TODO: Models... - J. throw new NotImplementedException("CreateMainEntity"); } - } } diff --git a/TIAMSharedUI/Pages/User/ServiceProvider.razor b/TIAMSharedUI/Pages/User/ServiceProvider.razor index 0aeb47f1..2cdbce58 100644 --- a/TIAMSharedUI/Pages/User/ServiceProvider.razor +++ b/TIAMSharedUI/Pages/User/ServiceProvider.razor @@ -60,7 +60,7 @@ - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 8c8360a6..3ea836ca 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -13,6 +13,8 @@ @using TIAM.Entities.Addresses @using TIAMSharedUI.Shared.Components.Grids @using AyCode.Core +@using TIAM.Entities.Products +@using TIAM.Entities.Users @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @@ -125,12 +127,12 @@ *@ - + - + - + @@ -163,6 +165,8 @@ @code { private LoggerClient _logger; + private ProductDetailGridComponent? _productDetailGridComponent; + //public Transfer myModel = new Transfer(); //public List ServiceProviderDataList { get; set; } @@ -173,7 +177,7 @@ private CompanyGrid _gridCompany; private bool _autoCollapseDetailRow; - private Company CompanyToSetOwner = null; + private Company _companyToSetOwner = null; public List IgnoreList = [ @@ -191,7 +195,8 @@ string EmailMask { get; set; } = @"(\w|[.-])+@(\w|-)+\.(\w|-){2,4}"; DateTime StartDate { get; set; } = DateTime.Today; - DxSchedulerDataStorage _dataStorage = new(); + DxSchedulerDataStorage _dataStorage = new(); + void SendMail(Company item) { @@ -207,7 +212,7 @@ void SetOwnerPopup(Company item) { _logger.Info($"Setting owner of {item.OwnerId}, {item.Id}"); - CompanyToSetOwner = item; + _companyToSetOwner = item; _setOwnerPopupVisible = true; } @@ -219,15 +224,15 @@ //overwrite ServiceProvider ownerid //var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyToSetOwner.Id); - if (CompanyToSetOwner == null) + if (_companyToSetOwner == null) { return null; } else { - CompanyToSetOwner.OwnerId = userModelDto.Id; - var result = await serviceProviderDataService.UpdateServiceProviderAsync(CompanyToSetOwner); - CompanyToSetOwner = null; + _companyToSetOwner.OwnerId = userModelDto.Id; + var result = await serviceProviderDataService.UpdateServiceProviderAsync(_companyToSetOwner); + _companyToSetOwner = null; return result; } } @@ -306,6 +311,30 @@ await base.OnInitializedAsync(); } + private void OnProductGridItemSaving(GridEditModelSavingEventArgs e) + { + _logger.Detail($"OnProductGridItemSaving"); + + var company = _productDetailGridComponent!.ParentData as Company; + if (company == null || company.OwnerId.IsNullOrEmpty()) + { + _logger.Error($"OnProductGridItemSaving; company == null || company.OwnerId.IsNullOrEmpty(); company.OwnerId: {company?.OwnerId}"); + return; + } + + var product = ((Product)e.EditModel); + + if (e.IsNew) + { + if (product.Id.IsNullOrEmpty()) product.Id = Guid.NewGuid(); + + product.ServiceProviderId = company.Id; + product.UserProductMappings.Add(new UserProductMapping(company.OwnerId.Value, product.Id) { IsAdmin = true }); + } + else + { } + } + void ColumnChooserButton_Click() { _gridCompany.ShowColumnChooser(); @@ -328,4 +357,10 @@ _gridCompany.ExpandDetailRow(0); _gridCompany.EndUpdate(); } + + private void ActiveTabIndexChanged(int index) + { + _logger.Detail($"ActiveTabIndexChanged"); + } + } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor index be3abb06..84b9c16e 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor @@ -97,7 +97,7 @@ - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor index a1a5a500..9fe998f6 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor @@ -23,7 +23,7 @@ @inject AdminSignalRClient AdminSignalRClient; - - + @@ -82,8 +82,9 @@ [Parameter] public bool KeyboardNavigationEnabled { get; set; } [Parameter] public Guid? ContextId { get; set; } [Parameter] public IProductsRelation ParentData { get; set; } = null!; + [Parameter] public EventCallback OnGridEditModelSaving { get; set; } - public ProductDetailGrid ProductGrid = null!; + private ProductDetailGrid _productGrid = null!; private LoggerClient _logger = null!; protected override void OnInitialized() { @@ -97,31 +98,40 @@ { _logger.Debug($"Saving: {args.DataItem.Name}, {args.DataItem.ServiceProviderId}"); - ProductGrid.SaveChangesAsync(); + //ProductGrid.SaveChangesAsync(); } - private void DataItemSaving(GridEditModelSavingEventArgs e) + public async Task DataItemSaving(GridEditModelSavingEventArgs e) { - _logger.Debug($"DataItemSaving"); - ((Product)e.EditModel).ServiceProviderId = (Guid)ContextId!; - Guid _profileId = Guid.NewGuid(); - ((Product)e.EditModel).Profile = new Profile(); - ((Product)e.EditModel).Profile.Id = _profileId; - ((Product)e.EditModel).ProfileId = _profileId; - ((Product)e.EditModel).Profile.Name = ((Product)e.EditModel).Name; - Guid _addressId = Guid.NewGuid(); - ((Product)e.EditModel).Profile.Address = new Address(); - ((Product)e.EditModel).Profile.AddressId = _addressId; - ((Product)e.EditModel).Profile.Address.Id = _addressId; - ((Product)e.EditModel).UserProductMappings.Add(new UserProductMapping(Guid.NewGuid, ParentData.)); + await OnGridEditModelSaving.InvokeAsync(e); + if (e.Cancel) return; + var product = ((Product)e.EditModel); - - _logger.Debug($"Saving: {((Product)e.EditModel).Name}, {((Product)e.EditModel).ServiceProviderId}"); + if (e.IsNew) + { + _logger.Debug($"DataItemSaving"); + + var profileId = Guid.NewGuid(); + product.Profile = new Profile(profileId, product.Name); + product.ProfileId = profileId; + + var addressId = Guid.NewGuid(); + product.Profile.Address = new Address(addressId); + product.Profile.AddressId = addressId; + + //((Product)e.EditModel).UserProductMappings.Add(new UserProductMapping(Guid.NewGuid, ParentData.)); + } + else + { + + } + + _logger.Debug($"Saving: {product.Name}, {product.ServiceProviderId}"); //var result = serviceProviderDataService.CreateProductAsync((Product)e.EditModel); - _logger.Debug($"saved product: {((Product)e.EditModel).ServiceProviderId}"); + //_logger.Debug($"saved product: {product.ServiceProviderId}"); } private void DataItemDeleting(GridDataItemDeletingEventArgs obj) diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor index 5d93ea52..68319d99 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProfileGridComponent.razor @@ -8,13 +8,17 @@ @using AyCode.Services.Loggers @using TIAM.Core.Loggers @using AyCode.Core +@using AyCode.Interfaces.Profiles.Dtos +@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 + _logger = null!; @@ -66,7 +70,7 @@ protected override void OnParametersSet() { - _logger.DebugConditional(ProfileId.ToString()); + _logger.DebugConditional(ParentData.ProfileId.ToString()); base.OnParametersSet(); } diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 48c0bf38..98ee23aa 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -59,6 +59,8 @@ namespace TIAMWebApp.Server.Controllers case TrackingState.Remove: return await adminDal.RemoveCompanyAsync(company); + case TrackingState.Get: + case TrackingState.GetAll: default: throw new ArgumentOutOfRangeException(nameof(trackingState), trackingState, null); } @@ -262,6 +264,8 @@ namespace TIAMWebApp.Server.Controllers case TrackingState.Remove: return await adminDal.RemoveCarAsync(car); + case TrackingState.Get: + case TrackingState.GetAll: default: throw new ArgumentOutOfRangeException(nameof(trackingState), trackingState, null); }