@page "/applications/new" @using System.Net @using AutoMapper @using BlazorWebAssemblyVisaApiClient.Validation.VisaApplications.Models @using BlazorWebAssemblyVisaApiClient.Components.FormComponents.Applicants @using VisaApiClient @using BlazorWebAssemblyVisaApiClient.Components @using BlazorWebAssemblyVisaApiClient.Components.FormComponents.VisaApplications @using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers @using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.DateTimeProvider @using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider @using FluentValidation @using Newtonsoft.Json @using Newtonsoft.Json.Linq @inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase New Application

New application

Visa









@if (requestModel.VisaCategory is VisaCategory.Transit) {
Permission to destination Country
} @if (isNonResident) {
Re-entry permission

}
//todo past visas and visits @code { private VisaApplicationCreateRequestModel requestModel = new(); private Status status = null!; private bool isNonResident; [Inject] IDateTimeProvider DateTimeProvider { get; set; } = null!; [Inject] IUserDataProvider UserDataProvider { get; set; } = null!; [Inject] IValidator VisaApplicationCreateRequestValidator { get; set; } = null!; [Inject] IMapper Mapper { get; set; } = null!; protected override async Task OnInitializedAsync() { try { isNonResident = (await UserDataProvider.GetApplicant()).IsNonResident; } catch (Exception e) { ErrorHandler.Handle(e); } requestModel.PermissionToDestCountry!.ExpirationDate = DateTimeProvider.Now(); } private async Task TryCreate() { var validationResult = await VisaApplicationCreateRequestValidator.ValidateAsync(requestModel); if (!validationResult.IsValid) { var errorsString = validationResult.ToErrorsString(); status.SetError(errorsString); } status.SetMessage("Wait..."); var request = Mapper.Map(requestModel); try { await Client.CreateApplicationAsync(request); status.SetSucces("Application created successfully."); } 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(string.Join("
", errorsList)); } else { ErrorHandler.Handle(e); } } catch (Exception e) { ErrorHandler.Handle(e); } } }