From e087cb47a6a88c55b70d0dea5205e108487c7d7f Mon Sep 17 00:00:00 2001 From: prtsie Date: Thu, 12 Sep 2024 22:13:53 +0300 Subject: [PATCH] Authority adding --- .../Layout/NavMenu.razor | 10 ++++ .../Pages/AddAuthority.razor | 60 +++++++++++++++++++ .../Pages/Authorities.razor | 20 ++++++- ...or.cs => RegisterRequestModelValidator.cs} | 4 +- 4 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Pages/AddAuthority.razor rename SchengenVisaApi/BlazorWebAssemblyVisaApiClient/Validation/Auth/{RegisterRequestValidator.cs => RegisterRequestModelValidator.cs} (63%) 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()