@page "/register" @using System.Net @using System.Text @using AutoMapper @using VisaApiClient @using BlazorWebAssemblyVisaApiClient.Components.FormComponents.Applicants @using global::FluentValidation @using Newtonsoft.Json @using Newtonsoft.Json.Linq @using BlazorWebAssemblyVisaApiClient.Components @using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.DateTimeProvider @using BlazorWebAssemblyVisaApiClient.Validation.Applicants.Models @inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase Registration

Registration data

Authentication data
Your Fullname
Fullname of your mother
Fullname of your father
Your passport
Birth data





Citizenship



Address of your place of work
Place of work data


Other



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