@page "/user/users" @using BlazorAnimation @using TIAM.Core.Enums @using TIAM.Entities.Products @using TIAM.Entities.ServiceProviders @using TIAM.Entities.Transfers @using TIAM.Entities.Users @using TIAM.Models.Dtos.Profiles @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 @using TIAMWebApp.Shared.Application.Models.ClientSide.UI @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Models.ClientSide.Messages @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Core.Loggers @using AyCode.Services.Loggers @using TIAM.Core.Loggers @using TIAM.Entities.Addresses @using TIAMSharedUI.Shared.Components.Grids @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer Localizer @inject ISessionService SessionService @inject IWizardProcessor WizardProcessor @inject IUserDataService UserDataService Transfers

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") @EditFormContext.GetEditor("Profile.FirstName") @EditFormContext.GetEditor("Profile.LastName")
@code { private LoggerClient _logger; //public UserModelDtoDetail UserModelDtoDetail = new(); public List UserData { get; set; } bool PopupVisible { get; set; } IGrid Grid { get; set; } //object? MasterGridData { get; set; } bool AutoCollapseDetailRow { get; set; } public List IgnoreList = [ "ReceiverEmailAddress", "ReceiverId", "SenderEmailAddress", "SenderId", "ContextId" ]; public MessageWizardModel MessageWizardModel = new MessageWizardModel(); async void SendMail(UserModelDtoDetail item) { var user = await UserDataService.GetUserDetailByIdAsync(item.Id); _logger.Info($"Sending mail to {user.UserDto.EmailAddress}"); MessageWizardModel.ReceiverId = user.Id; MessageWizardModel.ReceiverEmailAddress = user.UserDto.EmailAddress; MessageWizardModel.SenderId = SessionService.User.UserId; MessageWizardModel.SenderEmailAddress = SessionService.User.Email; _logger.Info($"Sending mail to {MessageWizardModel.ReceiverEmailAddress} from {MessageWizardModel.SenderId}"); PopupVisible = true; } void CancelCreateClick() { PopupVisible = false; } void EulaPopupClosed() { //cancel clicked } void EulaPopupClosing(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) 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 UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); _logger.Info("orderData grid refreshed"); } protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); UserData = (await UserDataService.GetUsersWithDetailsAsync()).OrderBy(x => x.ProfileDto?.Name).ToList(); base.OnInitialized(); } void ColumnChooserButton_Click() { Grid.ShowColumnChooser(); } protected override void OnAfterRender(bool firstRender) { if (firstRender) { Grid.ExpandDetailRow(0); } } void AutoCollapseDetailRow_Changed(bool newValue) { AutoCollapseDetailRow = newValue; if (!newValue) return; Grid.BeginUpdate(); Grid.CollapseAllDetailRows(); Grid.ExpandDetailRow(0); Grid.EndUpdate(); } }