< Summary

Class:MUNity.BlazorServer.Components.Conference.ManageFreeRolesPanel
Assembly:MUNity.BlazorServer
File(s):C:\Users\aeuke\source\repos\PeerConradi\munity\src\MUNity.BlazorServer\Components\Conference\ManageFreeRolesPanel.razor
Covered lines:0
Uncovered lines:45
Coverable lines:45
Total lines:122
Line coverage:0% (0 of 45)
Covered branches:0
Total branches:20
Branch coverage:0% (0 of 20)
Covered methods:0
Total methods:9
Method coverage:0% (0 of 9)

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
BuildRenderTree(...)0%100%
get_AuthStateTask()100%10%
get_ConferenceId()100%10%
get_Countries()100%10%
get_Delegations()100%10%
get_Roles()100%10%
RequestRemoveFreeRole(...)100%10%
RemoveDelegateRole()0%60%
LoadData()0%40%

File(s)

C:\Users\aeuke\source\repos\PeerConradi\munity\src\MUNity.BlazorServer\Components\Conference\ManageFreeRolesPanel.razor

#LineLine coverage
 1@using MUNity.Schema.Conference
 2@using MUNity.Base
 3@inject Services.ConferenceRoleService conferenceRoleService
 4@inject Services.ConferenceService conferenceService
 5
 6<div class="panel panel-inverse">
 7    <div class="panel-heading">
 8        <h4 class="panel-title">Freie Rollen</h4>
 9        <div class="panel-heading-btn">
 010            <a href="javascript:;" @onclick="() => showFreeRoles = !showFreeRoles" class="btn btn-xs btn-icon btn-warnin
 11        </div>
 12    </div>
 13
 014    @if (showFreeRoles)
 015    {
 16        <div class="alert alert-warning rounded-0 mb-0 fade show">
 17            Diese Rollen sind lediglich der Konferenz, nicht aber einen Gremium zugeordnet. Auch diese Rollen können Tei
 18        </div>
 19
 20        <div class="panel-body">
 021            <button class="btn btn-primary mb-2" @onclick="() => createFreeRoleModal.Show()">Neue freie Rolle</button>
 22
 23
 24            <table class="table table-striped table-bordered align-middle dataTable no-footer dtr-inline">
 25                <thead>
 26                    <tr role="row">
 27                        <th>#</th>
 28                        <th class="text-nowrap sorting">Name</th>
 29                        <th>Subtype</th>
 30                        <th>Bewerbungstyp</th>
 31                        <th>Ist belegt</th>
 32                        <th>Löschen</th>
 33                    </tr>
 34                </thead>
 35                <tbody>
 36
 37
 038                    @if (Roles != null && Roles.Any())
 039                    {
 040                        foreach (var role in Roles.Where(n => string.IsNullOrEmpty(n.RoleCommitteeId)))
 041                        {
 42                            <tr>
 043                                <td>@role.RoleId</td>
 044                                <td>@role.RoleName</td>
 045                                <td>@role.Subtype</td>
 46                                <td>
 47                                    <select class="form-select" @bind="@role.ApplicationState">
 48                                        <option value="@EApplicationStates.Closed">Anmeldung geschlossen</option>
 49                                        <option value="@EApplicationStates.Closed">Anmeldung auf Delegation (als Gruppe)
 50                                        <option value="@EApplicationStates.Closed">Anmeldung auf Rolle (direkt)</option>
 51                                    </select>
 52                                </td>
 053                                <td>@((role.HasParicipant) ? "Ja" : "Nein")</td>
 054                                <td><button class="btn btn-danger" @onclick="() => RequestRemoveFreeRole(role)">Löschen<
 55                            </tr>
 056                        }
 057                    }
 58                </tbody>
 59            </table>
 60        </div>
 061    }
 62
 63
 64</div>
 65
 66<MUNity.BlazorServer.Components.Conference.CreateFreeRoleModal ConferenceId="@ConferenceId"
 067                                                               @ref="createFreeRoleModal"
 68                                                               Countries="@Countries"
 69                                                               Delegations="@Delegations"
 70                                                               SeatCreated="LoadData" />
 71
 072<MUNity.BlazorServer.Components.General.DeleteWarningModal @ref="deleteWarningModal" />
 73
 74@code {
 75    [CascadingParameter]
 76    public Task<AuthenticationState>
 77    AuthStateTask
 078    { get; set; }
 79
 080    [Parameter] public string ConferenceId { get; set; }
 81
 082    [Parameter] public List<MUNity.Schema.Conference.CountryInfo> Countries { get; set; }
 83
 084    [Parameter] public List<MUNity.Schema.Conference.DelegationInfo> Delegations { get; set; }
 85
 086    [Parameter] public List<MUNity.Schema.Conference.ManageDelegationRoleInfo> Roles { get; set; }
 87
 88    private bool showFreeRoles;
 89
 90    private MUNity.BlazorServer.Components.Conference.CreateFreeRoleModal createFreeRoleModal;
 91
 92    private MUNity.BlazorServer.Components.General.DeleteWarningModal deleteWarningModal;
 93
 94    private void RequestRemoveFreeRole(ManageDelegationRoleInfo role)
 095    {
 096        deleteWarningModal.OnAccepted = new Task(async () => await RemoveDelegateRole(role));
 097        deleteWarningModal.Show($"{role.RoleName} löschen?", $"Soll die Rolle {role.RoleName} wirklich gelöscht werden?"
 098    }
 99
 100    private async Task RemoveDelegateRole(ManageDelegationRoleInfo role)
 0101    {
 0102        var claim = (await AuthStateTask)?.User;
 0103        if (claim == null)
 0104            return;
 105
 0106        var result = await conferenceRoleService.RemoveDelegateRole(role.RoleId, claim);
 0107        if (result)
 0108        {
 0109            Roles.Remove(role);
 0110            await this.InvokeAsync(this.StateHasChanged);
 0111        }
 0112    }
 113
 114    private async Task LoadData()
 0115    {
 0116        var claim = (await AuthStateTask)?.User;
 0117        if (claim != null)
 0118        {
 0119            this.Roles = await conferenceRoleService.GetRoleInfos(ConferenceId, claim);
 0120        }
 0121    }
 122}