< Summary - Syki

Information
Class: Syki.Front.Shared.NavMenu
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Shared/NavMenu.razor
Tag: 36_19195353031
Line coverage
0%
Covered lines: 0
Uncovered lines: 27
Coverable lines: 27
Total lines: 110
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 14
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%210%
OnInitializedAsync()0%2040%
OnAfterRenderAsync()100%210%
ConnectWebsocket()0%2040%
DisposeAsync()100%210%

File(s)

/home/runner/work/syki/syki/Front/Shared/NavMenu.razor

#LineLine coverage
 1@namespace Syki.Front.Shared
 2
 3@implements IAsyncDisposable
 4
 5<MudNavMenu Rounded Color="Color.Primary" Class="pa-2">
 6    <AuthorizeView Roles="@UserRole.Adm.ToString()">
 7        <MudNavLink Href="adm/users" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.People" IconColor="Color.I
 8        <MudNavLink Href="adm/institutions" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.School" IconColor="
 9        <MudNavLink Href="adm/feature-flags" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Flag" IconColor="C
 10        <MudNavLink Href="adm/commands" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Task" IconColor="Color.
 11        <MudNavLink Href="adm/batches" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.BorderOuter" IconColor="
 12    </AuthorizeView>
 13    <AuthorizeView Policy="@Policies.ViewDomainEventsPage">
 14        <MudNavLink Href="adm/events" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.StickyNote2" IconColor="C
 15    </AuthorizeView>
 16
 17
 18    <AuthorizeView Roles="@UserRole.Academic.ToString()">
 19        <MudNavLink Href="academic/campi" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.GroupWork" IconColor=
 20        <MudNavLink Href="academic/courses" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Class" IconColor="C
 21        <MudNavLink Href="academic/disciplines" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Apps" IconColor
 22        <MudNavLink Href="academic/course-curriculums" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.AccountT
 23        <MudNavLink Href="academic/course-offerings" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.PlaylistAd
 24        <MudNavLink Href="academic/teachers" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person4" IconColor
 25        <MudNavLink Href="academic/classes" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CenterFocusStrong" 
 26        <MudNavLink Href="academic/students" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.People" IconColor=
 27        <MudNavLink Href="academic/classrooms" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.VideoLabel" Icon
 28        <MudNavLink Href="academic/academic-periods" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMo
 29        <MudNavLink Href="academic/enrollment-periods" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Article"
 30        <MudNavLink Href="academic/notifications" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Notifications
 31        <MudNavLink Href="academic/webhooks" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Webhook" IconColor
 32    </AuthorizeView>
 33    <AuthorizeView Roles="@UserRole.Teacher.ToString()">
 34        <MudNavLink Href="teacher/agenda" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMonth" IconCo
 35        <MudNavGroup Title="Turmas" Expanded Icon="@Icons.Material.Filled.CenterFocusStrong">
 036            @foreach(var item in _teacherClasses)
 37            {
 038                <MudNavLink Href="@($"teacher/classes/{item.Id}")" Match="NavLinkMatch.Prefix">@item.Discipline</MudNavL
 39            }
 40        </MudNavGroup>
 41    </AuthorizeView>
 42    <AuthorizeView Roles="@UserRole.Student.ToString()">
 43        <MudNavLink Href="student/agenda" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMonth" IconCo
 44        <MudNavLink Href="student/disciplines" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Apps" IconColor=
 45        <MudNavLink Href="student/notes" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.StickyNote2" IconColor
 46        <MudNavLink Href="student/frequency" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Class" IconColor="
 047        @if (_currentEnrollmentPeriod.Id.HasValue())
 48        {
 49            <MudNavLink Href="student/enrollments" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Article" Ico
 50        }
 51        <MudNavGroup Title="Turmas" Expanded Icon="@Icons.Material.Filled.CenterFocusStrong">
 052            @foreach(var item in _studentClasses)
 53            {
 054                <MudNavLink Href="@($"student/classes/{item.Id}")" Match="NavLinkMatch.Prefix">@item.Discipline</MudNavL
 55            }
 56        </MudNavGroup>
 57    </AuthorizeView>
 58</MudNavMenu>
 59
 60@inject AuthManager AuthManager
 61@inject SignalRConnectionManager SignalR
 62@inject ILocalStorageService LocalStorage
 63@inject GetTeacherCurrentClassesClient GetTeacherCurrentClassesClient
 64@inject GetStudentCurrentClassesClient GetStudentCurrentClassesClient
 65@inject GetCurrentEnrollmentPeriodClient GetCurrentEnrollmentPeriodClient
 66
 67@code
 68{
 069    private EnrollmentPeriodOut _currentEnrollmentPeriod = new();
 070    private List<TeacherCurrentClassOut> _teacherClasses = [];
 071    private List<StudentCurrentClassOut> _studentClasses = [];
 72
 73    protected override async Task OnInitializedAsync()
 74    {
 075        var user = await AuthManager.GetUser();
 076        if (user.Role == UserRole.Teacher)
 77        {
 078            _teacherClasses = await GetTeacherCurrentClassesClient.Get();
 079            await LocalStorage.SetItemAsync("Classes", _teacherClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis
 80        }
 081        if (user.Role == UserRole.Student)
 82        {
 083            _studentClasses = await GetStudentCurrentClassesClient.Get();
 084            _currentEnrollmentPeriod = await GetCurrentEnrollmentPeriodClient.Get();
 085            await LocalStorage.SetItemAsync("Classes", _studentClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis
 86        }
 087    }
 88
 89    protected override async Task OnAfterRenderAsync(bool firstRender)
 90    {
 091        await base.OnAfterRenderAsync(firstRender);
 92
 093        await ConnectWebsocket(firstRender);
 094    }
 95
 96    private async Task ConnectWebsocket(bool firstRender)
 97    {
 098        if (!firstRender) return;
 99
 0100        var user = await AuthManager.GetUser();
 0101        if (!user.IsAuthenticated) return;
 102
 0103        await SignalR.StartAsync();
 0104    }
 105
 106    public async ValueTask DisposeAsync()
 107    {
 0108        await SignalR.StopAsync();
 0109    }
 110}