< Summary - Syki

Information
Class: Syki.Back.Features.Classes.CreateClass.CreateClassService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Classes/CreateClass/CreateClassService.cs
Tag: 97_27801654829
Line coverage
0%
Covered lines: 0
Uncovered lines: 24
Coverable lines: 24
Total lines: 48
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 20
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%
Create()0%420200%

File(s)

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

#LineLine coverage
 1using Syki.Back.Commands.Domain.Classes;
 2
 3namespace Syki.Back.Features.Classes.CreateClass;
 4
 05public class CreateClassService(SykiDbContext ctx) : ISykiService
 6{
 7    public async Task<OneOf<CreateClassOut, SykiError>> Create(CreateClassIn data)
 8    {
 09        var institutionId = ctx.RequestUser.InstitutionId;
 10
 011        if (data.CampusId.HasValue)
 12        {
 013            var campusOk = await ctx.Campi.AnyAsync(x => x.Id == data.CampusId && x.InstitutionId == institutionId);
 014            if (!campusOk) return CampusNotFound.I;
 15        }
 16
 017        var disciplineOk = await ctx.Disciplines.AnyAsync(x => x.Id == data.DisciplineId && x.InstitutionId == instituti
 018        if (!disciplineOk) return DisciplineNotFound.I;
 19
 020        if (data.TeacherId.HasValue)
 21        {
 022            var teacherOk = await ctx.Teachers.AnyAsync(x => x.Id == data.TeacherId && x.InstitutionId == institutionId)
 023            if (!teacherOk) return TeacherNotFound.I;
 24
 025            if (data.CampusId.HasValue)
 26            {
 027                var teacherCampusOk = await ctx.TeachersCampi.AnyAsync(x => x.TeacherId == data.TeacherId && x.CampusId 
 028                if (!teacherCampusOk) return TeacherNotAssignedToCampus.I;
 29            }
 30
 031            var teacherDisciplineOk = await ctx.TeachersDisciplines.AnyAsync(x => x.TeacherId == data.TeacherId && x.Dis
 032            if (!teacherDisciplineOk) return TeacherNotAssignedToDiscipline.I;
 33        }
 34
 035        var period = await ctx.AcademicPeriods.FirstOrDefaultAsync(x => x.Id == data.PeriodId && x.InstitutionId == inst
 036        if (period == null) return AcademicPeriodNotFound.I;
 37
 038        var schedulesResult = data.Schedules.Select(x => (x.Day, x.Start, x.End)).ToList().ToSchedules();
 039        if (schedulesResult.IsError) return schedulesResult.Error;
 40
 041        var @class = new Class(institutionId, data.DisciplineId, data.CampusId, data.TeacherId, period, data.Vacancies, 
 042        @class.CreateLessons();
 43
 044        await ctx.SaveChangesAsync(@class);
 45
 046        return new CreateClassOut { Id = @class.Id };
 047    }
 48}