diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index b2a82f72..7d5a7cc2 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -268,7 +268,7 @@ namespace TIAM.Database.DataLayers.Admins return isSucces ? userProductMapping : null; } - public Task UpdateUserProductMappingAsync(UserProductMapping userProductMapping) => TransactionAsync(ctx => ctx.UpdateUserProductMapping(userProductMapping)); + public Task UpdateUserProductMappingAsync(UserProductMapping userProductMapping) => UpdateSafeAsync(userProductMapping, (ctx, safeUserProductMapping) => ctx.UpdateUserProductMapping(safeUserProductMapping)); public async Task UpdateUserProductMappingAsync(Guid userProductMappingId, int permissions = 1, UserProductJsonDetailModel? userProductToCars = null) { diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index d87d7f44..b617a802 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -100,5 +100,7 @@ public class SignalRTags : AcSignalRTags public const int GetTransferDestinationToProductsByProductId = 95; public const int GetTransferDestinationToProductsByTransferDestinationId = 96; - public const int GetAllLogItemsByFilterText = 100; + public const int GetAllUsers = 120; + + public const int GetAllLogItemsByFilterText = 1000; } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor index 366d9d23..c52bc2b2 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor @@ -54,8 +54,7 @@ TextFieldName="@userEmailFieldNameComboItem" Value="@_drivers.FirstOrDefault(x => x.Id == transferToDriverEditModel.UserProductMappingId)" ValueChanged="v => transferToDriverEditModel.UserProductMappingId = v.Id" - SearchFilterCondition="ListSearchFilterCondition.Contains" - SearchMode="ListSearchMode.AutoSearch"> + SearchFilterCondition="ListSearchFilterCondition.Contains" SearchMode="ListSearchMode.AutoSearch"> @* *@ @@ -147,15 +146,24 @@ _logger.Info($"DetailGridData: {ParentData.TransferToDrivers.Count}"); - _cars.AddRange((await AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllCarsByProductId, [TiamConstClient.TransferProductId]))!); - // AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllCars, response => - // { - // _cars.AddRange(response.ResponseData!); - // return Task.CompletedTask; - // }).Forget(); - + _cars.AddRange((await AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllCarsByProductId, [TiamConstClient.TransferProductId])) ?? []); _drivers.AddRange(_cars.DistinctBy(x => x.UserProductMappingId).Select(x => x.UserProductMapping)); + // //AdminSignalRClient.GetAllIntoAsync(_cars, SignalRTags.GetAllCarsByProductId, [TiamConstClient.TransferProductId]) + // AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllCarsByProductId, response => + // { + // if (response.Status != SignalResponseStatus.Success || response.ResponseData == null) + // { + // _logger.Error($"GetAllAsync>(); status: {response.Status}; dataCount: {response.ResponseData?.Count}"); + // return Task.CompletedTask; + // } + + // _cars.AddRange(response.ResponseData); + // _drivers.AddRange(_cars.DistinctBy(x => x.UserProductMappingId).Select(x => x.UserProductMapping)); + + // return Task.CompletedTask; + // }, [TiamConstClient.TransferProductId]).Forget(); + await base.OnInitializedAsync(); } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor index c00ec8ba..467afa69 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/UserProductMappingGridComponent.razor @@ -12,6 +12,10 @@ @using AyCode.Core.Loggers @using AyCode.Services.Loggers @using AyCode.Core +@using AyCode.Core.Helpers +@using AyCode.Models.Users +@using AyCode.Services.SignalRs +@using TIAM.Core.Consts @inject IServiceProviderDataService ServiceProviderDataService @inject IEnumerable LogWriters @inject AdminSignalRClient AdminSignalRClient @@ -24,27 +28,44 @@ PageSize="10" ValidationEnabled="false" CustomizeEditModel="CustomizeEditModel" - EditMode="GridEditMode.EditForm" + EditMode="GridEditMode.EditRow" ColumnResizeMode="GridColumnResizeMode.NextColumn" + OnGridEditModelSaving="OnGridEditModelSaving" DetailExpandButtonDisplayMode="DetailExpandButtonDisplayMode"> - + - - @{ - var userEmailFieldName = $"{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}"; - } - - @* *@ @{ var productNameFieldName = $"{nameof(UserProductMapping.Product)}.{nameof(Product.Name)}"; } - + + + @{ + var userProductMappingEditModel = (UserProductMapping)context.EditModel; + } + + + + + + + @{ + var userEmailFieldName = $"{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}"; + } + + + @{ + var userProductMappingEditModel = (UserProductMapping)context.EditModel; + } + + + + + - @* *@ - @* *@ - @* *@ @@ -59,24 +80,24 @@ } - - @{ - var userProduct = (UserProductMapping)userEditFormContext.EditModel; - } - - - @userEditFormContext.GetEditor("UserId") - - - - - - @userEditFormContext.GetEditor("Permissions") - + @* + @{ + var userProduct = (UserProductMapping)userEditFormContext.EditModel; + } + + + @userEditFormContext.GetEditor("UserId") + + + + + + @userEditFormContext.GetEditor("Permissions") + - + - + *@ @code { @@ -92,22 +113,51 @@ [Parameter] public Guid[]? ContextIds { get; set; } + private bool? _isNewState = null; private LoggerClient _logger; - List _availableProducts; + private List _users = []; + private List _products = []; - private ProductDetailGridComponent bleh; - - - protected override void OnInitialized() + protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - base.OnInitialized(); + //_products = (await AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllProducts)) ?? []; + + AdminSignalRClient.GetAllIntoAsync(_products, SignalRTags.GetAllProducts).Forget(); + AdminSignalRClient.GetAllIntoAsync(_users, SignalRTags.GetAllUsers).Forget(); + + // AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllProducts, response => + // { + // if (response.Status != SignalResponseStatus.Success || response.ResponseData == null) + // { + // _logger.Error($"GetAllAsync>(); status: {response.Status}; dataCount: {response.ResponseData?.Count}"); + // return Task.CompletedTask; + // } + + // _products.AddRange(response.ResponseData); + // return Task.CompletedTask; + // }).Forget(); + + // AdminSignalRClient.GetAllAsync>(SignalRTags.getal, response => + // { + // if (response.Status != SignalResponseStatus.Success || response.ResponseData == null) + // { + // _logger.Error($"GetAllAsync>(); status: {response.Status}; dataCount: {response.ResponseData?.Count}"); + // return Task.CompletedTask; + // } + + // _products.AddRange(response.ResponseData); + // return Task.CompletedTask; + // }).Forget(); + + await base.OnInitializedAsync(); } void CustomizeEditModel(GridCustomizeEditModelEventArgs e) { + _isNewState = e.IsNew; if (!e.IsNew) return; // var newProductMapping = new UserProductMapping @@ -119,4 +169,10 @@ //e.EditModel = newProductMapping; } + + private void OnGridEditModelSaving(GridEditModelSavingEventArgs e) + { + _isNewState = false; + } + } \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 85816410..0a07cbda 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -203,7 +203,7 @@ namespace TIAMWebApp.Server.Controllers var result = await adminDal.UpdateUserProductMappingAsync(userProductMapping); - return result ? userProductMapping.ToJson() : string.Empty; + return result == null ? string.Empty : userProductMapping.ToJson(); } [AllowAnonymous] diff --git a/TIAMWebApp/Server/Controllers/UserAPIController.cs b/TIAMWebApp/Server/Controllers/UserAPIController.cs index fad95e82..b01aaf5c 100644 --- a/TIAMWebApp/Server/Controllers/UserAPIController.cs +++ b/TIAMWebApp/Server/Controllers/UserAPIController.cs @@ -15,21 +15,23 @@ using TIAM.Entities.Addresses; using TIAM.Services.Server.Logins; using ILogger = TIAM.Core.Loggers.ILogger; using AyCode.Core.Helpers; +using AyCode.Services.SignalRs; +using TIAM.Services; namespace TIAMWebApp.Server.Controllers { [Authorize] [ApiController] [Route("api/v1/[controller]")] - public class UserAPIController : ControllerBase + public class UserAPIController(IConfiguration configuration, UserDal userDal, IEnumerable logWriters) : ControllerBase { - private LoginService _loginService; - private UserDal _userDal; - private readonly IConfiguration _configuration; + private readonly TIAM.Core.Loggers.Logger _logger = new(logWriters.ToArray()); + + private LoginService _loginService = new LoginService(userDal, configuration); //private readonly IWebHostEnvironment _webHostEnvironment; //readonly PasswordHasher _hasher = new(); - private readonly ILogger _logger; + //private readonly ILogger _logger; /*private UserModel[] users = new UserModel[] { new UserModel(new Guid("540271f6-c604-4c16-8160-d5a7cafedf00"), "test@tiam.hu", "+36701234567", "Asdasd123456"), @@ -37,18 +39,6 @@ namespace TIAMWebApp.Server.Controllers };*/ - //private readonly ILogger _logger; - - public UserAPIController(IConfiguration configuration, UserDal userDal, IEnumerable logWriters) - { - _configuration = configuration; - //_webHostEnvironment = webHostEnvironment; - _userDal = userDal; - - _loginService = new LoginService(_userDal, _configuration); - _logger = new TIAM.Core.Loggers.Logger(logWriters.ToArray()); - } - //[AllowAnonymous] //[HttpPost] //[Route(APIUrls.LoggerRouteName)] @@ -148,7 +138,7 @@ namespace TIAMWebApp.Server.Controllers if (email != null) { //get user from db - dbUser = await _userDal.GetUserByEmailAsync(email.Value, true); + dbUser = await userDal.GetUserByEmailAsync(email.Value, true); _logger.Info($@"DbUser email: {dbUser?.EmailAddress}"); } @@ -168,7 +158,7 @@ namespace TIAMWebApp.Server.Controllers //mocking - update userModel with new refreshToken dbUser.RefreshToken = refreshToken; //TODO await _userManager.UpdateAsync(userModel); - await _userDal.UpdateJwtRefreshTokenAsync(dbUser.EmailAddress, dbUser.RefreshToken); + await userDal.UpdateJwtRefreshTokenAsync(dbUser.EmailAddress, dbUser.RefreshToken); response.IsSuccess = true; response.Content = new AuthenticationResponse @@ -271,7 +261,7 @@ namespace TIAMWebApp.Server.Controllers _logger.Info($"User to be updated: {email}"); _logger.Info($"User to be updated: {phoneNumber}"); - await _userDal.UpdateUserAsync(new User(userId, email, phoneNumber)); + await userDal.UpdateUserAsync(new User(userId, email, phoneNumber)); } } @@ -362,7 +352,7 @@ namespace TIAMWebApp.Server.Controllers { //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return _userDal.GetAllUserModelDtoAsync(); + return userDal.GetAllUserModelDtoAsync(); } [AllowAnonymous] @@ -373,7 +363,17 @@ namespace TIAMWebApp.Server.Controllers _logger.Info("GetUsersWithDetails called"); //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return _userDal.GetAllUserModelDtoAsync(); + return userDal.GetAllUserModelDtoAsync(); + } + + [NonAction] + [SignalR(SignalRTags.GetAllUsers)] + public async Task> GetAllUsers() + { + _logger.Info("GetAllUsers called"); + //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); + //return users; + return await userDal.GetUsersAsync(); } [AllowAnonymous] @@ -382,7 +382,7 @@ namespace TIAMWebApp.Server.Controllers public async Task? GetUserByEmail(string email) { _logger.Info($"GetUserByEmail called with email: {email}"); - var result = _userDal.GetUserModelDtoByEmailAsync(email, false); + var result = userDal.GetUserModelDtoByEmailAsync(email, false); if (result.Result == null) { UserModelDto resultDto = new UserModelDto(); @@ -401,7 +401,7 @@ namespace TIAMWebApp.Server.Controllers public Task GetUserById([FromBody] Guid id) { _logger.Info($"GetUserById called with id: {id}"); - return _userDal.GetUserModelDtoByIdAsync(id, true); + return userDal.GetUserModelDtoByIdAsync(id, true); } [AllowAnonymous] @@ -410,7 +410,7 @@ namespace TIAMWebApp.Server.Controllers public async Task GetUserDetailById([FromBody] Guid id) { _logger.Info($"GetUserDetailById called with id: {id}"); - var result = await _userDal.GetUserModelDtoByIdAsync(id, true); + var result = await userDal.GetUserModelDtoByIdAsync(id, true); return result; } } diff --git a/TIAMWebApp/Server/Program.cs b/TIAMWebApp/Server/Program.cs index 0b5c79e0..b5a515dc 100644 --- a/TIAMWebApp/Server/Program.cs +++ b/TIAMWebApp/Server/Program.cs @@ -39,6 +39,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); +builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs index e5ff3710..1728f955 100644 --- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -100,7 +100,7 @@ public class DevAdminSignalRHub : Hub, IAcSignalRHubServe //private readonly ServiceProviderAPIController _serviceProviderApiController; //private readonly TransferDataAPIController _transferDataApiController; - public DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, IEnumerable logWriters) + public DevAdminSignalRHub(AdminDal adminDal, UserAPIController userApiController, ServiceProviderAPIController serviceProviderApiController, TransferDataAPIController transferDataApiController, MessageAPIController messageApiController, ProfileAPIController profileApiController, LoggerApiController loggerApiController, IEnumerable logWriters) { _adminDal = adminDal; //_serviceProviderApiController = serviceProviderApiController; @@ -108,6 +108,7 @@ public class DevAdminSignalRHub : Hub, IAcSignalRHubServe _logger = new(logWriters.ToArray()); + _dynamicMethodCallModels.Add(new DynamicMethodCallModel(userApiController)); _dynamicMethodCallModels.Add(new DynamicMethodCallModel(serviceProviderApiController)); _dynamicMethodCallModels.Add(new DynamicMethodCallModel(transferDataApiController)); _dynamicMethodCallModels.Add(new DynamicMethodCallModel(messageApiController)); diff --git a/TIAMWebApp/Shared/Services/AdminSignalRClient.cs b/TIAMWebApp/Shared/Services/AdminSignalRClient.cs index 91ed73b4..dd5a47d2 100644 --- a/TIAMWebApp/Shared/Services/AdminSignalRClient.cs +++ b/TIAMWebApp/Shared/Services/AdminSignalRClient.cs @@ -4,6 +4,7 @@ using AyCode.Core; using AyCode.Core.Extensions; using AyCode.Core.Helpers; using AyCode.Core.Interfaces; +using AyCode.Interfaces.Entities; using AyCode.Services.Loggers; using AyCode.Services.SignalRs; using MessagePack.Resolvers; @@ -20,5 +21,6 @@ namespace TIAMWebApp.Shared.Application.Services { ConstHelper.NameByValue(0); } + } } diff --git a/TourIAmProject.sln b/TourIAmProject.sln index 2a52dd37..d3a70c01 100644 --- a/TourIAmProject.sln +++ b/TourIAmProject.sln @@ -40,6 +40,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DD32C7C2-218C-4148-8FD6-1AB3C824A7D5}" ProjectSection(SolutionItems) = preProject DeployReadme.txt = DeployReadme.txt + C:\Users\Fullepi\Desktop\SqlDataCompare_DevRelese_to_Prod.dcmp = C:\Users\Fullepi\Desktop\SqlDataCompare_DevRelese_to_Prod.dcmp SqlSchemaCompare_Dev_to_DevRelease.scmp = SqlSchemaCompare_Dev_to_DevRelease.scmp EndProjectSection EndProject