@inject IApprovalService approvalService @inject ISnackbar snackbar @inject MesaFabApprovalAuthStateProvider authStateProvider @if (availableApprovers is not null) { @foreach (User user in availableApprovers) { @user.GetFullName() } } Submit Cancel @code { [CascadingParameter] MudDialogInstance MudDialog { get; set; } [Parameter] public User selectedUser { get; set; } private bool processing = false; private HashSet availableApprovers = new(); protected override async Task OnInitializedAsync() { try { processing = true; string roleName = "QA_PRE_APPROVAL"; string subRoleName = "QA_PRE_APPROVAL"; IEnumerable qaApprovers = await GetApprovalGroupMembersForRoleAndSubRole(roleName, subRoleName); foreach (User approver in qaApprovers) availableApprovers.Add(approver); roleName = "MRB Approver"; subRoleName = "MRBApprover"; IEnumerable mrbApprovers = await GetApprovalGroupMembersForRoleAndSubRole(roleName, subRoleName); foreach (User approver in mrbApprovers) availableApprovers.Add(approver); selectedUser = availableApprovers.First(); processing = false; } catch (Exception ex) { processing = false; snackbar.Add($"Unable to get all approvers, because {ex.Message}", Severity.Error); } } private void Submit() { MudDialog.Close(DialogResult.Ok(selectedUser)); } private void Cancel() { MudDialog.Close(DialogResult.Cancel()); } private async Task> GetApprovalGroupMembersForRoleAndSubRole(string roleName, string subRoleName) { HashSet members = new(); int roleId = await approvalService.GetRoleIdForRoleName(roleName); if (roleId <= 0) throw new Exception($"could not find {roleName} role ID"); IEnumerable subRoles = await approvalService.GetSubRolesForSubRoleName(subRoleName, roleId); foreach (SubRole subRole in subRoles) { IEnumerable subRoleMembers = await approvalService.GetApprovalGroupMembers(subRole.SubRoleID); foreach (User member in subRoleMembers) { members.Add(member); } } return members; } }