@page "/register"
@using System.Net
@using System.Text
@using AutoMapper
@using VisaApiClient
@using BlazorWebAssemblyVisaApiClient.Components.FormComponents.Applicants
@using BlazorWebAssemblyVisaApiClient.FluentValidation.Applicants.Models
@using BlazorWebAssemblyVisaApiClient.Infrastructure.Services
@using global::FluentValidation
@using Newtonsoft.Json
@using Newtonsoft.Json.Linq
@using BlazorWebAssemblyVisaApiClient.Components
@inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase
Registration
Registration data
Your Fullname
Fullname of your mother
Fullname of your father
@code
{
private RegisterApplicantRequestModel requestModel = new();
private Status status = null!;
[Inject] IValidator RegisterApplicantRequestValidator { get; set; } = null!;
[Inject] IMapper Mapper { get; set; } = null!;
[Inject] IDateTimeProvider DateTimeProvider { get; set; } = null!;
protected override void OnInitialized()
{
requestModel.BirthDate = DateTime.Now;
}
private string ErrorsToString(IEnumerable errors)
{
var stringBuilder = new StringBuilder();
foreach (var error in errors)
{
stringBuilder.Append($"{error}
");
}
return stringBuilder.ToString();
}
private async void TryRegisterApplicant()
{
var validationResult = await RegisterApplicantRequestValidator.ValidateAsync(requestModel);
if (!validationResult.IsValid)
{
var errorsString = ErrorsToString(validationResult.Errors.Select(e => e.ErrorMessage));
status.SetError(errorsString);
return;
}
status.SetMessage("Wait...");
var request = Mapper.Map(requestModel);
try
{
await Client.RegisterAsync(request);
status.SetSucces("Register successful. Now log in.");
}
catch (ApiException e)
{
if (e.StatusCode == (int)HttpStatusCode.BadRequest
&& e.Result.AdditionalProperties.TryGetValue("errors", out var errors))
{
var errorsList = ((JArray)errors).ToObject>();
if (errorsList is null)
{
ErrorHandler.Handle(new JsonException("Can't convert validation errors to list"));
return;
}
status.SetError(ErrorsToString(errorsList));
}
else
{
ErrorHandler.Handle(e);
}
}
catch (Exception e)
{
ErrorHandler.Handle(e);
}
}
}