< Summary - Syki

Information
Class: Syki.Front.Shared.NavMenu
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Shared/NavMenu.razor
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 27
Coverable lines: 27
Total lines: 106
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="true" 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/events" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.StickyNote2" IconColor="C
 11        <MudNavLink Href="adm/commands" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Task" IconColor="Color.
 12        <MudNavLink Href="adm/batches" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.BorderOuter" IconColor="
 13    </AuthorizeView>
 14    <AuthorizeView Roles="@UserRole.Academic.ToString()">
 15        <MudNavLink Href="academic/campi" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.GroupWork" IconColor=
 16        <MudNavLink Href="academic/courses" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Class" IconColor="C
 17        <MudNavLink Href="academic/disciplines" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Apps" IconColor
 18        <MudNavLink Href="academic/course-curriculums" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.AccountT
 19        <MudNavLink Href="academic/course-offerings" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.PlaylistAd
 20        <MudNavLink Href="academic/teachers" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person4" IconColor
 21        <MudNavLink Href="academic/classes" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CenterFocusStrong" 
 22        <MudNavLink Href="academic/students" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.People" IconColor=
 23        <MudNavLink Href="academic/classrooms" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.VideoLabel" Icon
 24        <MudNavLink Href="academic/academic-periods" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMo
 25        <MudNavLink Href="academic/enrollment-periods" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Article"
 26        <MudNavLink Href="academic/notifications" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Notifications
 27        <MudNavLink Href="academic/webhooks" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Webhook" IconColor
 28    </AuthorizeView>
 29    <AuthorizeView Roles="@UserRole.Teacher.ToString()">
 30        <MudNavLink Href="teacher/agenda" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMonth" IconCo
 31        <MudNavGroup Title="Turmas" Expanded="true" Icon="@Icons.Material.Filled.CenterFocusStrong">
 032            @foreach(var item in _teacherClasses)
 33            {
 034                <MudNavLink Href="@($"teacher/classes/{item.Id}")" Match="NavLinkMatch.Prefix">@item.Discipline</MudNavL
 35            }
 36        </MudNavGroup>
 37    </AuthorizeView>
 38    <AuthorizeView Roles="@UserRole.Student.ToString()">
 39        <MudNavLink Href="student/agenda" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.CalendarMonth" IconCo
 40        <MudNavLink Href="student/disciplines" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Apps" IconColor=
 41        <MudNavLink Href="student/notes" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.StickyNote2" IconColor
 42        <MudNavLink Href="student/frequency" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Class" IconColor="
 043        @if (_currentEnrollmentPeriod.Id.HasValue())
 44        {
 45            <MudNavLink Href="student/enrollments" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Article" Ico
 46        }
 47        <MudNavGroup Title="Turmas" Expanded="true" Icon="@Icons.Material.Filled.CenterFocusStrong">
 048            @foreach(var item in _studentClasses)
 49            {
 050                <MudNavLink Href="@($"student/classes/{item.Id}")" Match="NavLinkMatch.Prefix">@item.Discipline</MudNavL
 51            }
 52        </MudNavGroup>
 53    </AuthorizeView>
 54</MudNavMenu>
 55
 56@inject AuthManager AuthManager
 57@inject SignalRConnectionManager SignalR
 58@inject ILocalStorageService LocalStorage
 59@inject GetTeacherCurrentClassesClient GetTeacherCurrentClassesClient
 60@inject GetStudentCurrentClassesClient GetStudentCurrentClassesClient
 61@inject GetCurrentEnrollmentPeriodClient GetCurrentEnrollmentPeriodClient
 62
 63@code
 64{
 065    private EnrollmentPeriodOut _currentEnrollmentPeriod = new();
 066    private List<TeacherCurrentClassOut> _teacherClasses = [];
 067    private List<StudentCurrentClassOut> _studentClasses = [];
 68
 69    protected override async Task OnInitializedAsync()
 70    {
 071        var user = await AuthManager.GetUser();
 072        if (user.Role == UserRole.Teacher)
 73        {
 074            _teacherClasses = await GetTeacherCurrentClassesClient.Get();
 075            await LocalStorage.SetItemAsync("Classes", _teacherClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis
 76        }
 077        if (user.Role == UserRole.Student)
 78        {
 079            _studentClasses = await GetStudentCurrentClassesClient.Get();
 080            _currentEnrollmentPeriod = await GetCurrentEnrollmentPeriodClient.Get();
 081            await LocalStorage.SetItemAsync("Classes", _studentClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis
 82        }
 083    }
 84
 85    protected override async Task OnAfterRenderAsync(bool firstRender)
 86    {
 087        await base.OnAfterRenderAsync(firstRender);
 88
 089        await ConnectWebsocket(firstRender);
 090    }
 91
 92    private async Task ConnectWebsocket(bool firstRender)
 93    {
 094        if (!firstRender) return;
 95
 096        var user = await AuthManager.GetUser();
 097        if (!user.IsAuthenticated) return;
 98
 099        await SignalR.StartAsync();
 0100    }
 101
 102    public async ValueTask DisposeAsync()
 103    {
 0104        await SignalR.StopAsync();
 0105    }
 106}