| | 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"> |
| 0 | 32 | | @foreach(var item in _teacherClasses) |
| | 33 | | { |
| 0 | 34 | | <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=" |
| 0 | 43 | | @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"> |
| 0 | 48 | | @foreach(var item in _studentClasses) |
| | 49 | | { |
| 0 | 50 | | <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 | | { |
| 0 | 65 | | private EnrollmentPeriodOut _currentEnrollmentPeriod = new(); |
| 0 | 66 | | private List<TeacherCurrentClassOut> _teacherClasses = []; |
| 0 | 67 | | private List<StudentCurrentClassOut> _studentClasses = []; |
| | 68 | |
|
| | 69 | | protected override async Task OnInitializedAsync() |
| | 70 | | { |
| 0 | 71 | | var user = await AuthManager.GetUser(); |
| 0 | 72 | | if (user.Role == UserRole.Teacher) |
| | 73 | | { |
| 0 | 74 | | _teacherClasses = await GetTeacherCurrentClassesClient.Get(); |
| 0 | 75 | | await LocalStorage.SetItemAsync("Classes", _teacherClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis |
| | 76 | | } |
| 0 | 77 | | if (user.Role == UserRole.Student) |
| | 78 | | { |
| 0 | 79 | | _studentClasses = await GetStudentCurrentClassesClient.Get(); |
| 0 | 80 | | _currentEnrollmentPeriod = await GetCurrentEnrollmentPeriodClient.Get(); |
| 0 | 81 | | await LocalStorage.SetItemAsync("Classes", _studentClasses.ConvertAll(x => new CascadingClassDto(x.Id, x.Dis |
| | 82 | | } |
| 0 | 83 | | } |
| | 84 | |
|
| | 85 | | protected override async Task OnAfterRenderAsync(bool firstRender) |
| | 86 | | { |
| 0 | 87 | | await base.OnAfterRenderAsync(firstRender); |
| | 88 | |
|
| 0 | 89 | | await ConnectWebsocket(firstRender); |
| 0 | 90 | | } |
| | 91 | |
|
| | 92 | | private async Task ConnectWebsocket(bool firstRender) |
| | 93 | | { |
| 0 | 94 | | if (!firstRender) return; |
| | 95 | |
|
| 0 | 96 | | var user = await AuthManager.GetUser(); |
| 0 | 97 | | if (!user.IsAuthenticated) return; |
| | 98 | |
|
| 0 | 99 | | await SignalR.StartAsync(); |
| 0 | 100 | | } |
| | 101 | |
|
| | 102 | | public async ValueTask DisposeAsync() |
| | 103 | | { |
| 0 | 104 | | await SignalR.StopAsync(); |
| 0 | 105 | | } |
| | 106 | | } |