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