@inject ISnackbar snackbar @inject IMRBService mrbService @inject MesaFabApprovalAuthStateProvider authStateProvider @if (attachmentUploadInProcess) { Processing } else { Upload Supporting Document } @if (processing) { Processing } else { Ok } Cancel @code { [CascadingParameter] MudDialogInstance MudDialog { get; set; } [Parameter] public string comments { get; set; } = ""; [Parameter] public int actionId { get; set; } = 0; private string[] errors = { }; private bool processing = false; private bool attachmentUploadInProcess = false; protected override void OnParametersSet() { comments = string.Empty; } private void SubmitComments() { processing = true; try { if (string.IsNullOrWhiteSpace(comments) || comments.Length < 5) throw new Exception("Comments must be at least five characters long"); MudDialog.Close(DialogResult.Ok(comments)); } catch (Exception ex) { snackbar.Add(ex.Message, Severity.Error); } processing = false; } private void Cancel() { MudDialog.Close(DialogResult.Cancel()); } private async Task AddAttachments(InputFileChangeEventArgs args) { attachmentUploadInProcess = true; try { if (actionId <= 0) throw new Exception($"{actionId} is not a valid MRB action ID"); IReadOnlyList attachments = args.GetMultipleFiles(); if (authStateProvider.CurrentUser is not null) { await mrbService.UploadActionAttachments(attachments, actionId); await mrbService.GetAllActionAttachmentsForMRB(actionId, true); attachmentUploadInProcess = false; snackbar.Add("Attachments successfully uploaded", Severity.Success); StateHasChanged(); } } catch (Exception ex) { attachmentUploadInProcess = false; snackbar.Add($"Unable to upload attachments, because {ex.Message}", Severity.Error); } } }