@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 UserBasePageComponent
@layout AdminLayout
@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);
}
}
}