* Managed API to handle User maintenance
* Managed Users view in application
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
@page "/admin/UsersManager"
|
||||
@using OrdersManagementDataModel.Dtos
|
||||
@using Syncfusion.Blazor.Grids
|
||||
@using Action = Syncfusion.Blazor.Grids.Action
|
||||
@* @inject UserService UserService *@
|
||||
@* @inject RoleService RoleService *@
|
||||
@* @inject FunctionService FunctionService *@
|
||||
|
||||
<h3>Zarządzanie Użytkownikami i Rolami</h3>
|
||||
<br />
|
||||
|
||||
<!-- Grid dla użytkowników -->
|
||||
<h4>Użytkownicy</h4>
|
||||
<SfGrid DataSource="@UserList" AllowPaging="true" ShowColumnMenu="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(UserDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.Login)" HeaderText="Login" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.Email)" HeaderText="Email" Width="150"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.FirstName)" HeaderText="Imię" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.LastName)" HeaderText="Nazwisko" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.IsActive)" HeaderText="Aktywny" Width="80"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.CreatedDate)" HeaderText="Utworzono" Format="d" Width="120"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true" Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="UserActionBegin" OnActionComplete="UserActionComplete" TValue="UserDto"></GridEvents>
|
||||
</SfGrid>
|
||||
<br />
|
||||
|
||||
<!-- Grid dla ról -->
|
||||
<h4>Role</h4>
|
||||
<SfGrid DataSource="@Roles" AllowPaging="true" ShowColumnMenu="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(RoleDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(RoleDto.Name)" HeaderText="Nazwa" Width="150"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true" Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="RoleActionBegin" OnActionComplete="RoleActionComplete" TValue="RoleDto"></GridEvents>
|
||||
</SfGrid>
|
||||
<br />
|
||||
|
||||
<!-- Grid dla funkcji -->
|
||||
<h4>Funkcje</h4>
|
||||
<SfGrid DataSource="@Functions" AllowPaging="true" ShowColumnMenu="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(FunctionDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(FunctionDto.RoleId)" HeaderText="ID Roli" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(FunctionDto.Name)" HeaderText="Nazwa Funkcji" Width="200"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true" Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="FunctionActionBegin" OnActionComplete="FunctionActionComplete" TValue="FunctionDto"></GridEvents>
|
||||
</SfGrid>
|
||||
|
||||
@code {
|
||||
private List<UserDto> UserList { get; set; } = new();
|
||||
private List<RoleDto> Roles { get; set; } = new();
|
||||
private List<FunctionDto> Functions { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadUsers();
|
||||
await LoadRoles();
|
||||
await LoadFunctions();
|
||||
}
|
||||
|
||||
// Użytkownicy
|
||||
private async Task UserActionBegin(ActionEventArgs<UserDto> args)
|
||||
{
|
||||
// if (args.RequestType.Equals(Action.Delete))
|
||||
// {
|
||||
// await UserService.DeleteUserAsync(args.Data.Id);
|
||||
// }
|
||||
// else if (args.RequestType.Equals(Action.Add))
|
||||
// {
|
||||
// args.Data.RowPointer = Guid.NewGuid();
|
||||
// }
|
||||
}
|
||||
|
||||
private async Task UserActionComplete(ActionEventArgs<UserDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
case Action.Save:
|
||||
await LoadUsers();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadUsers()
|
||||
{
|
||||
//Users = (await UserService.GetUsersAsync() ?? Array.Empty<UserDto>()).ToList();
|
||||
}
|
||||
|
||||
// Role
|
||||
private async Task RoleActionBegin(ActionEventArgs<RoleDto> args)
|
||||
{
|
||||
// if (args.RequestType.Equals(Action.Delete))
|
||||
// {
|
||||
// await RoleService.DeleteRoleAsync(args.Data.Id);
|
||||
// }
|
||||
// else if (args.RequestType.Equals(Action.Add))
|
||||
// {
|
||||
// args.Data.RowPointer = Guid.NewGuid();
|
||||
// }
|
||||
}
|
||||
|
||||
private async Task RoleActionComplete(ActionEventArgs<RoleDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
case Action.Save:
|
||||
await LoadRoles();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadRoles()
|
||||
{
|
||||
//Roles = (await RoleService.GetRolesAsync() ?? Array.Empty<RoleDto>()).ToList();
|
||||
}
|
||||
|
||||
// Funkcje
|
||||
private async Task FunctionActionBegin(ActionEventArgs<FunctionDto> args)
|
||||
{
|
||||
if (args.RequestType.Equals(Action.Delete))
|
||||
{
|
||||
//await FunctionService.DeleteFunctionAsync(args.Data.Id);
|
||||
}
|
||||
else if (args.RequestType.Equals(Action.Add))
|
||||
{
|
||||
args.Data.RowPointer = Guid.NewGuid();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task FunctionActionComplete(ActionEventArgs<FunctionDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
case Action.Save:
|
||||
await LoadFunctions();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadFunctions()
|
||||
{
|
||||
//Functions = (await FunctionService.GetFunctionsAsync() ?? Array.Empty<FunctionDto>()).ToList();
|
||||
}
|
||||
}
|
||||
173
OrdersManagement/Components/Pages/Admin/UsersManager.razor
Normal file
173
OrdersManagement/Components/Pages/Admin/UsersManager.razor
Normal file
@@ -0,0 +1,173 @@
|
||||
@page "/admin/UsersManager"
|
||||
|
||||
@using OrdersManagementDataModel.Dtos
|
||||
@using Syncfusion.Blazor.Grids
|
||||
@using Action = Syncfusion.Blazor.Grids.Action
|
||||
@using UserService = OrdersManagement.Services.UserService
|
||||
@inject UserService UserService
|
||||
@inject RoleService RoleService
|
||||
@inject FunctionService FunctionService
|
||||
|
||||
<div class="h-100 d-flex flex-column">
|
||||
<h5>Użytkownicy</h5>
|
||||
<SfGrid DataSource="@UserList" AllowPaging="true" ShowColumnMenu="true"
|
||||
Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(UserDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.Login)" HeaderText="Login" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.Email)" HeaderText="Email" Width="150"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.FirstName)" HeaderText="Imię" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.LastName)" HeaderText="Nazwisko" Width="100"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.IsActive)" HeaderText="Aktywny" Width="80"></GridColumn>
|
||||
<GridColumn Field="@nameof(UserDto.CreatedDate)" HeaderText="Utworzono" Format="d" Width="120"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true"
|
||||
Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="UserActionBegin" OnActionComplete="UserActionComplete" TValue="UserDto"></GridEvents>
|
||||
</SfGrid>§
|
||||
<br/>
|
||||
<h5>Role</h5>
|
||||
<SfGrid DataSource="@Roles" AllowPaging="true" ShowColumnMenu="true"
|
||||
Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(RoleDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(RoleDto.Name)" HeaderText="Nazwa" Width="150"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true"
|
||||
Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="RoleActionBegin" OnActionComplete="RoleActionComplete" TValue="RoleDto"></GridEvents>
|
||||
</SfGrid>
|
||||
<br/>
|
||||
<h5>Funkcje</h5>
|
||||
<SfGrid DataSource="@Functions" AllowPaging="true" ShowColumnMenu="true"
|
||||
Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
|
||||
<GridColumns>
|
||||
<GridColumn Field="@nameof(FunctionDto.Id)" IsPrimaryKey="true" HeaderText="ID" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(FunctionDto.RoleId)" HeaderText="ID Roli" Width="70"></GridColumn>
|
||||
<GridColumn Field="@nameof(FunctionDto.Name)" HeaderText="Nazwa Funkcji" Width="200"></GridColumn>
|
||||
</GridColumns>
|
||||
<GridEditSettings AllowDeleting="true" ShowDeleteConfirmDialog="true" AllowAdding="true" AllowEditing="true"
|
||||
Mode="EditMode.Normal"></GridEditSettings>
|
||||
<GridEvents OnActionBegin="FunctionActionBegin" OnActionComplete="FunctionActionComplete"
|
||||
TValue="FunctionDto"></GridEvents>
|
||||
</SfGrid>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private List<UserDto> UserList { get; set; } = new();
|
||||
private List<RoleDto> Roles { get; set; } = new();
|
||||
private List<FunctionDto> Functions { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadUsers();
|
||||
await LoadRoles();
|
||||
await LoadFunctions();
|
||||
}
|
||||
|
||||
private async Task LoadUsers()
|
||||
{
|
||||
UserList = (await UserService.GetUsersAsync() ?? Array.Empty<UserDto>()).ToList();
|
||||
}
|
||||
|
||||
private async Task LoadRoles()
|
||||
{
|
||||
Roles = (await RoleService.GetRolesAsync() ?? Array.Empty<RoleDto>()).ToList();
|
||||
}
|
||||
|
||||
private async Task LoadFunctions()
|
||||
{
|
||||
Functions = (await FunctionService.GetFunctionsAsync() ?? Array.Empty<FunctionDto>()).ToList();
|
||||
}
|
||||
|
||||
private async Task UserActionBegin(ActionEventArgs<UserDto> args)
|
||||
{
|
||||
if (args.RequestType.Equals(Action.Delete))
|
||||
{
|
||||
await UserService.DeleteUserAsync(args.Data.RowPointer);
|
||||
}
|
||||
else if (args.RequestType.Equals(Action.Add))
|
||||
{
|
||||
args.Data.RowPointer = Guid.NewGuid();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task UserActionComplete(ActionEventArgs<UserDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
await LoadUsers();
|
||||
break;
|
||||
case Action.Add:
|
||||
await UserService.AddUserAsync(args.Data);
|
||||
await LoadUsers();
|
||||
break;
|
||||
case Action.Save:
|
||||
await UserService.UpdateUserAsync(args.Data);
|
||||
await LoadUsers();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RoleActionBegin(ActionEventArgs<RoleDto> args)
|
||||
{
|
||||
if (args.RequestType.Equals(Action.Delete))
|
||||
{
|
||||
await RoleService.DeleteRoleAsync(args.Data.RowPointer);
|
||||
}
|
||||
else if (args.RequestType.Equals(Action.Add))
|
||||
{
|
||||
args.Data.RowPointer = Guid.NewGuid();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RoleActionComplete(ActionEventArgs<RoleDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
await LoadRoles();
|
||||
break;
|
||||
case Action.Add:
|
||||
await RoleService.AddRoleAsync(args.Data);
|
||||
await LoadRoles();
|
||||
break;
|
||||
case Action.Save:
|
||||
await RoleService.UpdateRoleAsync(args.Data);
|
||||
await LoadRoles();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task FunctionActionBegin(ActionEventArgs<FunctionDto> args)
|
||||
{
|
||||
if (args.RequestType.Equals(Action.Delete))
|
||||
{
|
||||
await FunctionService.DeleteFunctionAsync(args.Data.RowPointer);
|
||||
}
|
||||
else if (args.RequestType.Equals(Action.Add))
|
||||
{
|
||||
args.Data.RowPointer = Guid.NewGuid();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task FunctionActionComplete(ActionEventArgs<FunctionDto> args)
|
||||
{
|
||||
switch (args.RequestType)
|
||||
{
|
||||
case Action.Delete:
|
||||
await LoadFunctions();
|
||||
break;
|
||||
case Action.Add:
|
||||
await FunctionService.AddFunctionAsync(args.Data);
|
||||
await LoadFunctions();
|
||||
break;
|
||||
case Action.Save:
|
||||
await FunctionService.UpdateFunctionAsync(args.Data);
|
||||
await LoadFunctions();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,6 +20,9 @@ builder.Services.AddScoped<ScheduleOrderDetailsService>();
|
||||
builder.Services.AddScoped<EdiCustomerOrderService>();
|
||||
builder.Services.AddScoped<CustomerOrderService>();
|
||||
builder.Services.AddScoped<HangfireService>();
|
||||
builder.Services.AddScoped<UserService>();
|
||||
builder.Services.AddScoped<RoleService>();
|
||||
builder.Services.AddScoped<FunctionService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
36
OrdersManagement/Services/FunctionService.cs
Normal file
36
OrdersManagement/Services/FunctionService.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using OrdersManagementDataModel.Dtos;
|
||||
|
||||
namespace OrdersManagement.Services;
|
||||
|
||||
public class FunctionService(HttpClient httpClient)
|
||||
{
|
||||
public async Task<IEnumerable<FunctionDto>?> GetFunctionsAsync()
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<IEnumerable<FunctionDto>>("api/Functions");
|
||||
}
|
||||
|
||||
public async Task<FunctionDto?> GetFunctionAsync(Guid functionId)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<FunctionDto>($"api/Functions/by-id/?id={functionId}");
|
||||
}
|
||||
|
||||
public async Task<FunctionDto?> GetFunctionByNameAsync(string functionName)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<FunctionDto>($"api/Functions/by-name/?name={functionName}");
|
||||
}
|
||||
|
||||
public async Task AddFunctionAsync(FunctionDto function)
|
||||
{
|
||||
await httpClient.PostAsJsonAsync("api/Functions", function);
|
||||
}
|
||||
|
||||
public async Task UpdateFunctionAsync(FunctionDto function)
|
||||
{
|
||||
await httpClient.PutAsJsonAsync("api/Functions", function);
|
||||
}
|
||||
|
||||
public async Task DeleteFunctionAsync(Guid functionId)
|
||||
{
|
||||
await httpClient.DeleteAsync($"api/Functions/?id={functionId}");
|
||||
}
|
||||
}
|
||||
41
OrdersManagement/Services/RoleService.cs
Normal file
41
OrdersManagement/Services/RoleService.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using OrdersManagementDataModel.Dtos;
|
||||
|
||||
namespace OrdersManagement.Services;
|
||||
|
||||
public class RoleService(HttpClient httpClient)
|
||||
{
|
||||
public async Task<IEnumerable<RoleDto>?> GetRolesAsync()
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<IEnumerable<RoleDto>>("api/Roles");
|
||||
}
|
||||
|
||||
public async Task<RoleDto?> GetRoleAsync(Guid roleId)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<RoleDto>($"api/Roles/by-id/?id={roleId}");
|
||||
}
|
||||
|
||||
public async Task<RoleDto?> GetRoleByNameAsync(string roleName)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<RoleDto>($"api/Roles/by-name/?name={roleName}");
|
||||
}
|
||||
|
||||
public async Task AddRoleAsync(RoleDto role)
|
||||
{
|
||||
await httpClient.PostAsJsonAsync("api/Roles", role);
|
||||
}
|
||||
|
||||
public async Task UpdateRoleAsync(RoleDto role)
|
||||
{
|
||||
await httpClient.PutAsJsonAsync("api/Roles", role);
|
||||
}
|
||||
|
||||
public async Task DeleteRoleAsync(Guid roleId)
|
||||
{
|
||||
await httpClient.DeleteAsync($"api/Roles/?id={roleId}");
|
||||
}
|
||||
|
||||
// public async Task<IEnumerable<UserDto>?> GetUsersInRoleAsync(Guid roleId)
|
||||
// {
|
||||
// return await httpClient.GetFromJsonAsync<IEnumerable<UserDto>>($"api/Roles/{roleId}/Users");
|
||||
// }
|
||||
}
|
||||
36
OrdersManagement/Services/UserService.cs
Normal file
36
OrdersManagement/Services/UserService.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using OrdersManagementDataModel.Dtos;
|
||||
|
||||
namespace OrdersManagement.Services;
|
||||
|
||||
public class UserService(HttpClient httpClient)
|
||||
{
|
||||
public async Task<IEnumerable<UserDto>?> GetUsersAsync()
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<IEnumerable<UserDto>>("api/Users");
|
||||
}
|
||||
|
||||
public async Task<UserDto?> GetUserAsync(Guid userId)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<UserDto>($"api/Users/by-id/?id={userId}");
|
||||
}
|
||||
|
||||
public async Task<UserDto?> GetUserByUsernameAsync(string username)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<UserDto>($"api/Users/by-username/?username={username}");
|
||||
}
|
||||
|
||||
public async Task AddUserAsync(UserDto user)
|
||||
{
|
||||
await httpClient.PostAsJsonAsync("api/Users", user);
|
||||
}
|
||||
|
||||
public async Task UpdateUserAsync(UserDto user)
|
||||
{
|
||||
await httpClient.PutAsJsonAsync("api/Users", user);
|
||||
}
|
||||
|
||||
public async Task DeleteUserAsync(Guid userId)
|
||||
{
|
||||
await httpClient.DeleteAsync($"api/Users/?id={userId}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user