112 lines
3.7 KiB
Plaintext
112 lines
3.7 KiB
Plaintext
@inject IApprovalService approvalService
|
|
@inject ISnackbar snackbar
|
|
@inject MesaFabApprovalAuthStateProvider authStateProvider
|
|
|
|
<MudDialog>
|
|
<DialogContent>
|
|
@if (availableApprovers is not null) {
|
|
<MudPaper Class="p-2">
|
|
<MudSelect T="User"
|
|
Label="Select a User"
|
|
Required
|
|
Variant="Variant.Outlined"
|
|
AnchorOrigin="Origin.BottomCenter"
|
|
@bind-Value=selectedUser
|
|
Text="@(selectedUser is null ? "" : selectedUser.GetFullName())">
|
|
@foreach (User user in availableApprovers) {
|
|
<MudSelectItem Value="@user">
|
|
@user.GetFullName()
|
|
</MudSelectItem>
|
|
}
|
|
</MudSelect>
|
|
</MudPaper>
|
|
}
|
|
</DialogContent>
|
|
<DialogActions>
|
|
<MudButton Variant="Variant.Filled"
|
|
Color="Color.Tertiary"
|
|
Class="m1-auto"
|
|
OnClick=Submit>
|
|
<MudText>Submit</MudText>
|
|
</MudButton>
|
|
<MudButton Variant="Variant.Filled"
|
|
Color="Color.Secondary"
|
|
Class="m1-auto"
|
|
OnClick=Cancel>
|
|
<MudText>Cancel</MudText>
|
|
</MudButton>
|
|
</DialogActions>
|
|
</MudDialog>
|
|
|
|
<MudOverlay Visible=processing DarkBackground="true" AutoClose="false">
|
|
<MudProgressCircular Color="Color.Info" Size="Size.Medium" Indeterminate="true" />
|
|
</MudOverlay>
|
|
|
|
@code {
|
|
[CascadingParameter] MudDialogInstance MudDialog { get; set; }
|
|
|
|
[Parameter]
|
|
public User selectedUser { get; set; }
|
|
|
|
private bool processing = false;
|
|
|
|
private HashSet<User> availableApprovers = new();
|
|
|
|
protected override async Task OnInitializedAsync() {
|
|
try {
|
|
processing = true;
|
|
|
|
string roleName = "QA_PRE_APPROVAL";
|
|
string subRoleName = "QA_PRE_APPROVAL";
|
|
|
|
IEnumerable<User> qaApprovers = await GetApprovalGroupMembersForRoleAndSubRole(roleName, subRoleName);
|
|
|
|
foreach (User approver in qaApprovers)
|
|
availableApprovers.Add(approver);
|
|
|
|
roleName = "MRB Approver";
|
|
subRoleName = "MRBApprover";
|
|
|
|
IEnumerable<User> 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<IEnumerable<User>> GetApprovalGroupMembersForRoleAndSubRole(string roleName, string subRoleName) {
|
|
HashSet<User> members = new();
|
|
|
|
int roleId = await approvalService.GetRoleIdForRoleName(roleName);
|
|
|
|
if (roleId <= 0) throw new Exception($"could not find {roleName} role ID");
|
|
|
|
IEnumerable<SubRole> subRoles = await approvalService.GetSubRolesForSubRoleName(subRoleName, roleId);
|
|
|
|
foreach (SubRole subRole in subRoles) {
|
|
IEnumerable<User> subRoleMembers = await approvalService.GetApprovalGroupMembers(subRole.SubRoleID);
|
|
|
|
foreach (User member in subRoleMembers) {
|
|
members.Add(member);
|
|
}
|
|
}
|
|
|
|
return members;
|
|
}
|
|
}
|