2024-11-15 09:28:25 -07:00

141 lines
4.6 KiB
Plaintext

@inject MesaFabApprovalAuthStateProvider authStateProvider
@inject NavigationManager navigationManager
@inject IPCRBService pcrbService
@inject ISnackbar snackbar
<MudDialog>
<DialogContent>
<MudPaper Class="m-2 p-2">
<MudForm @bind-Errors="@errors">
<MudTextField T="string"
Label="File Name"
Disabled
Immediate
@bind-Value="@fileName"
@bind-Text="@fileName"
AutoGrow />
<MudFileUpload T="IBrowserFile"
FilesChanged="AddFile"
Required
Disabled="@(!string.IsNullOrWhiteSpace(fileName))"
RequiredError="You must select a file">
<ActivatorContent>
<MudButton Variant="Variant.Filled"
Color="Color.Tertiary"
style="margin: auto;"
StartIcon="@Icons.Material.Filled.AttachFile">
@if (addFileInProcess) {
<MudProgressCircular Class="m-1" Size="Size.Small" Indeterminate="true" />
<MudText>Processing</MudText>
} else {
<MudText>Add File</MudText>
}
</MudButton>
</ActivatorContent>
</MudFileUpload>
</MudForm>
</MudPaper>
</DialogContent>
<DialogActions>
<MudButton Variant="Variant.Filled"
Color="Color.Tertiary"
Class="m1-auto"
OnClick=Submit>
@if (processing) {
<MudProgressCircular Class="m-1" Size="Size.Small" Indeterminate="true" />
<MudText>Processing</MudText>
}
else {
<MudText>Submit</MudText>
}
</MudButton>
<MudButton Variant="Variant.Filled"
Class="grey text-black m1-auto"
OnClick=Cancel>
Cancel
</MudButton>
</DialogActions>
</MudDialog>
@code {
[CascadingParameter] MudDialogInstance MudDialog { get; set; }
[Parameter]
public int planNumber { get; set; } = 0;
[Parameter]
public int step { get; set; } = 0;
private string[] errors = { };
private string fileName = "";
private IBrowserFile? file = null;
private bool addFileInProcess = false;
private bool processing = false;
protected override async Task OnParametersSetAsync() {
if (planNumber <= 0) {
snackbar.Add($"{planNumber} is not a valid PCRB plan#", Severity.Error);
MudDialog.Close(DialogResult.Cancel());
}
if (step <= 0) {
snackbar.Add($"{step} is not a valid PCRB stage#", Severity.Error);
MudDialog.Close(DialogResult.Cancel());
}
if (authStateProvider.CurrentUser is null) {
await authStateProvider.Logout();
navigationManager.NavigateTo("login");
}
}
private void AddFile(IBrowserFile newFile) {
addFileInProcess = true;
file = newFile;
fileName = newFile.Name;
addFileInProcess = false;
}
private async Task Submit() {
processing = true;
try {
if (authStateProvider.CurrentUser is null) {
await authStateProvider.Logout();
navigationManager.NavigateTo("login");
return;
}
if (string.IsNullOrWhiteSpace(fileName))
throw new Exception("file name missing");
if (file is null)
throw new Exception("file is missing");
PCRBAttachment attachment = new() {
Step = step,
UploadDateTime = DateTime.Now,
UploadedByID = authStateProvider.CurrentUser.UserID,
PlanNumber = planNumber,
File = file,
FileName = fileName
};
await pcrbService.UploadAttachment(attachment);
processing = false;
MudDialog.Close(DialogResult.Ok(attachment));
} catch (Exception ex) {
snackbar.Add($"Unable to save document, because {ex.Message}", Severity.Error);
processing = false;
}
}
private void Cancel() {
MudDialog.Close(DialogResult.Cancel());
}
}