@page "/applications" @using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers @using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider @using VisaApiClient @inherits BlazorWebAssemblyVisaApiClient.Components.Base.VisaClientComponentBase Applications @foreach (var application in applications) { var rowClass = application.Status switch { ApplicationStatus.Pending => "", ApplicationStatus.Approved => "table-success", ApplicationStatus.Rejected => "table-danger", ApplicationStatus.Closed => "table-danger", _ => throw new ArgumentOutOfRangeException() }; }
Destination Country Visa Category Request date Days requested Status
@application.DestinationCountry @application.VisaCategory.GetDisplayName() @application.RequestDate.ToString("d") @application.ValidDaysRequested @application.Status.GetDisplayName() @if (currentRole == Constants.ApplicantRole && application.Status is not ApplicationStatus.Closed) { | }
@code { private string currentRole = null!; private List applications = []; [Inject] private IUserDataProvider UserDataProvider { get; set; } = null!; protected override async Task OnInitializedAsync() { currentRole = UserDataProvider.GetCurrentRole()!; await Fetch(); } private async Task Fetch() { try { applications = currentRole switch { Constants.ApplicantRole => (await Client.GetForApplicantAsync()).OrderByDescending(a => a.RequestDate).ToList(), Constants.ApprovingAuthorityRole => (await Client.GetPendingAsync()).OrderByDescending(a => a.RequestDate).ToList(), _ => throw new ArgumentOutOfRangeException() }; } catch (Exception e) { ErrorHandler.Handle(e); } } private async Task CloseApplication(VisaApplicationPreview application) { try { await Client.CloseApplicationAsync(application.Id); application.Status = ApplicationStatus.Closed; StateHasChanged(); } catch (Exception e) { ErrorHandler.Handle(e); } } }