diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 27304211..b24872f6 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -103,6 +103,7 @@ public class SignalRTags : AcSignalRTags public const int GetTransferDestinationToProductsByTransferDestinationId = 96; public const int GetAllUsers = 120; + public const int GetAllUserModelDtoDetails = 121; public const int GetAllUserModelDtoEmails = 125; public const int GetAllLogItemsByFilterText = 1000; diff --git a/TIAMSharedUI/Pages/Formula1.razor b/TIAMSharedUI/Pages/Formula1.razor index d247ed16..e11b0d5e 100644 --- a/TIAMSharedUI/Pages/Formula1.razor +++ b/TIAMSharedUI/Pages/Formula1.razor @@ -9,6 +9,8 @@ @using TIAMSharedUI.Pages.Components; @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels +@using AyCode.Core.Helpers +@using AyCode.Core.Consts @inject NavigationManager NavManager @inject IUserDataService UserDataService; @inject IJSRuntime jsRuntime; @@ -461,10 +463,12 @@ new HeroSliderItem { //if not, create user - Random random = new Random(); - string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; - string password = new string(Enumerable.Repeat(chars, 10) - .Select(s => s[random.Next(s.Length)]).ToArray()); + // Random random = new Random(); + // string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + // string password = new string(Enumerable.Repeat(chars, 10) + // .Select(s => s[random.Next(s.Length)]).ToArray()); + + var password = AcCharGenerator.NewPassword(AcConst.MinPasswordLength, 16); RegistrationModel regModel = new RegistrationModel { diff --git a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor index 268155d6..8c8ef4f8 100644 --- a/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/Drivers/DriverManageTransfers.razor @@ -150,11 +150,15 @@ + @{ + var transfer = ((Transfer)context.DataItem); + } + - + - + diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor index a43ab4bd..52f78fc9 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageCars.razor @@ -10,6 +10,8 @@ @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers +@using AyCode.Core.Helpers +@using AyCode.Core.Consts @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer Localizer @@ -119,11 +121,13 @@ 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()); + // var random = new Random(); + // const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + // var password = new string(Enumerable.Repeat(chars, 10) + // .Select(s => s[random.Next(s.Length)]).ToArray()); + var password = AcCharGenerator.NewPassword(AcConst.MinPasswordLength, 16); + registration.Email = userModelDtoDetail.UserDto.EmailAddress; registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; registration.Password = password; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor index 4426d28f..04b911f2 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransferDestinationToProducts.razor @@ -10,6 +10,8 @@ @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers +@using AyCode.Core.Helpers +@using AyCode.Core.Consts @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer Localizer @@ -100,10 +102,12 @@ 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()); + // var random = new Random(); + // const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + // var password = new string(Enumerable.Repeat(chars, 10) + // .Select(s => s[random.Next(s.Length)]).ToArray()); + + var password = AcCharGenerator.NewPassword(AcConst.MinPasswordLength, 16); registration.Email = userModelDtoDetail.UserDto.EmailAddress; registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor index 1cf46d1b..ec5de225 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUserProductMappings.razor @@ -10,6 +10,8 @@ @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers +@using AyCode.Core.Helpers +@using AyCode.Core.Consts @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer Localizer @@ -119,10 +121,12 @@ 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()); + // var random = new Random(); + // const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + // var password = new string(Enumerable.Repeat(chars, 10) + // .Select(s => s[random.Next(s.Length)]).ToArray()); + + var password = AcCharGenerator.NewPassword(AcConst.MinPasswordLength, 16); registration.Email = userModelDtoDetail.UserDto.EmailAddress; registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor index 3c3af606..fd67ef06 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageUsers.razor @@ -11,12 +11,16 @@ @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers @using AyCode.Core +@using AyCode.Core.Consts +@using AyCode.Core.Helpers +@using TIAMWebApp.Shared.Application.Services @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer Localizer @inject ISessionService SessionService @inject IWizardProcessor WizardProcessor @inject IUserDataService UserDataService +@inject AdminSignalRClient AdminSignalRClient; Users
@@ -185,7 +189,7 @@ MessageWizardModel.ReceiverId = item.Id; MessageWizardModel.ReceiverEmailAddress = item.UserDto.EmailAddress; - MessageWizardModel.SenderId = SessionService.User.UserId; + MessageWizardModel.SenderId = SessionService.User?.UserId ?? throw new NullReferenceException("SessionService.User == null"); MessageWizardModel.SenderEmailAddress = "info@anataworld.com"; // _logger.Info($"Sending mail to {MessageWizardModel.ReceiverEmailAddress} from {MessageWizardModel.SenderId}"); @@ -261,8 +265,6 @@ userEditModel.ServiceProviders = []; userEditModel.UserProductMappings = []; } - - } async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) @@ -274,14 +276,17 @@ 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()); + + // 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.Password = password; + registration.Password = AcCharGenerator.NewPassword(AcConst.MinPasswordLength, 16); registration.ReferralId = null; await UserDataService.CreateGuestUser(registration); @@ -318,7 +323,8 @@ async Task UpdateDataAsync() { //refresh grid - UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); + //UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); + UserData = await AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllUserModelDtoDetails) ?? []; _logger.Info("UserData grid refreshed"); } @@ -326,7 +332,7 @@ { _logger = new LoggerClient(LogWriters.ToArray()); - UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); + await UpdateDataAsync(); base.OnInitialized(); } diff --git a/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor b/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor index 629a257d..cd0b9636 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/TransferToDriverGridComponent.razor @@ -34,15 +34,26 @@ EditMode="GridEditMode.EditRow" ColumnResizeMode="GridColumnResizeMode.NextColumn"> - - + + @{ var userEmailFieldName = $"{nameof(TransferToDriver.UserProductMapping)}.{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}"; var userEmailFieldNameComboItem = $"{nameof(UserProductMapping.User)}.{nameof(User.EmailAddress)}"; var userNameFieldNameComboItem = $"{nameof(UserProductMapping.User)}.{nameof(User.FullName)}"; } - + + + @{ + var email = string.Empty; + var transferToDriverDataItem = ((TransferToDriver)context.DataItem); + + if (HasReadPermission(transferToDriverDataItem.UserProductMappingId)) + email = transferToDriverDataItem.UserProductMapping.User.EmailAddress; + } + @email + @{ var transferToDriverEditModel = (TransferToDriver)context.EditModel; @@ -51,6 +62,7 @@ - + @{ - var transferToDriver = (TransferToDriver)context.DataItem; - @_cars.FirstOrDefault(x => x.Id == transferToDriver.CarId)?.LicencePlate + var transferToDriverDataItem = (TransferToDriver)context.DataItem; + @_cars.FirstOrDefault(x => x.Id == transferToDriverDataItem.CarId)?.LicencePlate } @@ -80,6 +92,7 @@ *@ - + + + @{ + var price = string.Empty; + var transferToDriverDataItem = ((TransferToDriver)context.DataItem); + + if (HasReadPermission(transferToDriverDataItem.UserProductMappingId)) + price = transferToDriverDataItem.Price.ToString("N0"); + } + + @price + + + @* *@ - - + + @code { + /// + /// UserProductMappingId! Not required... + /// + [Parameter] public Guid? DriverId { get; set; } = null; [Parameter] public Guid ContextId { get; set; } [Parameter] public ITransferToDriversRelation ParentData { get; set; } = null!; [Parameter] public EventCallback OnTransferToDriverChanged { get; set; } + [Parameter] public bool CommandColumnVisible { get; set; } = true; + [Parameter] public bool NewButtonVisible { get; set; } = true; + [Parameter] public bool EditButtonVisible { get; set; } = true; + [Parameter] public bool DeleteButtonVisible { get; set; } = true; + + private bool _hasEditPermission = true; + private bool HasReadPermission(Guid userProductMappingId) => DriverId.IsNullOrEmpty() || DriverId == userProductMappingId; + private TransferToDriversDetailGrid _transferToDriversGrid = null!; private LoggerClient _logger = null!; @@ -161,6 +199,7 @@ void CustomizeEditModel(GridCustomizeEditModelEventArgs e) { + _hasEditPermission = HasReadPermission(((TransferToDriver)e.DataItem).UserProductMappingId); if (!e.IsNew) return; var newDriver = (TransferToDriver)e.EditModel; diff --git a/TIAMWebApp/Client/Services/WizardProcessor.cs b/TIAMWebApp/Client/Services/WizardProcessor.cs index 20a3e960..5d1e99b0 100644 --- a/TIAMWebApp/Client/Services/WizardProcessor.cs +++ b/TIAMWebApp/Client/Services/WizardProcessor.cs @@ -25,22 +25,22 @@ namespace TIAMWebApp.Client.Services { switch (type.Name) { - case "TransferDestinationWizardModel": + case nameof(TransferDestinationWizardModel): var result = await TransferDataService.CreateTransferDestination((TransferDestination)data); return result as TModelType; - case "TransferWizardModel": + case nameof(TransferWizardModel): Console.WriteLine(@"TransferWizardModel"); var transferResult = await TransferDataService.CreateTransfer((TransferWizardModel)data); return transferResult as TModelType; - case "MessageWizardModel": + case nameof(MessageWizardModel): EmailMessage emailMessage = ((MessageWizardModel)data).CopyToEmailMessage(); var messageResult = await MessageSenderService.SendNoticeAsync(emailMessage, 1); return messageResult as TModelType; - case "ServiceProvider": - return null; + //case nameof(ServiceProvider): + // return null; default: return null; } diff --git a/TIAMWebApp/Server/Controllers/UserAPIController.cs b/TIAMWebApp/Server/Controllers/UserAPIController.cs index cac6ddca..e1cf5dbc 100644 --- a/TIAMWebApp/Server/Controllers/UserAPIController.cs +++ b/TIAMWebApp/Server/Controllers/UserAPIController.cs @@ -289,10 +289,10 @@ namespace TIAMWebApp.Server.Controllers if (user != null) { - var random = new Random(); - var chars = "1234567890"; - var nameExtension = new string(Enumerable.Repeat(chars, 10) - .Select(s => s[random.Next(s.Length)]).ToArray()); + //var random = new Random(); + //var chars = "1234567890"; + //var nameExtension = new string(Enumerable.Repeat(chars, 10) + // .Select(s => s[random.Next(s.Length)]).ToArray()); var userId = Guid.NewGuid(); @@ -348,22 +348,23 @@ namespace TIAMWebApp.Server.Controllers [AllowAnonymous] [HttpGet] [Route("GetUsers")] - public Task> GetUsers() + public async Task> GetUsers() { //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return userDal.GetAllUserModelDtoAsync(); + return await userDal.GetAllUserModelDtoAsync(); } [AllowAnonymous] [HttpGet] [Route(APIUrls.GetUsersWithDetailsRouteName)] - public Task> GetUsersWithDetails() + [SignalR(SignalRTags.GetAllUserModelDtoDetails)] + public async Task> GetUsersWithDetails() { _logger.Info("GetUsersWithDetails called"); - //var users = await _userDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); - //return users; - return userDal.GetAllUserModelDtoAsync(); + + var users = await userDal.GetAllUserModelDtoAsync(); + return users; } [NonAction] @@ -388,15 +389,15 @@ namespace TIAMWebApp.Server.Controllers public async Task? GetUserByEmail(string email) { _logger.Info($"GetUserByEmail called with email: {email}"); - var result = userDal.GetUserModelDtoByEmailAsync(email, false); - if (result.Result == null) + var result = await userDal.GetUserModelDtoByEmailAsync(email, false); + if (result == null) { UserModelDto resultDto = new UserModelDto(); return resultDto; } else { - return result.Result; + return result; } } @@ -404,10 +405,10 @@ namespace TIAMWebApp.Server.Controllers [AllowAnonymous] [HttpPost] [Route("GetUserById")] - public Task GetUserById([FromBody] Guid id) + public async Task GetUserById([FromBody] Guid id) { _logger.Info($"GetUserById called with id: {id}"); - return userDal.GetUserModelDtoByIdAsync(id, true); + return await userDal.GetUserModelDtoByIdAsync(id, true); } [AllowAnonymous]