diff --git a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Layout/NavMenu.razor b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Layout/NavMenu.razor
index 13e3575..e908e97 100644
--- a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Layout/NavMenu.razor
+++ b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Layout/NavMenu.razor
@@ -46,6 +46,16 @@
}
+ @if (UserDataProvider.CurrentRole is Constants.AdminRole)
+ {
+
+ }
@code {
diff --git a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/AddAuthority.razor b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/AddAuthority.razor
new file mode 100644
index 0000000..88a0972
--- /dev/null
+++ b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/AddAuthority.razor
@@ -0,0 +1,60 @@
+@page "/authorities/add"
+@using AutoMapper
+@using BlazorWebAssemblyVisaApiClient.Validation.Applicants.Models
+@using VisaApiClient
+@using BlazorWebAssemblyVisaApiClient.Components
+@using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers
+@using FluentValidation
+@inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code
+{
+ private RegisterRequestModel requestModel = new();
+ private Status status = new();
+
+ [Inject] private IValidator RegisterRequestModelValidator { get; set; } = null!;
+ [Inject] private IMapper Mapper { get; set; } = null!;
+
+ private async Task Add()
+ {
+ var validationResult = await RegisterRequestModelValidator.ValidateAsync(requestModel);
+ if (!validationResult.IsValid)
+ {
+ status.SetError(validationResult.ToErrorsString());
+ return;
+ }
+
+ try
+ {
+ status.SetMessage("Wait...");
+ await Client.RegisterAuthorityAsync(Mapper.Map(requestModel));
+ status.SetSuccess("Success");
+ }
+ catch (Exception e)
+ {
+ ErrorHandler.Handle(e);
+ }
+ }
+}
diff --git a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/Authorities.razor b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/Authorities.razor
index 776fca3..f238cd8 100644
--- a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/Authorities.razor
+++ b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/Authorities.razor
@@ -18,6 +18,8 @@
+ |
+
}
@@ -25,13 +27,27 @@
@code {
- private IEnumerable authorities = [];
+ private List authorities = [];
protected override async Task OnInitializedAsync()
{
try
{
- authorities = await Client.GetAuthorityAccountsAsync();
+ authorities = (await Client.GetAuthorityAccountsAsync()).ToList();
+ }
+ catch (Exception e)
+ {
+ ErrorHandler.Handle(e);
+ }
+ }
+
+ private async Task Delete(UserModel authority)
+ {
+ try
+ {
+ await Client.RemoveAuthorityAccountAsync(authority.Id);
+ authorities.Remove(authority);
+ StateHasChanged();
}
catch (Exception e)
{
diff --git a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestValidator.cs b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestModelValidator.cs
similarity index 63%
rename from SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestValidator.cs
rename to SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestModelValidator.cs
index 337adcf..5554e26 100644
--- a/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestValidator.cs
+++ b/SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/RegisterRequestModelValidator.cs
@@ -4,9 +4,9 @@ using VisaApiClient;
namespace BlazorWebAssemblyVisaApiClient.Validation.Auth;
-public class RegisterRequestValidator : AbstractValidator
+public class RegisterRequestModelValidator : AbstractValidator
{
- public RegisterRequestValidator(IValidator authDataValidator)
+ public RegisterRequestModelValidator(IValidator authDataValidator)
{
RuleFor(r => r.AuthData)
.NotEmpty()