@inject IMRBService mrbService @inject ISnackbar snackbar @if (processingSave) { Processing } else { Save } @if (mrbAction is not null && mrbAction.ActionID > 0) { @if (processingDelete) { Processing } else { Delete } } Cancel @code { [CascadingParameter] MudDialogInstance MudDialog { get; set; } [Parameter] public MRBAction mrbAction { get; set; } private bool isVisible { get; set; } private string[] errors = { }; private bool processingSave = false; private bool processingDelete = false; protected override async Task OnParametersSetAsync() { isVisible = true; if (mrbAction is null) { mrbAction = new() { Action = "", Customer = "", Quantity = 0, PartNumber = "", LotNumber = "", MRBNumber = 0 }; } StateHasChanged(); } private bool FormIsValid() { bool actionIsValid = mrbAction.Action.Equals("Block") || mrbAction.Action.Equals("Convert") || mrbAction.Action.Equals("Other") || mrbAction.Action.Equals("Recall") || mrbAction.Action.Equals("Scrap") || mrbAction.Action.Equals("Unblock") || mrbAction.Action.Equals("Waiver"); return actionIsValid && !string.IsNullOrWhiteSpace(mrbAction.Customer) && !string.IsNullOrWhiteSpace(mrbAction.PartNumber) && !string.IsNullOrWhiteSpace(mrbAction.LotNumber); } private async void SaveMRBAction() { processingSave = true; try { if (!FormIsValid()) throw new Exception("You must complete the form before saving!"); if (mrbAction.MRBNumber > 0) { if (mrbAction.ActionID <= 0) { await mrbService.CreateMRBAction(mrbAction); snackbar.Add("MRB action created", Severity.Success); } else { await mrbService.UpdateMRBAction(mrbAction); snackbar.Add("MRB action updated", Severity.Success); } } else { snackbar.Add("MRB action saved", Severity.Success); } MudDialog.Close(DialogResult.Ok(mrbAction)); } catch (Exception ex) { snackbar.Add(ex.Message, Severity.Error); } processingSave = false; } private async void DeleteMRBAction() { processingDelete = true; try { if (mrbAction is null) throw new Exception("MRB action cannot be null!"); if (mrbAction.ActionID <= 0) throw new Exception("You cannot delete an action before creating it!"); if (mrbAction.MRBNumber <= 0) throw new Exception("Invalid MRB number!"); await mrbService.DeleteMRBAction(mrbAction); snackbar.Add("MRB action successfully deleted", Severity.Success); MudDialog.Close(DialogResult.Ok(null)); } catch (Exception ex) { snackbar.Add(ex.Message, Severity.Error); } processingDelete = false; } private void Cancel() { MudDialog.Cancel(); } }