@page "/applications/{ApplicationId}" @using System.Net @using BlazorWebAssemblyVisaApiClient.Common.Exceptions @using BlazorWebAssemblyVisaApiClient.Components @using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers @using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider @using BlazorWebAssemblyVisaApiClient.Validation.Applicants.Models @using BlazorWebAssemblyVisaApiClient.Validation.VisaApplications.Models @using VisaApiClient @inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase Application
Applicant's fullname:
@NameToString(application.Applicant.Name)
Date of birth:
@application.Applicant.BirthDate.ToString("d")
Country and city of birth:
@application.Applicant.CountryOfBirth, @application.Applicant.CityOfBirth
Citizenship:
@application.Applicant.Citizenship
Citizenship by birth:
@application.Applicant.CitizenshipByBirth
Gender:
@application.Applicant.Gender.GetDisplayName()
Marital status:
@(((MaritalStatusModel)application.Applicant.MaritalStatus).GetDisplayName())
Father's fullname:
@NameToString(application.Applicant.FatherName)
Mother's fullname:
@NameToString(application.Applicant.MotherName)
Passport number:
@application.Applicant.Passport.Number
Issue date:
@application.Applicant.Passport.IssueDate.ToString("d")
Expiration date:
@application.Applicant.Passport.ExpirationDate.ToString("d")
Passport issuer:
@application.Applicant.Passport.Issuer
Re-entry permission (for non-residents):
@if (application.Applicant.IsNonResident) { @(application.ReentryPermit is null ? "None" : $"{application.ReentryPermit.Number}, expires at {application.ReentryPermit.ExpirationDate:d}") } else { Not non-resident }
Job title:
@application.Applicant.JobTitle
Place of work, address, hirer's phone number:
@((MarkupString)$"{application.Applicant.PlaceOfWork.Name}
Address: {AddressToString(application.Applicant.PlaceOfWork.Address)}
Phone num: {application.Applicant.PlaceOfWork.PhoneNum}")
Destination Country:
@application.DestinationCountry
Visa category:
@(((VisaCategoryModel)application.VisaCategory).GetDisplayName())
Visa:
@(application.ForGroup ? "For group" : "Individual")
Requested number of entries:
@application.RequestedNumberOfEntries.GetDisplayName()
Valid for:
@($"{application.ValidDaysRequested} days")
Past visas:
@if (application.PastVisas.Any()) { foreach (var visa in application.PastVisas) { @($"{visa.Name} issued at {visa.IssueDate:d} and was valid until {visa.ExpirationDate:d}")
} } else { None }
Permission to destination Country, if transit:
@if (application.VisaCategory is VisaCategory.Transit) { @(application.PermissionToDestCountry is null ? "None" : $"Expires at {application.PermissionToDestCountry.ExpirationDate}, issued by: {application.PermissionToDestCountry.Issuer}") } else { Non-transit }
Past visits:
@if (application.PastVisas.Any()) { foreach (var visit in application.PastVisits) { @($"Visit to {visit.DestinationCountry}, entered at {visit.StartDate:d} and lasts until {visit.EndDate:d}")
} } else { None }
@if (currentRole == Constants.ApprovingAuthorityRole) { } @code { private VisaApplicationModel application = new(); private string currentRole = null!; private Status status = null!; [Parameter] public string ApplicationId { get; set; } = null!; [Inject] private IUserDataProvider UserDataProvider { get; set; } = null!; [Inject] private NavigationManager Nav { get; set; } = null!; protected override async Task OnInitializedAsync() { try { var applicationId = Guid.Parse(ApplicationId); currentRole = UserDataProvider.CurrentRole ?? throw new NotLoggedInException(); application = currentRole switch { Constants.ApplicantRole => await Client.GetApplicationForApplicantAsync(applicationId), Constants.ApprovingAuthorityRole => await Client.GetApplicationForAuthorityAsync(applicationId), _ => throw new NotLoggedInException() }; } catch (Exception e) { if (e is ApiException { Result.Status: (int)HttpStatusCode.Conflict }) { Nav.NavigateTo("/applications"); } ErrorHandler.Handle(e); } } private static string NameToString(NameModel name) => $"{name.FirstName} {name.Surname} {name.Patronymic}".TrimEnd(); private static string AddressToString(AddressModel address) => $"{address.Country}, {address.City}, {address.Street} {address.Building}"; private async void Approve() { try { status.SetMessage("Wait..."); await Client.SetStatusFromAuthorityAsync(application.Id, AuthorityRequestStatuses.Approved); Nav.NavigateTo("/applications"); } catch (Exception e) { status.SetError("Error occured."); ErrorHandler.Handle(e); } } private async void Reject() { try { status.SetMessage("Wait..."); await Client.SetStatusFromAuthorityAsync(application.Id, AuthorityRequestStatuses.Rejected); Nav.NavigateTo("/applications"); } catch (Exception e) { status.SetError("Error occured."); ErrorHandler.Handle(e); } } }