73 lines
2.0 KiB
Plaintext
73 lines
2.0 KiB
Plaintext
@page "/"
|
|
@inherits Fluxor.Blazor.Web.Components.FluxorComponent
|
|
@inject Fluxor.IDispatcher Dispatcher
|
|
@inject Fluxor.IState<Wollmilchsau.Store.AdminStore.AdminState> AdminState
|
|
@inject IJSRuntime JsRuntime
|
|
|
|
<PageTitle>LDAP Users</PageTitle>
|
|
|
|
<button class="btn btn-primary" @onclick="DownloadCsvAsync" disabled="@(!Users.Any())">Export CSV</button>
|
|
|
|
<h1>LDAP Users</h1>
|
|
|
|
@if (!AdminState.Value.LdapUsersLoaded)
|
|
{
|
|
<p><em>Loading users...</em></p>
|
|
}
|
|
else if (!Users.Any())
|
|
{
|
|
<p>No LDAP users found.</p>
|
|
}
|
|
else
|
|
{
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Username</th>
|
|
<th>Surname</th>
|
|
<th>Classroom</th>
|
|
<th>Given name</th>
|
|
<th>Incomplete</th>
|
|
<th>Role</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var user in Users)
|
|
{
|
|
<tr>
|
|
<td>@user.Username</td>
|
|
<td>@user.Surname</td>
|
|
<td>@user.Classroom</td>
|
|
<td>@user.GivenName</td>
|
|
<td>@user.Incomplete</td>
|
|
<td>@user.Role</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
}
|
|
|
|
@code {
|
|
private IEnumerable<Wollmilchsau.Models.LdapUser> Users => AdminState.Value.LdapUsers.Values;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
Dispatcher.Dispatch(new Wollmilchsau.Store.AdminStore.GetAllLdapUsers());
|
|
Dispatcher.Dispatch(new Wollmilchsau.Store.AdminStore.GetAllClassrooms());
|
|
}
|
|
|
|
private Task DownloadCsvAsync()
|
|
{
|
|
var csv = string.Join("\r\n", Users
|
|
.Where(user => user.Role == Wollmilchsau.Models.LdapUserRole.Student)
|
|
.Select(user => string.Join(';',
|
|
user.GivenName ?? string.Empty,
|
|
user.Surname ?? string.Empty,
|
|
user.Classroom ?? string.Empty,
|
|
user.Username)));
|
|
|
|
return JsRuntime.InvokeVoidAsync("downloadTextFile", "ldap-users.csv", csv).AsTask();
|
|
}
|
|
}
|