From d161abcb73dbc8ee3f02d7296d8f006dc8e3cb73 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 22 Jun 2024 17:42:48 +0200 Subject: [PATCH 1/2] 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; + } } } From 448428a756c98cd69bf5eace1c8fa201747589bb Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 23 Jun 2024 22:45:11 +0200 Subject: [PATCH 2/2] cars, drivers, permissions --- TIAM.Database/DataLayers/Admins/AdminDal.cs | 1 + TIAM.Services/SignalRTags.cs | 2 + .../User/SysAdmins/AddressGridComponent.razor | 4 +- .../SysAdmins/CarDetailGridComponent.razor | 186 +++++++++++ .../User/SysAdmins/CarGridComponent.razor | 171 ++++++++++ .../User/SysAdmins/DriverGridComponent.razor | 297 ++++++++++++++++++ .../Pages/User/SysAdmins/ManageCars.razor | 186 +++++++++++ .../Pages/User/SysAdmins/ManageDrivers.razor | 78 +++++ .../Pages/User/SysAdmins/ManageProducts.razor | 4 +- .../SysAdmins/ManageServiceProviders.razor | 17 +- .../User/SysAdmins/ManageTransfers.razor | 7 +- .../SysAdmins/ManageUserProductMappings.razor | 5 +- .../Pages/User/SysAdmins/ManageUsers.razor | 2 +- .../ProductDetailByIdGridComponent.razor | 193 ------------ .../ProductDetailGridComponent.razor | 26 +- .../UserProductMappingGridComponent.razor | 81 +++-- .../Shared/Components/Grids/CarDetailGrid.cs | 31 ++ .../Shared/Components/Grids/CarGrid.cs | 31 ++ .../Grids/UserProductMappingDriverGrid.cs | 31 ++ TIAMSharedUI/Shared/Users/AdminNavMenu.razor | 11 +- .../ServiceProviderAPIController.cs | 60 +++- TIAMWebApp/Shared/Models/APIUrls.cs | 14 +- 22 files changed, 1169 insertions(+), 269 deletions(-) create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor create mode 100644 TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor delete mode 100644 TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor create mode 100644 TIAMSharedUI/Shared/Components/Grids/CarDetailGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/CarGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/UserProductMappingDriverGrid.cs diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 96ef74ba..2f07b2fb 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -33,6 +33,7 @@ namespace TIAM.Database.DataLayers.Admins } #region Car + 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 AddCarAsync(Car car) => TransactionAsync(ctx => ctx.Cars.Add(car).State == EntityState.Added); diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 279e69c1..7e15e654 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -52,11 +52,13 @@ public class SignalRTags : AcSignalRTags public const int GetAllUserProductMappings = 43; public const int GetUserProductMappingsByProductId = 44; public const int GetUserProductMappingsByUserId = 45; + public const int GetUserProductMappingById = 46; public const int GetCarsForUserProductMapping = 50; public const int CreateCar = 51; public const int UpdateCar = 52; public const int DeleteCar = 53; + public const int GetAllCars = 54; public const int GetMessagesByContextId = 60; public const int GetAllMessages = 61; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/AddressGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/AddressGridComponent.razor index 532c8c49..6cdde6e2 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/AddressGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/AddressGridComponent.razor @@ -24,9 +24,7 @@ KeyboardNavigationEnabled="KeyboardNavigationEnabled" KeyFieldName="Id" ValidationEnabled="false" - CustomizeEditModel="CustomizeEditModel" - EditModelSaving="EditModelSaving" - DataItemDeleting="DataItemDeleting" + CustomizeEditModel="CustomizeEditModel" EditMode="GridEditMode.EditForm" ColumnResizeMode="GridColumnResizeMode.NextColumn" ShowFilterRow="true"> diff --git a/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor new file mode 100644 index 00000000..0da339c5 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarDetailGridComponent.razor @@ -0,0 +1,186 @@ +@using TIAM.Entities.Products +@using TIAM.Entities.Transfers +@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 +@using AyCode.Services.Loggers +@using AyCode.Core +@inject IServiceProviderDataService ServiceProviderDataService +@inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient + + + + + + + + + + + + + + + + + + @{ + if (ShowNestedRows) + { + + + + + + + + } + } + + + + @{ + var car = (Car)UserEditFormContext.EditModel; + } + + + @UserEditFormContext.GetEditor("CountryCode") + + + @UserEditFormContext.GetEditor("LicencePlate") + + + @UserEditFormContext.GetEditor("Color") + + + @UserEditFormContext.GetEditor("Manufacture") + + + @UserEditFormContext.GetEditor("CarModel") + + + @UserEditFormContext.GetEditor("YearOfMake") + + + @UserEditFormContext.GetEditor("SeatNumber") + + + @UserEditFormContext.GetEditor("CarMotorType") + + + + + + + + + +@code { + [Parameter] + public bool KeyboardNavigationEnabled { get; set; } + + [Parameter] public ICarRelation ParentData { get; set; } = null!; + + [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllCars; + + [Parameter] public bool ShowNestedRows { get; set; } = false; + + [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() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + + //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + } + + void CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + 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 + }; + + 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 new file mode 100644 index 00000000..3c1ad166 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/CarGridComponent.razor @@ -0,0 +1,171 @@ +@using TIAM.Entities.Products +@using TIAM.Entities.Transfers +@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 +@using AyCode.Services.Loggers +@using AyCode.Core +@inject IServiceProviderDataService ServiceProviderDataService +@inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient + + + + + + + + + + + + + + + + + + @{ + if (ShowNestedRows) + { + + + + + + + + } + } + + + + @{ + var car = (Car)UserEditFormContext.EditModel; + } + + + @UserEditFormContext.GetEditor("CountryCode") + + + @UserEditFormContext.GetEditor("LicencePlate") + + + @UserEditFormContext.GetEditor("Color") + + + @UserEditFormContext.GetEditor("Manufacture") + + + @UserEditFormContext.GetEditor("CarModel") + + + @UserEditFormContext.GetEditor("YearOfMake") + + + @UserEditFormContext.GetEditor("SeatNumber") + + + @UserEditFormContext.GetEditor("CarMotorType") + + + + + + + + + +@code { + [Parameter] + public bool KeyboardNavigationEnabled { get; set; } + + [Parameter] public ICarRelation ParentData { get; set; } = null!; + + [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetAllCars; + + [Parameter] public bool ShowNestedRows { get; set; } = false; + + [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() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + + //_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 + // }; + + //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 new file mode 100644 index 00000000..86ce0ae8 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/DriverGridComponent.razor @@ -0,0 +1,297 @@ +@using TIAM.Entities.Products +@using TIAM.Entities.Transfers +@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 +@using AyCode.Services.Loggers +@using AyCode.Core +@inject IServiceProviderDataService ServiceProviderDataService +@inject IEnumerable LogWriters +@inject AdminSignalRClient AdminSignalRClient +@inject IWizardProcessor WizardProcessor +@inject IUserDataService UserDataService + + + + + + +

User not found, type another email please

+ + + + + +
+ + + +
+ + + + + + + + + + @{ + if (ShowNestedRows) + { + + + + + + + + + + } + } + + + + + + @{ + var transfer2 = (UserProductMapping)UserEditFormContext.EditModel; + } + + + + @transfer2.UserId + @{ + var a = UserEditFormContext.GetEditor("UserId"); + } + @* Select user *@ + Select user + + + + @UserEditFormContext.GetEditor("Permissions") + + + + + + + + + +@code { + [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]; + + private LoggerClient _logger; + + List _availableProducts; + + private UserProductMappingDriverGrid _driverGrid; + + private UserProductMapping tempProductMapping; + + bool PopupVisible { get; set; } + 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; + + protected override void OnParametersSet() + { + if (ContextId != null) + { + ContextIds = new Guid[1]; + ContextIds[0] = (Guid)ContextId; + } + base.OnParametersSet(); + } + + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + + //_logger.Info($"DetailGridData: {_detailGridData.Count}"); + } + + void CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (!e.IsNew) return; + UserProductMapping newUPM = (UserProductMapping)e.EditModel; + newUPM.ProductId = (Guid)ContextId!; + var newProductMapping = new UserProductMapping + { + Id = Guid.NewGuid(), + 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; + } + else + { + emailInput.Value = "email@email.com"; + errorCss = "display: block"; + } + } + + void CancelCreateClick() + { + PopupVisible = false; + } + + void SelectDriverPopupClosed() + { + //cancel clicked + } + + void SelectDriverPopupClosing(PopupClosingEventArgs args) + { + //myModel = new TransferWizardModel(); + + } + + public async Task SubmitForm(object result) + { + + + _logger.Info($"Submitted nested form: {result.GetType().FullName}"); + } + + public async Task ShowPopup(UserProductMapping emptyProductMapping) + { + tempProductMapping = emptyProductMapping; + PopupVisible = true; + } + + private async Task OnUserSelected(Guid userId) + { + // Logic after the user is selected + await Task.Run(() => Console.WriteLine($"Selected User ID: {userId}")); + } + + 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; + await OnUserSelected(id); + } + + void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + { + if (e.ElementType == GridElementType.DataRow && (int)e.Grid.GetRowValue(e.VisibleIndex, "Permissions") == 1) + { + e.Style="display: none"; + } + // else if (e.ElementType == GridElementType.HeaderCell) + // { + // e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold"; + + // } + } + + + +} \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor new file mode 100644 index 00000000..69320bed --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor @@ -0,0 +1,186 @@ +@page "/sysadmin/cars" +@using BlazorAnimation +@using TIAM.Models.Dtos.Users +@using TIAM.Resources +@using TIAM.Services +@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 +Car list + +
+

Car list

+

Manage cars 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/ManageDrivers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor new file mode 100644 index 00000000..6a08e108 --- /dev/null +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageDrivers.razor @@ -0,0 +1,78 @@ +@page "/sysadmin/drivers" +@using BlazorAnimation +@using TIAM.Entities.Users +@using TIAM.Models.Dtos.Users +@using TIAM.Resources +@using TIAM.Services +@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 + +User permissions + +
+

Drivers

+

Manage drivers here!

+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+ +
+
+
+ +
+
+ +
+
+ +@code { + private LoggerClient _logger; + //public UserModelDtoDetail UserModelDtoDetail = new(); + + private string TransferProductId = "814b5495-c2e9-4f1d-a73f-37cd5d353078"; + + + IGrid Grid { get; set; } + //object? MasterGridData { get; set; } + bool AutoCollapseDetailRow { get; set; } + + + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + base.OnInitialized(); + } + + void ColumnChooserButton_Click() + { + Grid.ShowColumnChooser(); + } + +} diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor index d8148c09..2bfd8000 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageProducts.razor @@ -1,4 +1,6 @@ -@page "/user/products" +@* Deprecated *@ + +@page "/user/products" @using TIAM.Resources @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index b7e2c325..d535be92 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -1,7 +1,8 @@ -@page "/user/companies" +@page "/sysadmin/companies" @using BlazorAnimation @using TIAM.Entities.ServiceProviders @using TIAM.Resources +@using TIAM.Services @using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces @@ -26,8 +27,8 @@ Admin - Companies
-

Company management

-

Manage transfers here!

+

Partners

+

Manage partners here!

- + @@ -196,7 +197,7 @@ DateTime StartDate { get; set; } = DateTime.Today; DxSchedulerDataStorage _dataStorage = new(); - + void SendMail(Company item) { @@ -223,7 +224,7 @@ var userModelDto = await userDataService.GetUserByEmailAsync(Email); //overwrite ServiceProvider ownerid - //var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyToSetOwner.Id); + //var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyToSetOwner.Id); if (_companyToSetOwner == null) { return null; @@ -320,7 +321,7 @@ { _logger.Error($"OnProductGridItemSaving; company == null || company.OwnerId.IsNullOrEmpty(); company.OwnerId: {company?.OwnerId}"); return; - } + } var product = ((Product)e.EditModel); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 04800547..0a77047f 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -1,4 +1,4 @@ -@page "/user/transfers" +@page "/sysadmin/transfers" @using BlazorAnimation @using TIAM.Core.Enums @using TIAM.Entities.Emails @@ -121,6 +121,7 @@ + @@ -187,6 +188,10 @@ @EditFormContext.GetEditor("PassengerCount") + + @EditFormContext.GetEditor("Payed") + + @EditFormContext.GetEditor("TransferStatusType") diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor index 79f9ef00..bc673523 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor @@ -1,7 +1,8 @@ -@page "/user/userproductmappings" +@page "/sysadmin/userproductmappings" @using BlazorAnimation @using TIAM.Models.Dtos.Users @using TIAM.Resources +@using TIAM.Services @using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Interfaces @@ -36,7 +37,7 @@ Click="ColumnChooserButton_Click" />
- +
diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor index ac85eec0..90537e02 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor @@ -1,4 +1,4 @@ -@page "/user/users" +@page "/sysadmin/users" @using BlazorAnimation @using TIAM.Models.Dtos.Users @using TIAM.Resources diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor deleted file mode 100644 index eeeac381..00000000 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailByIdGridComponent.razor +++ /dev/null @@ -1,193 +0,0 @@ -@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 ece9a5bb..319f7f2d 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ProductDetailGridComponent.razor @@ -5,6 +5,7 @@ @using TIAM.Entities.Users @using TIAM.Models.Dtos.Users @using TIAM.Resources +@using TIAM.Services @using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers @@ -25,6 +26,7 @@ + + + + @@ -86,7 +92,7 @@ [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; } + [Parameter] public int GetAllTag { get; set; } = SignalRTags.GetProductsByContextId; private ProductDetailGrid _productGrid; private List productList = new List(); @@ -120,19 +126,19 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { - if(firstRender) - { + // if(firstRender) + // { - _productGrid.GetAllMessageTag = GetAllTag; + // _productGrid.GetAllMessageTag = GetAllTag; - // if (ParentData != null) - // { - // _productGrid.DataSource = new List(); - // _productGrid.DataSource = ParentData.Products; - // } + // // if (ParentData != null) + // // { + // // _productGrid.DataSource = new List(); + // // _productGrid.DataSource = ParentData.Products; + // // } - } + // } } private void DataItemChanged(GridDataItemChangedEventArgs args) diff --git a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor index 5d857c72..72eb9293 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor @@ -17,18 +17,19 @@ @inject AdminSignalRClient AdminSignalRClient - + @@ -37,14 +38,21 @@ - - - - - - - + @{ + if (ShowNestedRows) + { + + + + + + + + + } + } + @{ var transfer2 = (UserProductMapping)UserEditFormContext.EditModel; @@ -71,7 +79,15 @@ [Parameter] public bool KeyboardNavigationEnabled { get; set; } - [Parameter] public IUserProductMappingForeignKey ParentData { get; set; } = null!; + [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]; private LoggerClient _logger; @@ -79,6 +95,16 @@ 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() { _logger = new LoggerClient(LogWriters.ToArray()); @@ -101,20 +127,11 @@ //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) - + _logger.Info("New orderData added"); else _logger.Info("orderData updated"); @@ -124,9 +141,9 @@ async Task DataItemDeleting(GridDataItemDeletingEventArgs e) { - + _logger.Info("orderData deleted"); - + } async Task UpdateDataAsync() diff --git a/TIAMSharedUI/Shared/Components/Grids/CarDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CarDetailGrid.cs new file mode 100644 index 00000000..88ab6566 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CarDetailGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Drivers; +using TIAM.Entities.Products; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class CarDetailGrid : CarGrid +{ + public CarDetailGrid() : base() + { + GetAllMessageTag = SignalRTags.GetAllCars; + AddMessageTag = SignalRTags.CreateCar; + UpdateMessageTag = SignalRTags.UpdateCar; + RemoveMessageTag = SignalRTags.DeleteCar; + } + + 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/CarGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CarGrid.cs new file mode 100644 index 00000000..60db5b36 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CarGrid.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Drivers; +using TIAM.Entities.Products; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class CarGrid : TiamGrid +{ + public CarGrid() : base() + { + GetAllMessageTag = SignalRTags.GetAllCars; + AddMessageTag = SignalRTags.CreateCar; + UpdateMessageTag = SignalRTags.UpdateCar; + RemoveMessageTag = SignalRTags.DeleteCar; + } + + 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/UserProductMappingDriverGrid.cs b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingDriverGrid.cs new file mode 100644 index 00000000..5dbebbfc --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/UserProductMappingDriverGrid.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 UserProductMappingDriverGrid : TiamGrid +{ + public UserProductMappingDriverGrid() : 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/Users/AdminNavMenu.razor b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor index 5bcadbdc..b90709e3 100644 --- a/TIAMSharedUI/Shared/Users/AdminNavMenu.razor +++ b/TIAMSharedUI/Shared/Users/AdminNavMenu.razor @@ -15,10 +15,13 @@ - - - - + + + + + + + diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index e06e9160..95d79644 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -213,9 +213,9 @@ namespace TIAMWebApp.Server.Controllers //23. [AllowAnonymous] [HttpPost] - [Route(APIUrls.GetUserProductMappingsByProductRouteName)] + [Route(APIUrls.GetUserProductMappingsByProductIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingsByProductId)] - public async Task GetUserProductMappingsForProduct(Guid productId) + public async Task GetUserProductMappingsByProductId(Guid productId) { _logger.Info($@"GetUserProductMappingsByUserId called with serviceProviderId: {productId}"); @@ -229,9 +229,9 @@ namespace TIAMWebApp.Server.Controllers [AllowAnonymous] [HttpPost] - [Route(APIUrls.GetUserProductMappingsByUserRouteName)] + [Route(APIUrls.GetUserProductMappingsByUserIdRouteName)] [SignalR(SignalRTags.GetUserProductMappingsByUserId)] - public async Task GetUserProductMappingsByProduct(Guid userId) + public async Task GetUserProductMappingsByUserId(Guid userId) { _logger.Info($@"GetUserProductMappingsByUserId called with userId: {userId}"); @@ -243,6 +243,22 @@ namespace TIAMWebApp.Server.Controllers return myUserProductMappings.ToJson(); } + [AllowAnonymous] + [HttpPost] + [Route(APIUrls.GetUserProductMappingByIdRouteName)] + [SignalR(SignalRTags.GetUserProductMappingById)] + public async 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(); + } + [AllowAnonymous] [HttpPost] [Route(APIUrls.GetAllUserProductMappingsRouteName)] @@ -263,11 +279,24 @@ namespace TIAMWebApp.Server.Controllers [HttpGet] [Route(APIUrls.GetCarsForUserProductMappingRouteName + "/{userProductMappingId}")] [SignalR(SignalRTags.GetCarsForUserProductMapping)] - public async Task> GetCarsForUserProductMapping(string userProductMappingId) + public async Task> GetCarsForUserProductMapping(Guid userProductMappingId) { _logger.Info($@"GetCarsForUserProductMapping called with userProductMappingId: {userProductMappingId}"); - var cars = adminDal.GetCarByUserProductMappingId(Guid.Parse(userProductMappingId)); + var cars = adminDal.GetCarByUserProductMappingId(userProductMappingId); + + return cars; + } + + [AllowAnonymous] + [HttpGet] + [Route(APIUrls.GetAllCarsRouteName)] + [SignalR(SignalRTags.GetAllCars)] + public async Task> GetAllCars() + { + _logger.Info($@"GetAllCars called "); + + var cars = await adminDal.GetAllCarsAsync(); return cars; } @@ -310,8 +339,13 @@ namespace TIAMWebApp.Server.Controllers [Tags("Finished", "Cars")] [EndpointSummary("Create car")] [SignalR(SignalRTags.CreateCar)] - public async Task CreateCar(Car car) - => await CarDataChanging(car, TrackingState.Add) ? Ok(car) : BadRequest("Invalid request"); + public async Task CreateCar(Car car) + { + var result = await CarDataChanging(car, TrackingState.Add); + if (result) + return car; + else return null; + } [AllowAnonymous] [HttpPost] @@ -319,8 +353,14 @@ namespace TIAMWebApp.Server.Controllers [Tags("Finished", "Cars")] [EndpointSummary("Update car")] [SignalR(SignalRTags.UpdateCar)] - public async Task UpdateCar(Car car) - => await CarDataChanging(car, TrackingState.Update) ? Ok(car) : BadRequest("Invalid request"); + public async Task UpdateCar(Car car) + { + var result = await CarDataChanging(car, TrackingState.Update); + if (result) + return car; + else return null; + } + [AllowAnonymous] [HttpPost] diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index 61433433..097f6a0b 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -159,11 +159,14 @@ namespace TIAMWebApp.Shared.Application.Models 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 GetUserProductMappingsByProductIdRouteName = "GetUserProductMappingsByProductId"; + public const string GetUserProductMappingsByProductId = ServiceProviderAPI + GetUserProductMappingsByProductIdRouteName; - public const string GetUserProductMappingsByUserRouteName = "GetUserProductMappingsByUser"; - public const string GetUserProductMappingsByUser = ServiceProviderAPI + GetUserProductMappingsByUserRouteName; + public const string GetUserProductMappingsByUserIdRouteName = "GetUserProductMappingsByUserId"; + public const string GetUserProductMappingsByUserId = ServiceProviderAPI + GetUserProductMappingsByUserIdRouteName; + + public const string GetUserProductMappingByIdRouteName = "GetUserProductMappingById"; + public const string GetUserProductMappingById = ServiceProviderAPI + GetUserProductMappingByIdRouteName; public const string GetCarsForUserProductMappingRouteName = "GetCarsForUserProductMapping"; public const string GetCarsForUserProductMapping = ServiceProviderAPI + GetCarsForUserProductMappingRouteName; @@ -177,6 +180,9 @@ namespace TIAMWebApp.Shared.Application.Models public const string DeleteCarRouteName = "DeleteCar"; public const string DeleteCar = ServiceProviderAPI + DeleteCarRouteName; + public const string GetAllCarsRouteName = "GetAllCars"; + public const string GetAllCars = ServiceProviderAPI + GetAllCarsRouteName; + public const string GetProfileByIdRouteName = "GetProfileById"; public const string GetProfileById = ProfileAPI + GetProfileByIdRouteName;