< Summary - Estud

Information
Class: Estud.Back.Features.Classes.CreateClass.CreateClassService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Classes/CreateClass/CreateClassService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 20
Total branches: 20
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Create()100%2020100%

File(s)

/home/runner/work/syki/syki/Back/Features/Classes/CreateClass/CreateClassService.cs

#LineLine coverage
 1using Estud.Back.Domain.Classes;
 2
 3namespace Estud.Back.Features.Classes.CreateClass;
 4
 245public class CreateClassService(EstudDbContext ctx) : IEstudService
 6{
 7    public async Task<OneOf<CreateClassOut, EstudError>> Create(CreateClassIn data)
 8    {
 249        var institutionId = ctx.RequestUser.InstitutionId;
 10
 2411        if (data.CampusId.HasValue)
 12        {
 613            var campusOk = await ctx.Campi.AnyAsync(x => x.Id == data.CampusId && x.InstitutionId == institutionId);
 814            if (!campusOk) return CampusNotFound.I;
 15        }
 16
 2217        var disciplineOk = await ctx.Disciplines.AnyAsync(x => x.Id == data.DisciplineId && x.InstitutionId == instituti
 2418        if (!disciplineOk) return DisciplineNotFound.I;
 19
 2020        if (data.TeacherId.HasValue)
 21        {
 822            var teacherOk = await ctx.Teachers.AnyAsync(x => x.Id == data.TeacherId && x.InstitutionId == institutionId)
 1023            if (!teacherOk) return TeacherNotFound.I;
 24
 625            if (data.CampusId.HasValue)
 26            {
 427                var teacherCampusOk = await ctx.TeachersCampi.AnyAsync(x => x.TeacherId == data.TeacherId && x.CampusId 
 628                if (!teacherCampusOk) return TeacherNotAssignedToCampus.I;
 29            }
 30
 431            var teacherDisciplineOk = await ctx.TeachersDisciplines.AnyAsync(x => x.TeacherId == data.TeacherId && x.Dis
 632            if (!teacherDisciplineOk) return TeacherNotAssignedToDiscipline.I;
 33        }
 34
 1435        var period = await ctx.AcademicPeriods.FirstOrDefaultAsync(x => x.Id == data.PeriodId && x.InstitutionId == inst
 1636        if (period == null) return AcademicPeriodNotFound.I;
 37
 2638        var schedulesResult = data.Schedules.Select(x => (x.Day, x.Start, x.End)).ToList().ToSchedules();
 1639        if (schedulesResult.IsError) return schedulesResult.Error;
 40
 841        var @class = new Class(institutionId, data.DisciplineId, data.CampusId, data.TeacherId, period, data.Vacancies, 
 842        @class.CreateLessons();
 43
 844        await ctx.SaveChangesAsync(@class);
 45
 846        return new CreateClassOut { Id = @class.Id };
 2447    }
 48}