@page "/sysadmin/users" @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 @using AyCode.Core @using AyCode.Core.Consts @using AyCode.Core.Extensions @using AyCode.Core.Helpers @using TIAMWebApp.Shared.Application.Services @using TIAMSharedUI.Shared.Components.BaseComponents @inherits BasePageComponent @layout AdminLayout @inject IStringLocalizer Localizer @inject IWizardProcessor WizardProcessor @inject IUserDataService UserDataService @inject AdminSignalRClient AdminSignalRClient; Users

User management

Manage transfers here!

@{ var keyField = context.Value; var keyItem = (UserModelDtoDetail)context.DataItem; var buttonText = "Contact"; } @{ var transfer2 = (UserModelDtoDetail)editFormContext.EditModel; } @editFormContext.GetEditor("UserDto.EmailAddress") @editFormContext.GetEditor("UserDto.EmailConfirmed") @editFormContext.GetEditor("UserDto.PhoneNumber")
@code { private LoggerClient _logger; //public UserModelDtoDetail UserModelDtoDetail = new(); public List UserData { get; set; } = null!; bool PopupVisible { get; set; } = false; IGrid Grid { get; set; } //object? MasterGridData { get; set; } public List IgnoreList = [ "ReceiverEmailAddress", "ReceiverFullName", "ReceiverId", "SenderEmailAddress", "SenderFullName", "SenderId", "ContextId" ]; public MessageWizardModel MessageWizardModel = new MessageWizardModel(); async Task SendMail(UserModelDtoDetail item) { //var bela = item; //var user = await UserDataService.GetUserDetailByIdAsync(item.Id); _logger.Info($"Sending mail to {item.UserDto.EmailAddress}"); MessageWizardModel.ReceiverId = item.Id; MessageWizardModel.ReceiverEmailAddress = item.UserDto.EmailAddress; 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}"); PopupVisible = true; } void CancelCreateClick() { PopupVisible = false; } void EmailPopupClosed() { //cancel clicked } void EmailPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); MessageWizardModel = new MessageWizardModel(); } //----------------------------------------------------------------------------------- public async Task SubmitForm(object result) { var email = await WizardProcessor.ProcessWizardAsync(result.GetType(), result); _logger.Info($"Submitted nested form: {result.GetType().FullName}"); } 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) { //var result = (UserModelDtoDetail)e.DataItem; e.EditModel = e.DataItem; _logger.Debug($"kfldsfjklkj {((UserModelDtoDetail)e.EditModel).Id.ToString()}"); } else { 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) { UserModelDtoDetail? userModelDtoDetail = null!; var userModelDtoDetailEditModel = ((UserModelDtoDetail)e.EditModel); if (e.IsNew) { var registration = new RegistrationModel(); //TODO: Refractor to userDataService registration.Email = userModelDtoDetailEditModel.UserDto.EmailAddress; registration.PhoneNumber = userModelDtoDetailEditModel.UserDto.PhoneNumber; //registration.Password = password; registration.Password = AcCharsGenerator.NewPassword(AcConst.MinPasswordLength, 16); registration.ReferralId = null; _logger.Info($"New user creating; Email: {registration.Email}"); await UserDataService.CreateGuestUser(registration); return; //userModelDtoDetail = await AdminSignalRClient.PostDataAsync(SignalRTags.AddUserModelDtoDetail, userModelDtoDetailEditModel); } else { _logger.Info($"UserData updating; id: {userModelDtoDetailEditModel.Id}; email: {userModelDtoDetailEditModel.UserDto.EmailAddress}"); userModelDtoDetail = await AdminSignalRClient.UpdateUserModelDtoDetail(userModelDtoDetailEditModel); } if (userModelDtoDetail == null) return; UserData.UpdateCollection(userModelDtoDetail, false); } Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) { _logger.Info("UserData deleted"); return Task.CompletedTask; } async Task UpdateDataAsync() { //refresh grid //UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); UserData = await AdminSignalRClient.GetAllAsync>(SignalRTags.GetAllUserModelDtoDetails) ?? []; _logger.Info("UserData grid refreshed"); } protected override async Task OnInitializedAsync() { _logger = new LoggerClient(_logWriters.ToArray()); await UpdateDataAsync(); base.OnInitialized(); } void ColumnChooserButton_Click() { Grid.ShowColumnChooser(); } protected override void OnAfterRender(bool firstRender) { if (firstRender) { Grid.ExpandDetailRow(0); } } }