From d161abcb73dbc8ee3f02d7296d8f006dc8e3cb73 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 22 Jun 2024 17:42:48 +0200 Subject: [PATCH] userproductmapping --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 1 + TIAM.Services/SignalRTags.cs | 10 +- TIAMSharedUI/Pages/User/ServiceProvider.razor | 135 ++++++------ .../SysAdmins/ManageServiceProviders.razor | 2 +- .../SysAdmins/ManageUserProductMappings.razor | 185 +++++++++++++++++ .../Pages/User/SysAdmins/ManageUsers.razor | 15 +- .../ProductDetailByIdGridComponent.razor | 193 ++++++++++++++++++ .../ProductDetailGridComponent.razor | 51 ++++- .../ServiceProviderGridComponent.razor | 16 +- .../UserProductMappingGridComponent.razor | 68 +++--- .../Components/Grids/CompanyByIdDetailGrid.cs | 26 +++ .../Grids/UserProductMappingGrid.cs | 31 +++ .../UserProductMappingProductDetailGrid.cs | 31 +++ .../Grids/UserProductMappingUserDetailGrid.cs | 31 +++ TIAMSharedUI/Shared/Users/AdminNavMenu.razor | 1 + TIAMSharedUI/wwwroot/css/TourIAm.css | 4 +- .../ServiceProviderAPIController.cs | 87 +++++++- .../Interfaces/IServiceProviderDataService.cs | 1 + TIAMWebApp/Shared/Models/APIUrls.cs | 16 +- .../Services/ServiceProviderDataService.cs | 18 ++ 20 files changed, 789 insertions(+), 133 deletions(-) create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor create mode 100644 TIAMSharedUI/Shared/Components/Grids/CompanyByIdDetailGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/UserProductMappingGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/UserProductMappingProductDetailGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/UserProductMappingUserDetailGrid.cs diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 5c2c3857..96ef74ba 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -127,6 +127,7 @@ namespace TIAM.Database.DataLayers.Admins public Task RemoveProductAsync(Product product) => TransactionAsync(ctx => ctx.RemoveProduct(product)); 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 GetPermissionContextsView(Guid subjectId, Guid contextId) diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index fd55e754..45a42003 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -46,9 +46,12 @@ public class SignalRTags : AcSignalRTags //public const int AddAddress = 39; //public const int RemoveAddress = 40; - public const int CreateUserProductMapping = 47; - public const int UpdateUserProductMapping = 48; - public const int DeleteUserProductMapping = 49; //set permissions to 0 + public const int CreateUserProductMapping = 40; + public const int UpdateUserProductMapping = 41; + public const int DeleteUserProductMapping = 42; //set permissions to 0 + public const int GetAllUserProductMappings = 43; + public const int GetUserProductMappingsByProductId = 44; + public const int GetUserProductMappingsByUserId = 45; public const int GetCarsForUserProductMapping = 50; public const int CreateCar = 51; @@ -64,4 +67,5 @@ public class SignalRTags : AcSignalRTags public const int UpdateProduct = 73; public const int AddProduct = 74; public const int RemoveProduct = 75; + public const int GetProductsById = 76; } diff --git a/TIAMSharedUI/Pages/User/ServiceProvider.razor b/TIAMSharedUI/Pages/User/ServiceProvider.razor index 2cdbce58..2b8eeb36 100644 --- a/TIAMSharedUI/Pages/User/ServiceProvider.razor +++ b/TIAMSharedUI/Pages/User/ServiceProvider.razor @@ -26,91 +26,78 @@
- - AutoCollapseDetailRow="false" - KeyboardNavigationEnabled="true" - CustomizeElement="Grid_CustomizeElement" - CustomizeEditModel="Grid_CustomizeEditModel" - EditMode="GridEditMode.EditForm" - ColumnResizeMode="GridColumnResizeMode.NextColumn" - ShowFilterRow="true" - KeyFieldName="Id"> + + + + - - - - - - - - - - @* + + + + + @* + + *@ + + + @* + + *@ + + + + + + + + + + + + + + + @{ + var transfer2 = (Company)EditFormContext.EditModel; + } + + + @EditFormContext.GetEditor("Name") + + + @EditFormContext.GetEditor("CommissionPercent") + + + + - *@ - - @* - - *@ - - - - - - - - - - - - - - - @{ - var transfer2 = (Company)EditFormContext.EditModel; - } - - - @EditFormContext.GetEditor("Name") - - - @EditFormContext.GetEditor("CommissionPercent") - - - - - - - @* - - *@ - @* - - *@ - - - - @* - - *@ -
- - + +
@code { [Parameter] public string Id { get; set; } - private Guid CompanyId; + private Guid[] CompanyId = new Guid[1]; - private CompanyGrid _gridCompany; + private CompanyByIdDetailGrid _gridCompany; public string ProfileUrl => $"/images/serviceprovider/{Id}.png"; @@ -130,7 +117,7 @@ } else { - CompanyId = Guid.Parse(Id); + CompanyId[0] = Guid.Parse(Id); } base.OnParametersSet(); } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 3ea836ca..b7e2c325 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -132,7 +132,7 @@ - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor new file mode 100644 index 00000000..79f9ef00 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor @@ -0,0 +1,185 @@ +@page "/user/userproductmappings" +@using BlazorAnimation +@using TIAM.Models.Dtos.Users +@using TIAM.Resources +@using TIAMSharedUI.Pages.Components +@using TIAMSharedUI.Shared +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels +@using TIAMWebApp.Shared.Application.Models.PageModels +@using TIAMWebApp.Shared.Application.Utility +@using AyCode.Services.Loggers +@layout AdminLayout +@inject IEnumerable LogWriters +@inject IStringLocalizer Localizer +@inject ISessionService SessionService +@inject IWizardProcessor WizardProcessor +@inject IUserDataService UserDataService +User permissions + +
+

User permissions

+

Manage transfers here!

+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+ +
+
+
+ +
+
+ +
+
+ +@code { + private LoggerClient _logger; + //public UserModelDtoDetail UserModelDtoDetail = new(); + + + bool PopupVisible { get; set; } + + IGrid Grid { get; set; } + //object? MasterGridData { get; set; } + bool AutoCollapseDetailRow { get; set; } + + public List IgnoreList = + [ + "ReceiverEmailAddress", + "ReceiverId", + "SenderEmailAddress", + "SenderId", + "ContextId" + ]; + + + + void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + { + if (e.ElementType == GridElementType.DataRow && e.VisibleIndex % 2 == 1) + { + e.CssClass = "bg-alt"; + } + else if (e.ElementType == GridElementType.HeaderCell) + { + e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold"; + + } + } + + void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (!e.IsNew) return; + + var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast + userEditModel.Id = Guid.NewGuid(); + + userEditModel.UserDto = new UserDtoDetail + { + AffiliateId = Guid.NewGuid(), + EmailAddress = "", + PhoneNumber = "" + }; + + userEditModel.ProfileDto = new TIAM.Entities.Profiles.Profile + { + Name = "New user" + }; + + userEditModel.Products = []; + userEditModel.ServiceProviders = []; + userEditModel.UserProductMappings = []; + } + + async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) + { + var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel); + + if (e.IsNew) + { + //add new orderData to orderData array + var registration = new RegistrationModel(); + //TODO: Refractor to userDataService + + var random = new Random(); + const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + var password = new string(Enumerable.Repeat(chars, 10) + .Select(s => s[random.Next(s.Length)]).ToArray()); + + registration.Email = userModelDtoDetail.UserDto.EmailAddress; + registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; + registration.Password = password; + registration.ReferralId = null; + + await UserDataService.CreateGuestUser(registration); + _logger.Info("New user created added"); + } + else + { + _logger.Info("orderData updated at id " + userModelDtoDetail.Id); + + //await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel); + //modify transferData where transferData.Id == e.EditModel.Id + } + //get transfer from TransferData by Id + + // foreach (var transferToModify in (List)TransferData) + // { + // myModel = (Transfer)e.EditModel; + + // if (transferToModify.Id == myModel.Id) + // { + // //transferToModify.Driver = myModel.Driver; + // } + // } + + //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J. + await UpdateDataAsync(); + } + + async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) + { + //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); + //remove orderData from orderData array + _logger.Info("orderData deleted"); + //await UpdateDataAsync(); + } + + async Task UpdateDataAsync() + { + //refresh grid + + _logger.Info("orderData grid refreshed"); + } + + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + base.OnInitialized(); + } + + void ColumnChooserButton_Click() + { + Grid.ShowColumnChooser(); + } + +} diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor index 84b9c16e..ac85eec0 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor @@ -15,7 +15,7 @@ @inject ISessionService SessionService @inject IWizardProcessor WizardProcessor @inject IUserDataService UserDataService -Transfers +Users

User management

@@ -82,17 +82,18 @@ - + + @{ var keyField = context.Value; - var keyItem = (UserModelDtoDetail)context.DataItem; - - var buttonText = "Contact"; -

@keyField

+ var keyItem = (UserModelDtoDetail)context.DataItem; + + var buttonText = "Contact"; + }
-
+
diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor new file mode 100644 index 00000000..eeeac381 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor @@ -0,0 +1,193 @@ +@using TIAM.Entities.Products +@using TIAM.Entities.ServiceProviders +@using TIAM.Entities.Transfers +@using TIAM.Entities.Drivers +@using TIAM.Entities.Users +@using TIAM.Models.Dtos.Users +@using TIAM.Resources +@using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Utility +@using AyCode.Services.Loggers +@using TIAM.Core.Loggers +@using Address = TIAM.Entities.Addresses.Address +@using Profile = TIAM.Entities.Profiles.Profile +@using TIAMSharedUI.Shared.Components.Grids +@using TIAMSharedUI.Pages.Components.EditComponents +@using TIAMWebApp.Shared.Application.Services +@using AyCode.Interfaces.Addresses +@inject IStringLocalizer Localizer +@inject IServiceProviderDataService serviceProviderDataService +@inject IUserDataService userDataService +@inject ITransferDataService transferDataService +@inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient; + + + + + + + + + + + + + + + + + + + + + @{ + var transfer2 = (Product)EditFormContext.EditModel; + } + + + @EditFormContext.GetEditor("Name") + + + @EditFormContext.GetEditor("ProductType") + + + @EditFormContext.GetEditor("Price") + + + @EditFormContext.GetEditor("Description") + + + + + + + + +@code { + [Parameter] public bool KeyboardNavigationEnabled { get; set; } + [Parameter] public Guid? ContextId { get; set; } = null; + [Parameter] public IProductsRelation ParentData { get; set; } = null!; + [Parameter] public EventCallback OnGridEditModelSaving { get; set; } + + private ProductDetailGrid _productGrid; + private List productList = new List(); + private LoggerClient _logger = null!; + protected override void OnInitialized() + { + _logger = new LoggerClient(LogWriters.ToArray()); + //DataSource = new List
(); + + } + + protected override async Task OnParametersSetAsync() + { + // if (ParentData != null) + // { + // productList.AddRange(ParentData.Products); + // } + // else if (ContextId != null) + // { + // //_productGrid.ContextIds = new Guid[1]; + // //_productGrid.ContextIds[0] = (Guid)ContextId; + // var data = await serviceProviderDataService.GetProductByIdAsync((Guid)ContextId); + // List result = new List(); + // result.Add(data); + // _productGrid.DataSource = result; + // } + // else + + base.OnParametersSet(); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // if(firstRender) + // { + + // var a = _productGrid; + + // if (ParentData != null) + // { + // _productGrid.DataSource = new List(); + // _productGrid.DataSource = ParentData.Products; + // } + + + // } + } + + private void DataItemChanged(GridDataItemChangedEventArgs args) + { + _logger.Debug($"Saving: {args.DataItem.Name}, {args.DataItem.ServiceProviderId}"); + + //ProductGrid.SaveChangesAsync(); + } + + public async Task DataItemSaving(GridEditModelSavingEventArgs e) + { + await OnGridEditModelSaving.InvokeAsync(e); + + if (e.Cancel) return; + + var product = ((Product)e.EditModel); + + 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.ServiceProviderId}"); + } + + private void DataItemDeleting(GridDataItemDeletingEventArgs obj) + { + _logger.Debug($"DataItemDeleting"); + } + + void CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (!e.IsNew) return; + + var newProduct = (Product)e.EditModel; + newProduct.Id = Guid.NewGuid(); + newProduct.Name = "Type a name"; + newProduct.ServiceProviderId = (Guid)ContextId!; + newProduct.Price = 0; + newProduct.ProductType = TIAM.Core.Enums.ProductType.Hotel; + newProduct.Description = "Type a description"; + } + +} \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor index 9fe998f6..4d449365 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor @@ -24,7 +24,8 @@ @code { - [Parameter] public bool KeyboardNavigationEnabled { get; set; } - [Parameter] public Guid? ContextId { get; set; } + [Parameter] public bool KeyboardNavigationEnabled { get; set; } + [Parameter] public Guid? ContextId { get; set; } = null; [Parameter] public IProductsRelation ParentData { get; set; } = null!; [Parameter] public EventCallback OnGridEditModelSaving { get; set; } + [Parameter] public int GetAllTag { get; set; } - private ProductDetailGrid _productGrid = null!; + private ProductDetailGrid _productGrid; + private List productList = new List(); private LoggerClient _logger = null!; protected override void OnInitialized() - { + { _logger = new LoggerClient(LogWriters.ToArray()); - //DataSource = new List
(); } + protected override async Task OnParametersSetAsync() + { + // if (ParentData != null) + // { + // productList.AddRange(ParentData.Products); + // } + // else if (ContextId != null) + // { + // //_productGrid.ContextIds = new Guid[1]; + // //_productGrid.ContextIds[0] = (Guid)ContextId; + // var data = await serviceProviderDataService.GetProductByIdAsync((Guid)ContextId); + // List result = new List(); + // result.Add(data); + // _productGrid.DataSource = result; + // } + // 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; + // } + + + } + } + private void DataItemChanged(GridDataItemChangedEventArgs args) { _logger.Debug($"Saving: {args.DataItem.Name}, {args.DataItem.ServiceProviderId}"); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ServiceProviderGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ServiceProviderGridComponent.razor index d0c5da74..416564c4 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ServiceProviderGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ServiceProviderGridComponent.razor @@ -18,7 +18,7 @@ - + @@ -71,6 +71,8 @@ [Parameter] public UserModelDtoDetail UserModelDtoDetail { get; set; } [Parameter] public Guid? ContextId { get; set; } + public Guid[]? ContextIds = new Guid[1]; + List _detailGridData; List _availableServices; @@ -84,12 +86,18 @@ _logger = new LoggerClient(LogWriters.ToArray()); // ReSharper disable once NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract - _detailGridData = UserModelDtoDetail.ServiceProviders ?? []; + //_detailGridData = UserModelDtoDetail.ServiceProviders ?? []; //_availableServices = await ServiceProviderDataService.GetServiceProvidersAsync(); //_logger.Info($"DetailGridData: {_detailGridData.Count}"); } + protected override void OnParametersSet() + { + ContextIds[0] = (Guid)ContextId!; + base.OnParametersSet(); + } + // void CustomizeEditModel(GridCustomizeEditModelEventArgs e) // { // if (!e.IsNew) return; @@ -126,6 +134,6 @@ // { // //refresh grid // _logger.Info("orderData grid refreshed"); - // } + // } } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor index 82e3b586..5d857c72 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor @@ -3,7 +3,10 @@ @using TIAM.Entities.Drivers @using TIAM.Entities.Users @using TIAM.Models.Dtos.Users +@using TIAM.Services +@using TIAMSharedUI.Shared.Components.Grids @using TIAMWebApp.Shared.Application.Interfaces +@using TIAMWebApp.Shared.Application.Services @using TIAMWebApp.Shared.Application.Utility @using TIAM.Core.Loggers @using AyCode.Core.Loggers @@ -11,27 +14,37 @@ @using AyCode.Core @inject IServiceProviderDataService ServiceProviderDataService @inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient - - + + + + + + + + + + @{ var transfer2 = (UserProductMapping)UserEditFormContext.EditModel; @@ -52,47 +65,56 @@ - + @code { [Parameter] public bool KeyboardNavigationEnabled { get; set; } - [Parameter] - public UserModelDtoDetail UserModelDtoDetail { get; set; } + + [Parameter] public IUserProductMappingForeignKey ParentData { get; set; } = null!; private LoggerClient _logger; - List _detailGridData; List _availableProducts; + private ProductDetailGridComponent bleh; + protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - _detailGridData = UserModelDtoDetail.UserProductMappings ?? new List(); - _availableProducts = await ServiceProviderDataService.GetAllProductsAsync(); - _logger.Info($"DetailGridData: {_detailGridData.Count}"); + //_logger.Info($"DetailGridData: {_detailGridData.Count}"); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) { if (!e.IsNew) return; - var newProductMapping = new UserProductMapping - { - ProductId = Guid.NewGuid(), - UserId = UserModelDtoDetail.Id, - Permissions = 1 - }; + // var newProductMapping = new UserProductMapping + // { + // ProductId = Guid.NewGuid(), + // UserId = UserModelDtoDetail.Id, + // Permissions = 1 + // }; - e.EditModel = newProductMapping; + //e.EditModel = newProductMapping; + } + + protected override void OnAfterRender(bool firstRender) + { + if(firstRender) + { + bleh.GetAllTag = SignalRTags.GetProductsById; + } + + base.OnAfterRender(firstRender); } async Task EditModelSaving(GridEditModelSavingEventArgs e) { if (e.IsNew) - //add new orderData to orderData array + _logger.Info("New orderData added"); else _logger.Info("orderData updated"); @@ -102,9 +124,9 @@ async Task DataItemDeleting(GridDataItemDeletingEventArgs e) { - //remove orderData from orderData array + _logger.Info("orderData deleted"); - //await UpdateDataAsync(); + } async Task UpdateDataAsync() diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyByIdDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyByIdDetailGrid.cs new file mode 100644 index 00000000..12ecf1f0 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyByIdDetailGrid.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class CompanyByIdDetailGrid : CompanyGrid +{ + public CompanyByIdDetailGrid() : base() + { + GetAllMessageTag = SignalRTags.GetCompany; + AddMessageTag = SignalRTags.AddCompany; + UpdateMessageTag = SignalRTags.UpdateCompany; + RemoveMessageTag = SignalRTags.RemoveCompany; + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + var isFirst = IsFirstInitializeParameters; + + return base.SetParametersAsyncCore(parameters); + + if (isFirst) + { + } + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/UserProductMappingGrid.cs b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingGrid.cs new file mode 100644 index 00000000..5d6fae72 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class UserProductMappingGrid : TiamGrid +{ + public UserProductMappingGrid() : base() + { + GetAllMessageTag = SignalRTags.GetAllUserProductMappings; + AddMessageTag = SignalRTags.CreateUserProductMapping; + UpdateMessageTag = SignalRTags.UpdateUserProductMapping; + RemoveMessageTag = SignalRTags.DeleteUserProductMapping; + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/UserProductMappingProductDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingProductDetailGrid.cs new file mode 100644 index 00000000..094f1cc7 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingProductDetailGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class UserProductMappingProductDetailGrid : UserProductMappingGrid +{ + public UserProductMappingProductDetailGrid() : base() + { + GetAllMessageTag = SignalRTags.GetUserProductMappingsByProductId; + AddMessageTag = SignalRTags.CreateUserProductMapping; + UpdateMessageTag = SignalRTags.UpdateUserProductMapping; + RemoveMessageTag = SignalRTags.DeleteUserProductMapping; + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/UserProductMappingUserDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingUserDetailGrid.cs new file mode 100644 index 00000000..ad0d9ae2 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingUserDetailGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class UserProductMappingUserDetailGrid : UserProductMappingGrid +{ + public UserProductMappingUserDetailGrid() : base() + { + GetAllMessageTag = SignalRTags.GetUserProductMappingsByUserId; + AddMessageTag = SignalRTags.CreateUserProductMapping; + UpdateMessageTag = SignalRTags.UpdateUserProductMapping; + RemoveMessageTag = SignalRTags.DeleteUserProductMapping; + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsFirstInitializeParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index 3c2c8c95..5bcadbdc 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -17,6 +17,7 @@ + diff --git a/TIAMSharedUI/wwwroot/css/TourIAm.css b/TIAMSharedUI/wwwroot/css/TourIAm.css index a72f62a6..f23f2b43 100644 --- a/TIAMSharedUI/wwwroot/css/TourIAm.css +++ b/TIAMSharedUI/wwwroot/css/TourIAm.css @@ -210,8 +210,8 @@ select { .dxbl-tabs.dxbl-tabs-top { --dxbl-tabs-bg: #ffffff45; background-color: #ffffff45; - box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); - backdrop-filter: blur( 6px ); + /*box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 ); + backdrop-filter: blur( 6px );*/ -webkit-backdrop-filter: blur( 6px ); border-radius: 10px; } diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 98ee23aa..8057d49a 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -114,11 +114,13 @@ namespace TIAMWebApp.Server.Controllers [HttpPost] [Route(APIUrls.GetServiceProviderByIdRouteName)] [SignalR(SignalRTags.GetCompany)] - public async Task GetServiceProviderById([FromBody] Guid id) + public async Task GetServiceProviderById([FromBody] Guid id) { _logger.Info($@"GetServiceProviderById called with id: {id}"); - - return await adminDal.GetServiceProviderByIdAsync(id); + List compList = new List(); + var result = await adminDal.GetServiceProviderByIdAsync(id); + compList.Add(result); + return compList.ToJson(); } @@ -211,19 +213,50 @@ namespace TIAMWebApp.Server.Controllers //23. [AllowAnonymous] [HttpPost] - [Route(APIUrls.GetUserProductMappingsForProductRouteName)] - public async Task> GetUserProductMappingsForProduct(Guid serviceProviderId) + [Route(APIUrls.GetUserProductMappingsByProductRouteName)] + [SignalR(SignalRTags.GetUserProductMappingsByProductId)] + public async Task GetUserProductMappingsForProduct(Guid productId) { - _logger.Info($@"GetUserProductMappingsForServiceProvider called with serviceProviderId: {serviceProviderId}"); + _logger.Info($@"GetUserProductMappingsByUserId called with serviceProviderId: {productId}"); - var userProductMappingDictionary = new Dictionary(); + var userProductMappings = adminDal.GetAllUserProductMappings(); - var serviceProviders = await adminDal.GetServiceProvidersAsync(); - - var myServiceproviders = serviceProviders.Where(x => x.Id == serviceProviderId).ToDictionary(x => x.Id, x => x.Name); + var myUserProductMappings = userProductMappings.Where(x => x.ProductId == productId).ToList(); //put serviceprovider id and name into a dictionary - return myServiceproviders; + return myUserProductMappings.ToJson(); + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.GetUserProductMappingsByUserRouteName)] + [SignalR(SignalRTags.GetUserProductMappingsByUserId)] + public async Task GetUserProductMappingsByProduct(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(); + } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.GetAllUserProductMappingsRouteName)] + [SignalR(SignalRTags.GetAllUserProductMappings)] + public async 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(); } [AllowAnonymous] @@ -419,5 +452,37 @@ namespace TIAMWebApp.Server.Controllers } } + + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.GetProductByIdRouteName)] + [Tags("In-Progress", "Product")] + [SignalR(SignalRTags.GetProductById)] + public async Task GetProductById(Guid productId) + { + _logger.Info("GetAllProducts called"); + + var products = adminDal.GetProductById(productId); + + return products; + + } + + + [NonAction] + [ApiExplorerSettings(IgnoreApi = true)] + [SignalR(SignalRTags.GetProductsById)] + 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; + + } } } \ No newline at end of file diff --git a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs index ba5ea15b..0d44243c 100644 --- a/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Interfaces/IServiceProviderDataService.cs @@ -49,6 +49,7 @@ namespace TIAMWebApp.Shared.Application.Interfaces public Task> GetProductsForServiceProviderAsync(Guid serviceProviderId); public Task> GetAllProductsAsync(); + public Task GetProductByIdAsync(Guid id); } } diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index 61395c22..61433433 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -135,6 +135,12 @@ namespace TIAMWebApp.Shared.Application.Models public const string GetAllProductsRouteName = "GetAllProducts/"; public const string GetAllProducts = ServiceProviderAPI + GetAllProductsRouteName; + public const string GetProductByIdRouteName = "GetProductById/"; + public const string GetProductById = ServiceProviderAPI + GetProductByIdRouteName; + + public const string GetProductsByIdRouteName = "GetProductsById/"; + public const string GetProductsById = ServiceProviderAPI + GetProductsByIdRouteName; + public const string GetProductsByServiceProviderIdRouteName = "GetProductsByServiceProviderId"; public const string GetProductsByServiceProviderId = ServiceProviderAPI + GetProductsByServiceProviderIdRouteName; @@ -150,8 +156,14 @@ namespace TIAMWebApp.Shared.Application.Models public const string GetServiceProvidersRouteName = "GetServiceProviders"; public const string GetServiceProviders = ServiceProviderAPI + GetServiceProvidersRouteName; - public const string GetUserProductMappingsForProductRouteName = "GetUserProductMappingsForProduct"; - public const string GetUserProductMappingsForProduct = ServiceProviderAPI + GetUserProductMappingsForProductRouteName; + public const string GetAllUserProductMappingsRouteName = "GetAllUserProductMappings"; + public const string GetAllUserProductMappings = ServiceProviderAPI + GetAllUserProductMappingsRouteName; + + public const string GetUserProductMappingsByProductRouteName = "GetUserProductMappingsByProduct"; + public const string GetUserProductMappingsByProduct = ServiceProviderAPI + GetUserProductMappingsByProductRouteName; + + public const string GetUserProductMappingsByUserRouteName = "GetUserProductMappingsByUser"; + public const string GetUserProductMappingsByUser = ServiceProviderAPI + GetUserProductMappingsByUserRouteName; public const string GetCarsForUserProductMappingRouteName = "GetCarsForUserProductMapping"; public const string GetCarsForUserProductMapping = ServiceProviderAPI + GetCarsForUserProductMappingRouteName; diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index 35b089d0..0b3a9535 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -244,5 +244,23 @@ namespace TIAMWebApp.Shared.Application.Services return null; } } + + public async Task GetProductByIdAsync(Guid id) + { + var result = await _adminSignalRClient.GetByIdAsync(SignalRTags.GetProductById); + + //var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetProductById}"; + //var response = await http.GetFromJsonAsync(url, typeof(Product)); + //if (response != null) + //{ + // return (Product)response; + //} + //else + //{ + // return null; + //} + + return result; + } } }