< Summary - Syki

Information
Class: Syki.Front.Features.Academic.CreateClass.CreateCampusClassDialog
Assembly: Front
File(s): /home/runner/work/syki/syki/Front/Features/Academic/CreateClass/CreateCampusClassDialog.razor
Tag: 21_17346963026
Line coverage
0%
Covered lines: 0
Uncovered lines: 35
Coverable lines: 35
Total lines: 139
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
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_Period()100%210%
get_CampusId()100%210%
get_Teachers()100%210%
get_Disciplines()100%210%
OnInitializedAsync()100%210%
SearchDiscipline()0%620%
Submit()0%4260%
Cancel()100%210%

File(s)

/home/runner/work/syki/syki/Front/Features/Academic/CreateClass/CreateCampusClassDialog.razor

#LineLine coverage
 1@namespace Syki.Front.Features.Academic.CreateClass
 2
 3<MudDialog Class="pb-2">
 4    <TitleContent>
 5        <SykiDialogTitle Text="Nova Turma" />
 6    </TitleContent>
 7    <DialogContent>
 08        <MudForm @ref="@_form" Class="pt-1" Spacing="0">
 09            <MudGrid Spacing="2">
 010                <MudItem xs="12" sm="12" md="12" lg="12">
 011                    <MudAutocomplete
 012                        T="GetCampusCourseOfferingsDisciplineOut"
 013                        MaxItems="50"
 14                        SearchFunc="@SearchDiscipline"
 15                        Dense
 16                        Margin="Margin.Dense"
 17                        Variant="Variant.Outlined"
 18                        @bind-Value="@_discipline"
 19                        Label="Disciplina"
 20                        Required
 21                        RequiredError="Informe!"
 22                        AdornmentColor="Color.Primary"
 23                    />
 24                </MudItem>
 25                <MudItem xs="12" sm="12" md="12" lg="12">
 26                    <MudSelect
 27                        Dense
 28                        Margin="Margin.Dense"
 29                        Variant="Variant.Outlined"
 30                        @bind-Value="@_teacher"
 31                        Label="Professor"
 32                        Required
 33                        RequiredError="Informe!"
 34                        AdornmentColor="Color.Primary"
 35                        Disabled="@(_discipline == null)"
 36                    >
 037                        @foreach (GetCampusTeachersOut? item in Teachers.Where(t => _discipline != null && t.Disciplines
 38                        {
 039                            <MudSelectItem Value="@item">@item.Name</MudSelectItem>
 40                        }
 41                    </MudSelect>
 42                </MudItem>
 43                <MudItem xs="6" sm="6" md="6" lg="6">
 44                    <MudNumericField
 45                        MaxLength="2"
 46                        HideSpinButtons
 47                        Margin="Margin.Dense"
 48                        Variant="Variant.Outlined"
 49                        T="byte?"
 50                        @bind-Value="@_vacancies"
 51                        Label="Vagas"
 52                        Required
 53                        RequiredError="Informe!"
 54                    />
 55                </MudItem>
 56            </MudGrid>
 57        </MudForm>
 58    </DialogContent>
 59    <DialogActions>
 60        <DialogCancelButton OnClick="@Cancel" />
 61        <SykiProgressCircular Loading="@_loading" />
 62        <DialogSaveButton OnClick="@Submit" />
 63    </DialogActions>
 64</MudDialog>
 65
 66@inject ISnackbar Snackbar
 67@inject CreateClassClient CreateClassClient
 68@inject GetTeachersClient GetTeachersClient
 69@inject GetDisciplinesClient GetDisciplinesClient
 70@inject IBrowserViewportService BrowserViewportService
 71@inject GetAcademicPeriodsClient GetAcademicPeriodsClient
 72
 73@code
 74{
 75    [CascadingParameter]
 076    IMudDialogInstance MudDialog { get; set; }
 77
 78    [Parameter]
 079    public string Period { get; set; }
 80
 81    [Parameter]
 082    public Guid CampusId { get; set; }
 83
 84    [Parameter]
 085    public List<GetCampusTeachersOut> Teachers { get; set; } = [];
 86
 87    [Parameter]
 088    public List<GetCampusCourseOfferingsDisciplineOut> Disciplines { get; set; } = [];
 89
 90    private MudForm _form;
 91    private bool _loading;
 92    private Breakpoint _breakpoint;
 93
 94    private byte? _vacancies;
 95    private GetCampusTeachersOut? _teacher;
 96    private GetCampusCourseOfferingsDisciplineOut? _discipline;
 97
 98    protected override async Task OnInitializedAsync()
 99    {
 0100        _breakpoint = await BrowserViewportService.GetCurrentBreakpointAsync();
 0101    }
 102
 103    private async Task<IEnumerable<GetCampusCourseOfferingsDisciplineOut>> SearchDiscipline(string value, CancellationTo
 104    {
 0105        await Task.Delay(0);
 106
 0107        if (string.IsNullOrEmpty(value))
 0108            return Disciplines;
 109
 0110        return Disciplines.Where(x => value.IsIn(x.Name));
 0111    }
 112
 113    private async Task Submit()
 114    {
 0115        if (_loading) return;
 116
 0117        await _form.Validate();
 0118        if (!_form.IsValid) return;
 119
 0120        var disciplineId = _discipline!.Id;
 0121        var teacherId = _teacher!.Id;
 0122        var vacancies = _vacancies!.Value;
 123
 0124        _loading = true;
 0125        var response = await CreateClassClient.Create(disciplineId, CampusId, teacherId, Period, vacancies, []);
 0126        if (response.IsSuccess)
 127        {
 0128            MudDialog.Close(DialogResult.Ok(true));
 0129            Snackbar.Add("Turma cadastrada com sucesso!", Severity.Success);
 130        }
 131        else
 132        {
 0133            Snackbar.Add(response.Error.Message, Severity.Error);
 134        }
 0135        _loading = false;
 0136    }
 137
 0138    private void Cancel() => MudDialog.Cancel();
 139}