@page "/authorities/{authorityId}/{oldEmail}"
@using BlazorWebAssemblyVisaApiClient.Common.Exceptions
@using BlazorWebAssemblyVisaApiClient.Components
@using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers
@using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider
@using FluentValidation
@using VisaApiClient
@inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase
    
        
        
        
        
     
@code
{
    private Status status = null!;
    private ChangeAuthData model = new();
    [Parameter] public string AuthorityId { get; set; } = null!;
    [Parameter] public string OldEmail { get; set; } = null!;
    [Inject] private IUserDataProvider UserDataProvider { get; set; } = null!;
    [Inject] private IValidator ChangeUserAuthDataRequestValidator { get; set; } = null!;
    protected override void OnInitialized()
    {
        try
        {
            if (UserDataProvider.CurrentRole is not Constants.AdminRole)
            {
                throw new NotLoggedInException();
            }
            model.Email = OldEmail;
        }
        catch (Exception e)
        {
            ErrorHandler.Handle(e);
        }
    }
    private async Task Save()
    {
        var request = new ChangeUserAuthDataRequest
        {
            UserId = Guid.Parse(AuthorityId),
            NewAuthData = model
        };
        var validationResult = await ChangeUserAuthDataRequestValidator.ValidateAsync(request);
        if (!validationResult.IsValid)
        {
            status.SetError(validationResult.ToErrorsString());
            return;
        }
        try
        {
            status.SetMessage("Wait...");
            await Client.ChangeAuthorityAuthDataAsync(request);
            status.SetSuccess("Success");
        }
        catch (Exception e)
        {
            ErrorHandler.Handle(e);
        }
    }
}