< Summary - Syki

Information
Class: Syki.Front.Features.Academic.BuildClassroomAssignment.AssignClassToClassroomDialog
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Features/Academic/BuildClassroomAssignment/AssignClassToClassroomDialog.razor
Tag: 21_17346963026
Line coverage
0%
Covered lines: 0
Uncovered lines: 39
Coverable lines: 39
Total lines: 171
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 34
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_MudDialog()100%210%
get_Classroom()100%210%
get_Classes()100%210%
.ctor()100%210%
OnInitializedAsync()100%210%
AddNewSchedule()0%342180%
Cancel()100%210%

File(s)

/home/runner/work/syki/syki/Front/Features/Academic/BuildClassroomAssignment/AssignClassToClassroomDialog.razor

#LineLine coverage
 1@using Syki.Front.Components.Agenda
 2@using Syki.Front.Features.Academic.CreateClass
 3
 4@namespace Syki.Front.Features.Academic.BuildClassroomAssignment
 5
 6<MudDialog Class="pb-2" DefaultFocus="DefaultFocus.None">
 7    <TitleContent>
 8        <SykiDialogTitle Icon="@Icons.Material.Filled.VideoLabel" Text="@($"{Classroom.Name} ({Classroom.Capacity} vagas
 9    </TitleContent>
 10    <DialogContent>
 11        <MudGrid Spacing="2">
 12            <MudItem xs="12" sm="12" md="12" lg="12">
 13                <MudSelect
 14                    Dense
 15                    Margin="Margin.Dense"
 16                    Variant="Variant.Outlined"
 17                    @bind-Value="@_class"
 18                    Label="Turma"
 19                    Required
 20                    RequiredError="Informe!"
 21                    AdornmentColor="Color.Primary"
 22                >
 023                    @foreach (GetCampusClassesOut? item in Classes)
 24                    {
 025                        <MudSelectItem Value="@item">@item.Discipline ● @item.Teacher</MudSelectItem>
 26                    }
 27                </MudSelect>
 28            </MudItem>
 29
 30            <MudItem xs="12" sm="4" md="4" lg="4">
 31                <MudSelect
 32                    Dense
 33                    Margin="Margin.Dense"
 34                    Variant="Variant.Outlined"
 35                    T="Day?"
 36                    @bind-Value="@_schedule.Day"
 37                    Label="Dia"
 38                    Required
 39                    RequiredError="Informe!"
 40                    AdornmentColor="Color.Primary"
 41                >
 042                    @foreach (Day? day in Enum.GetValues<Day>())
 43                    {
 044                        <MudSelectItem Value="@day">@day.GetDescription()</MudSelectItem>
 45                    }
 46                </MudSelect>
 47            </MudItem>
 48            <MudItem xs="12" sm="3" md="3" lg="3">
 49                <MudSelect
 50                    Dense
 51                    Margin="Margin.Dense"
 52                    Variant="Variant.Outlined"
 53                    T="Hour?"
 54                    @bind-Value="@_schedule.Start"
 55                    Label="Início"
 56                    Required
 57                    RequiredError="Informe!"
 58                    AdornmentColor="Color.Primary"
 59                >
 060                    @foreach (Hour? hour in Enum.GetValues<Hour>())
 61                    {
 062                    <MudSelectItem Value="@hour">@hour.GetDescription()</MudSelectItem>
 63                    }
 64                </MudSelect>
 65            </MudItem>
 66            <MudItem xs="12" sm="3" md="3" lg="3">
 67                <MudSelect
 68                    Dense
 69                    Margin="Margin.Dense"
 70                    Variant="Variant.Outlined"
 71                    T="Hour?"
 72                    @bind-Value="@_schedule.End"
 73                    Label="Fim"
 74                    Required
 75                    RequiredError="Informe!"
 76                    AdornmentColor="Color.Primary"
 77                >
 078                    @foreach (Hour? hour in Enum.GetValues<Hour>())
 79                    {
 080                        if (_schedule.Start == null || hour <= _schedule.Start) continue;
 081                        <MudSelectItem Value="@hour">@hour.GetDescription()</MudSelectItem>
 82                    }
 83                </MudSelect>
 84            </MudItem>
 85
 86            <MudItem xs="12" sm="2" md="2" lg="2" Class="d-flex align-center justify-center">
 87                <MudButton
 88                    StartIcon="@Icons.Material.Outlined.Add"
 89                    IconSize="Size.Medium"
 90                    Variant="Variant.Filled"
 91                    Size="Size.Medium"
 92                    Color="Color.Primary"
 93                    OnClick="@AddNewSchedule"
 94                    Disabled="@(_class == null || _schedule == null || _schedule.Day == null || _schedule.Start == null 
 95                >
 96                    Horário
 97                </MudButton>
 98            </MudItem>
 99        </MudGrid>
 100
 101        <CascadingValue Name="Days" Value="@_agenda">
 102            <WeeklyAgenda Class="px-0 pt-4 pb-2" />
 103        </CascadingValue>
 104    </DialogContent>
 105</MudDialog>
 106
 107@inject ISnackbar Snackbar
 108@inject GetClassroomAgendaClient GetClassroomAgendaClient
 109@inject AssignClassToClassroomClient AssignClassToClassroomClient
 110
 111@code
 112{
 113    [CascadingParameter]
 0114    IMudDialogInstance MudDialog { get; set; }
 115
 116    [Parameter]
 0117    public GetClassroomsOut Classroom { get; set; } = new();
 118
 119    [Parameter]
 0120    public List<GetCampusClassesOut> Classes { get; set; } = [];
 121
 122    private bool _loading;
 0123    private ScheduleInFillable? _schedule = new();
 124    private GetCampusClassesOut? _class;
 0125    private List<AgendaDayOut> _agenda = [];
 126
 127    protected override async Task OnInitializedAsync()
 128    {
 0129        _agenda = await GetClassroomAgendaClient.Get(Classroom.Id);
 0130    }
 131
 132    private async Task AddNewSchedule()
 133    {
 0134        if (_schedule == null) return;
 0135        if (_schedule.Day == null) return;
 0136        if (_schedule.Start == null) return;
 0137        if (_schedule.End == null) return;
 138
 0139        var @class = Classes.FirstOrDefault(x => x.Id == _class?.Id);
 0140        if (@class == null) return;
 141
 0142        if (_loading) return;
 0143        _loading = true;
 144
 0145        var schedules = new List<ScheduleIn>();
 0146        foreach (var agenda in _agenda)
 147        {
 0148            foreach (var d in agenda.Disciplines.Where(d => d.ClassId == _class.Id))
 149            {
 0150                schedules.Add(new ScheduleIn(agenda.Day, d.Start, d.End));
 151            }
 152        }
 0153        schedules.Add(new ScheduleIn(_schedule.Day!.Value, _schedule.Start!.Value, _schedule.End!.Value));
 154
 0155        var response = await AssignClassToClassroomClient.Assign(Classroom.Id, _class.Id, schedules);
 0156        if (response.IsSuccess)
 157        {
 0158            Snackbar.Add("Horário salvo com sucesso!", Severity.Success);
 0159            _class = null;
 0160            _schedule = new();
 0161            _agenda = await GetClassroomAgendaClient.Get(Classroom.Id);
 162        }
 163        else
 164        {
 0165            Snackbar.Add(response.Error.Message, Severity.Error);
 166        }
 0167        _loading = false;
 0168    }
 169
 0170    void Cancel() => MudDialog.Cancel();
 171}